Copie tableau selon condition

Bonsoir à tous

N’étant pas expert en Excel, J’ai réussi à faire un tableau pour qui copie seul les lignes qui ont un chiffre en colonne E de la feuille référence à la feuille à commander (avec l’aide du forum)

Cela fonctionne un peu prêt bien car quand je clique sur le bouton commande cela copie bien le tableau de A à E mais que les données pas la mise en forme des cellules et colonnes

Et aussi je n’arrive pas à faire copier les tableaux de M à Q, de R à V et de W à AA

J’ai fait des essais en modifiant la macro mais je n’y arrive pas

Merci pour votre aide

Je vous joins mon fichier
commande.xlsm (33,7 Ko)

la macro « extraire »
commande.xlsm (41,4 Ko)

Bonjour Cow18
super merci pour ton aide c’est parfait

1 « J'aime »

bonjour Cow18
est que tu peut expliquer comment tu as fait car quand je copie la macro en module 3 pour mettre sur une autre feuille (tout en changeant le nom de la feuille) cela ne marche pas
merci

j’ai modifié pour rendre les choses plus facile. Maintenant vous voyez 3 lignes avec des « * », dans ces lignes, il y a quelque chose à adapter (nom de la feuille ou numéro d’une ligne).
Je suppose que la 4ième colonne est « nombre de boîtes… » !!!

Sub Extraire()
     Dim c     As Range, sh, FA, bDrapeau
     Dim MaLigne: MaLigne = 6                '5ième ligne est la ligne avec les "références"  ************************

     Set sh = Sheets("a commander")          'feuille pour commander **************************************
     sh.UsedRange.Clear                      'vider

     With Sheets("référence")                'votre feuille des tableaux ***************************************
          If .AutoFilterMode Then .AutoFilterMode = False
          If .FilterMode Then .ShowAllData   'supprimer l'autofilter

          Set c = .Rows(MaLigne).Find("Référence")     'ligne 5 dans Rérérence contient plusieurs (ici 4) cellules "Référence", cherchez la première
          If Not c Is Nothing Then           'trouvé
               FA = c.Address                'adresse de la cellule
               Do
                    With c.Resize(100, 4)    'prenez une plage de 100 lignes x 4 colonnes
                         .AutoFilter 4, ">" & 0     'filtrer les valeurs >0 dans la colonne "nombre de boites à commander"
                         .Offset(-(c.Address <> FA)).Copy sh.Range("A" & Rows.Count).End(xlUp).Offset(1)     'copier les lignes visibles
                         .AutoFilter         'supprimer l'autofilter
                    End With

                    Set c = .Rows(MaLigne).FindNext(after:=c)     'cherchez la "référence" suivante
                    bDrapeau = Not c Is Nothing     'trouvé
                    If bDrapeau Then bDrapeau = c.Address <> FA     'ce n'est pas la première
               Loop While bDrapeau
          End If
     End With

     With sh                                 'feuille "a commander"
          .Cells.WrapText = False            'no saut de lignes
          .Cells.EntireColumn.AutoFit        'ajuster largeur colonnes
          Application.Goto .Range("a1")      'activer cette cellule
     End With
End Sub

commande.xlsm (44,7 Ko)
s’il y a encore des problèmes, postez un fichier

nickel merci
mon erreur était de changer Référence (dans macro avant ligne 5)
Set c = .Rows(MaLigne).Find(« Référence »)

merci pour ton aide

1 « J'aime »

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.