Bonjour,
Je suis actuellement en train de créer un document Word avec des objets issus de la boite à outils Contrôles.
J'ai en particulier des objets de type "Combobox" que je positionne directement dans mon document Word.
J'ai nommé ces contrôles en passanr la fenêtre "Propriétés" avec des noms bien précis.
J'accède en programmation VBA à ces contrôles directement par leur nom, par exemple pour mettre en place la liste des valeurs, j'utilise la méthode "Additem" sur l'objet dans l'événement "Document_Open".
Private Sub Document_Open()
cboType.additem "Régression"
cboType.additem "Evolution"
cboStatut.additem "En cours"
cboStatut.additem "Annulé"
cboStatut.additem "Corrigé"
cboStatut.additem "Sans Objet"
End Sub
Dans cet exemple, mes objets "Combobox" se nomment "cboType" et "cboStatut".
Ceci fonctionne sans problème car je connais le nom de mes objetx "combobox" mais voilà ! ce serait trop simple...
Voici mon problème :
J'ai créér un bouton de commande accessible par l'utilisateur pour lui donner la possibilité de copier un tableau vers un nouveau tableau à la fin du document. Ce nouveau tableau est strictement identique dans la forme et dans son contenu, il contient donc les mêmes cellules, les mêmes couleurs, etc... et dans ce tableau sont situés des objets de type "combobox".
Word réagit très bien et la copie des objets "combobox" s'effectue également mais voici le problème : Le nom des objets "combobox" est changé pendant la copie car il n'est pas possible d'avoir deux objets de même nom dans un même document (c'est normal).
Word ne transmet pas le contenu des listes internes à chaque "combobox" et le nom des "combobox" change car Word ajoute à la fin du nom un chiffre. Par exemple lors de la copie l'objet "cboStatut" est copié en "cboStatut1" puis en "cboStatut2" si j'effectue une autre copie.
Etant donné que :
- Je connais les noms par défaut de mes premiers objets dans le premier tableau ("cboType", "cboStatut", ...)
- Je sais que les objets sont copiés en ajoutant un chiffre à la fin des noms
- Je ne sais pas combien de fois ces objets ont été copiés
Comment modifier l'événement "Document_Open" pour accéder à l'ensemble de tous mes combobox pour initialiser leur liste de choix comme la combobox originale.
Je pense faire une boucle pour parcourir l'ensemble de tous les objets "combobox" du document, tester le nom des objets pour savoir quel type d'initialisation faire.
Private Sub Document_Open()
for i=1 to (nombres d'objets)
if left$(objet(i).name,7)="cboType" then
objet(i).additem "Régression"
objet(i).additem "Evolution"
end if
if left$(objet(i).name,9)="cboStatut" then
cboStatut.additem "En cours"
cboStatut.additem "Annulé"
cboStatut.additem "Corrigé"
cboStatut.additem "Sans Objet"
end if
next i
End Sub
Il me reste à savoir :
- Comment parcourir ces objets
- Comment tester leur nom
Merci
Configuration: Windows 2000
Internet Explorer 6.0