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
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