Résumé
Cet article nécessite une connaissance de VBA suffisante pour manipuler les userforms et les contrôles associés. La problématique est analogue pour un contrôle sur feuille.
Cet article se propose de résoudre les différents problèmes qu'on peut rencontrer lors de la création de ces contrôles.
Vu la grande diversité des plateformes, je décrirai la procédure à utiliser dans un environnement Windows 10. Je m'efforcerai de donner des indications pour les autres environnements.
Le but étant d'utiliser l'un des deux contrôles :
- MonthView
- Date & Time Picker
Je donnerai des exemples pour le premier, sachant que la procédure sera exactement la même pour le second.
Détails
- Quelles versions peuvent utiliser ces contrôles ?
Il faut deux conditions :
- Toutes les versions 32 bits (impératif) d'Office 2003 et postérieures (les versions précédentes ne sont pas prises en considération ici).
- le système d'exploitation doit être Windows et doit supporter VBA.
Les versions d'Office 64 bits et celles fonctionnant sur MacOS feront l'objet d'une article séparé (en cours de rédaction).
Déterminer si l'on possède les bonnes versions. Etant donné la diversité des versions, il est plus simple d'exécuter deux macros :
Est-ce que ma version de Windows est une version 32 ou 64 bits :
Sub Win32ouWin64() If Len(Environ("ProgramW6432")) > 0 Then MsgBox "Windows 64 bits" Else MsgBox "Windows 32 bits" End If End Sub |
Déterminer si ma version d'Office est une version 32 ou 64 bits :
Sub Office32ou64bits() Dim var As Boolean #If Win64 Then var = True #End If If var = True Then MsgBox "Office 64 bits" Else MsgBox "Office 32 bits" End If End Sub |
Ce qui suit va décrire la création "normale" d'un contrôle MonthView ainsi que les différents problèmes qu'on est susceptible de rencontrer.
Etape 1. Au moment de créer un MonthView, vous cherchez le contrôle dans la Boîte à outils. Si vous le trouvez, cas le plus favorable, vous le dessinez comme n'importe quel contrôle.
Fin de la procédure. Sinon passez à l'étape 2.
Etape 2. le contrôle ne figure pas dans la boîte à outils
Il faut alors faire un clic droit sur la boîte à outils et cliquer sur "Contrôles supplémentaires" et chercher la ligne "Microsoft MonthView". Cocher la case correspondante :
Valider. Reprendre la procédure à l'étape 1.
Etape 3. Le contrôle ne figure pas dans la liste des contrôles disponibles.
On va rechercher dans les références disponibles. Dans la fenêtre VBE, cliquer sur les menus "Outils" puis "Références". Rechercher la référence :
Microsoft Windows Common Controls-2 6.0 (SP6)
Si on trouve cette référence, cocher la case correspondante, valider le choix. Reprendre à l'étape 1. Sinon :
Etape 4. Rechercher le fichier mscomct2.ocx
Dans la fenêtre VBE, cliquer sur les menus "Outils" puis "Références". Cliquer sur le bouton "Parcourir". Selon qu'on a Windows 32 bits, chercher le dossier :
C:\Windows\System32
sinon, chercher :
C:\Windows\SysWOW64 :
Rechercher le fichier mscomct2.ocx et valider. Si le fichier existe, passer à l'étape 5.
Le fichier ne figure pas dans le dossier. Passer à l'étape 6.
Etape 5. Inscription du fichier dans le registre
Note pour ce qui suit, si vous ne travaillez pas avec un compte administrateur, vous allez avoir besoin d'un mot de passe administrateur. Entrez "cmd" (sans les guillemets) dans la boîte d’exécution, faîtes un clic droit sur "cmd" et cliquer sur "Exécuter en tant qu'administrateur".
Entrez la ligne :
C:\windows\system32\regsvr32 C:\windows\syswow64\mscomct2.ocx
(Si la version de Windows est une version 32 bits, remplacer "syswow64" par "system32" dans le chemin du fichier OCX)
et appuyez sur Entrée. Vous devez recevoir un message indiquant la réussite de l'opération :
Reprendre à l'étape 3.
Etape 6. Il faut rechercher le fichier sur internet. A ma connaissance, il n'est plus possible de le télécharger depuis un site officiel Microsoft.
Certains fichiers trouvés ne fonctionnent malheureusement pas. Le fichier que j'utilise à une taille de 663 288 octets. Le mieux est de la demander sur le forum Answers :
https://answers.microsoft.com/fr-fr/msoffice/forum/msoffice_excel
Copier dans le dossier indiqué à l'étape 4 puis reprendre à l'étape 5.
*** FIN DE LA PROCEDURE ***
Note : Si un point est obscur ou inexact, merci de laisser un commentaire.