Boucle dans une combobox

Bonjour à tous.J'ai aujourd'hui encore besoin de votre aide.

En effet, la dernière fois je demandais de l' aide par rapport à une impression en boucle à partir d'une plage de données.

Aujourd'hui, mon code VBA doit me faire une impression en boucle à partir d'une COMBOBOX se trouvant sur mon USERFORM.

A l'initialisation de mon Uf, ma combobox1 est chargée.

Lorsque je clique sur mon commandbutton1, la boucle se déclanche et devait me copier les données de mes feuilles (A,C,D,F) vers ma feuille ("vérificateur").

Malheureusement, il me revient toujours

Erreur d'exécution '91':
Variable objet ou variable de bloc With non définie.

Étant débutant en programmation, J'ai beau fouillé, mais je ne m'en sors pas.

Merci d'avance

Fichier et mon code joint.

13fichier-joint.xlsm (65.53 Ko)

bonjour,

je suppose que la macro n'est pas encore fini ...

Private Sub CommandButton1_Click()
     With ComboBox1
          If .ListIndex = -1 Then Exit Sub   'pas encore choisi
          Set sh = Sheets(CStr(.List(.ListIndex)))     'cette feuille
     End With

     With sh.ListObjects(1)                  'premier tableau de cette feuille
          If Not .DataBodyRange Is Nothing Then
               .DataBodyRange.Rows(1 & ":" & .DataBodyRange.Rows.Count).Delete

               sh.Range("F3").Resize(1, 3).Copy
               Sheets("Verificateur").Range("M3:O3").PasteSpecial xlPasteValues
               sh.Range("B2").Copy
               Sheets("Verificateur").Range("L4").PasteSpecial xlPasteValues
          End If
     End With
End Sub

Bonjour BsAlv.

Le code n'est pas fini. Je vais le terminer par la suite.

je viens de saisir votre proposition. Mais au niveau de la ligne 3,

If.listIndex = -1 Then End sub

il me revient erreur de compilation

Bonjour, erreur de lecture :

If.listIndex = -1 Then End sub

non

If.listIndex = -1 Then Exit sub

oui

Justement, c'est moi qui ai mal saisi.

je termine e je vous reviens en cas de besoin.🙏

"Justement, c'est moi qui ai mal saisi."

C'est bien ce que je sous-entendais

Mes commentaires ne s'affichent plus. Je ne comprends pas.

Merci bien BsAvl. Je vous tire mon chapeau ✅✅✅�

Le code marche comme je le souhaite

merci également à Xmenpl qui pour avoir attiré mon attention sur la syntaxe EXIT SUB sans quoi je serai encore entrain de baver.😂😂😂😂

By, bonne journée à tous.

merci du retour.

Ré,

bonjour BsAlv et Xmenpl, mon code adapté à un souci et j'aimerai que vous m'aidiez encore.

Dans ma combobox1, à l'initiation du USERFORM compte 8 items.

mais la boucle ne s'effectue pas. Elle tourne uniquement sur la 1re valeur de mon combobox1.

Et, elle copies les données de la feuille sur laquelle se répète et les coller sur ma feuille ("vérificateur") en décalant toujours d'une colonne.

voici le code

pour la combobox1

Private Sub UserForm_Initialize()
Dim r1 As range
Dim r2 As range
Dim r3 As range
Dim r4 As range
For Each r1 In ThisWorkbook.Worksheets("ADMIN").range("A1:A8") 
If r1.Value <> "0" Then
ComboBox1.AddItem r1.Value
End If
Next r1
End sub

pour le commandbutton1

Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Dim feuille As range
For i = 0 To ComboBox1.ListCount - 1
 With ComboBox1
       If .ListIndex = -1 Then Exit Sub
Set sh = sheets(CStr(.List(.ListIndex))) 'Cette feuille
End With

With sh
 sh.range("F3").Resize(1, 3).Copy
sheets("Verificateur").range("M3:O3").PasteSpecial xlPasteValues 

sh.range("B2").Copy
sheets("Verificateur").range("J4").PasteSpecial xlPasteValues

With sheets("Verificateur").ListObjects(1)
  If Not .DataBodyRange Is Nothing Then
    .DataBodyRange.Rows(1 & ":" & .DataBodyRange.Rows.Count).Delete
  End If
                                                   If .ListRows.Count = 0 Then                                           .ListRows.Add: lig = 1
Else: .ListRows.Add: lig = .ListRows.Count                               End If
            j = 1
With .DataBodyRange
sh.ListObjects(2).ListColumns(j + 0).DataBodyRange.Copy
    .Item(lig, j + i).PasteSpecial Paste:=xlPasteValues
                sh.ListObjects(2).ListColumns(j + 6).DataBodyRange.Copy
  .Item(lig, j + 1 + i).PasteSpecial Paste:=xlPasteValues
                sh.ListObjects(2).ListColumns(j + 8).DataBodyRange.Copy
  .Item(lig, j + 2 + i).PasteSpecial Paste:=xlPasteValues
                sh.ListObjects(2).ListColumns(j + 9).DataBodyRange.Copy
  .Item(lig, j + 3 + i).PasteSpecial Paste:=xlPasteValues

End With
End With
End With
Next
Application.ScreenUpdating = True
End Sub

Merci

re,

vous voulez un listbox au lieu d'un combobox ? (multiselect est possible)

re

Bonjour BsAlv. C'est vraiment une listbox qu'il me fallait pour réaliser aisément la boucle sur mes différentes feuilles dans ce cas ci. Avec ça, j'ai la latitude de faire le choix de mes feuilles.

J'ai readapté mon code hier nuit et ça marche maintenant.

Grandement merci à vous. 🙏🙏🙏

Rechercher des sujets similaires à "boucle combobox"