Boucle sur ComboBox dans Word

  • Initiateur de la discussion Initiateur de la discussion Skud
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

Skud

Guest
Bonjour tout le monde,

Voilà mon problème : J'ai un document word avec une quinzaine de combobox qui ont toutes la même source, mais je suis suceptible d'en ajouter plusieurs autres.
Je souhaite donc faire une boucle sur toutes les ComboBox du document. Dans un userform cela ne me pose pas de problème mais directement dans le document...

Voilà mon code pour le moment :

Code:
Private Sub Document_Open()

On Error Resume Next
Dim i As Byte

For i = 1 To 50

    With Controls("ComboBox" & i)
        .AddItem "1. aaaaaaaaa"
        .AddItem "2. bbbbbbbb"
        .AddItem "3. cccccccc"
        .AddItem "4. ddddddddd"
        .AddItem "5. eeeeeeeee"
        .AddItem "6. fffffffff"
        .AddItem "7. gggggggggg"
        .AddItem "8. hhhhhhhhh"
        .AddItem "9. iiiiiiiiiiii"
        .AddItem "10. jjjjjjjjjjjjjjjj"
        .AddItem "11. kkkkkkkkkkk"
        .AddItem "12. lllllllllllllllll"
        .AddItem "13. mmmmmmmmmmmmmmmmmm"
        .AddItem "14. nnnnnnnnnnnnnn"
        .AddItem "15. oooooooo"
        .AddItem "16. pppppppppp"
    End With
        
Next i

End Sub

Mais lorsque je lance la macro 'Controls' n'est pas reconnu comme dans un userform...

Merci d'avance pour votre aide.
 
Re : Boucle sur ComboBox dans Word

Bonjour,

Voici un exemple avec le code ci-dessous à copier dans un module standard.

Code:
Const COMBOBOX_TYPE As String = "Forms.ComboBox.1"

Sub ConstruireComboBox()
Dim Couleur
Dim i&
Dim j&
Dim S As InlineShape
Dim CB    'As MSForms.ComboBox
Couleur = Array("", vbBlue, vbRed, vbYellow, vbMagenta)
j& = 1
Application.ScreenUpdating = False
For i& = 1 To 7   'pour construire 7 ComboBox
  With Selection
    .WholeStory
    .MoveDown
    .TypeParagraph
    .InsertParagraph
  End With
  Set S = Selection.InlineShapes.AddOLEControl(ClassType:=COMBOBOX_TYPE)
  Set CB = S.OLEFormat.Object
  If j& > 4 Then j& = 1
  CB.BackColor = Couleur(j&)
  j& = j& + 1
Next i&
Application.ScreenUpdating = True
End Sub

Sub AddItemComboBox()
Dim S As InlineShape
Dim CB As MSForms.ComboBox
For Each S In ActiveDocument.InlineShapes
  On Error Resume Next
  If S.OLEFormat.ClassType = COMBOBOX_TYPE Then
    If Err = 0 Then
      Set CB = S.OLEFormat.Object
      With CB
        .AddItem "1. aaaaaaaaa"
        .AddItem "2. bbbbbbbb"
        .AddItem "3. cccccccc"
        .AddItem "4. ddddddddd"
        .AddItem "5. eeeeeeeee"
        .AddItem "6. fffffffff"
        .AddItem "7. gggggggggg"
        .AddItem "8. hhhhhhhhh"
        .AddItem "9. iiiiiiiiiiii"
        .AddItem "10. jjjjjjjjjjjjjjjj"
        .AddItem "11. kkkkkkkkkkk"
        .AddItem "12. lllllllllllllllll"
        .AddItem "13. mmmmmmmmmmmmmmmmmm"
        .AddItem "14. nnnnnnnnnnnnnn"
        .AddItem "15. oooooooo"
        .AddItem "16. pppppppppp"
      End With
    Else
      Err.Clear
    End If
End If
Next S
End Sub

Faites un test sur un nouveau document.
1) lancez la macro ConstruireComboBox qui, comme son nom l’indique, va construire plusieurs ComboBox (voir la ligne For i& = 1 To 7 'pour construire 7 ComboBox).
2) lancez la macro AddItemComboBox qui va y ajouter les différents items.

Cordialement.

PMO
Patrick Morange
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Retour