Salut,
Voici une proposition:
J'ai mis des explications sur les lignes du code, j'ai appelé les fichiers 'FichierA' et 'FichierB', je n'ai pas renommé les feuilles (! je suis en version GB).
J'ai considéré que l'entrée du mois à copier se faisait sur la feuil1 du fichierA dans la cellule O1 (A adapter selon tes besoins)
Autre point important, j'ai considéré que tu ouvrais le fichierB manuellement avant le lancement de la macro.
Je me suis permis d'ajouter le fait que la macro passait en rouge les lignes copiées.
Ce n'est certainement pas le code le plus 'efficace' mais il a le mérite, je pense, d'être compréhensible, le but étant que tu apprennes
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| Sub CopieDonnéesSelonMois()
'
Dim MyMonth As Integer
Dim NbRows As Integer
Dim NbCol As Integer
Dim i As Integer
MyMonth = Sheets("sheet1").Range("o1") 'prend la valeur renseignée dans la celulle o1 du fichierA
NbRows = Application.Subtotal(3, Sheets("sheet1").Range("b:b")) 'compte le nombre de ligne
For i = 2 To NbRows 'Boucle qui parcours les lignes de la colonne mois
If Sheets("sheet1").Cells(i, 2) = MyMonth Then 'vérifie si le mois de la ligne=choix
NbCol = Application.Subtotal(3, Sheets("sheet1").Range(i & ":" & i))
Sheets("sheet1").Range(Cells(i, 3), Cells(i, NbCol)).Copy 'copie la ligne en question, uniquement de la colonne C à la dernière colonne remplie.
Windows("FichierB.xls").Activate 'passe sur le fichierB
Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues 'Colle sur première ligne vide
Windows("fichierA.xls").Activate 'repasse sur fichierA
Rows(i).Font.ColorIndex = 3 'applique la couleur rouge sur la ligne copiée
End If
Next i
End Sub |
Bonne continuation
Partager