Macro - Recopier plusieurs colonnes vers le bas

Patchi06

XLDnaute Nouveau
Bonjour.

Je dois recopier vers le bas des formules enregistrées sur la ligne 2 tant qu'il y a des valeurs en colonne J. Jusqu'à présent, j'avais fait simple :

Range("C2").AutoFill Range("C2:C" & Range("J65536").End(xlUp).Row)
Range("E2").AutoFill Range("E2:E" & Range("J65536").End(xlUp).Row)
Range("F2").AutoFill Range("F2:F" & Range("J65536").End(xlUp).Row)
Range("G2").AutoFill Range("G2:G" & Range("J65536").End(xlUp).Row)

Code très simpliste qui a l'avantage d'être clair. Aujourd'hui, le tableau ce complexifie et j'ai 42 colonnes -certaines contigues et d'autres pas- à recopier (toutes basées sur la même colonne "J").
Ma question, aux experts que vous êtes, "Quelle est [LA] formule adéquate ?" car recopier 42 fois la même chose me parait incongru.

Merci de votre aide.
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Macro - Recopier plusieurs colonnes vers le bas

Bonjour Patchi, bonjour le forum,

La macro ci-dessous, à adapter à ton cas au niveau de la plage pl, devrait fonctionner. Comme tu n'indiquais pas les colonnes utilisées, la plage pl de mon exemple fait référence aux colonnes C, E à G, I, K à L. Il te faudra la mettre à jour pour tes 42 colonnes...
Code:
Sub Macro1()
Dim pl As Range 'déclare la variable pl (PLage)
Dim dl As Long 'déclare la variable dl (Dernière Ligne)
Dim cel As Range 'déclare la variable cel (CELlule)

Set pl = Application.Union(Range("C2"), Range("E2:G2"), Range("I2"), Range("K2:L2")) 'définit la plage pl (à adapter à ton cas)
dl = Cells(Application.Rows.Count, 10).End(xlUp).Row 'définit la dernière ligne de la colonne 10 (J)
For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl
    cel.AutoFill Range(cel, Cells(dl, cel.Column)) 'recopie vers le bas
Next cel 'prochaine cellule de la plage
End Sub
 

Discussions similaires

Réponses
7
Affichages
384
Réponses
5
Affichages
538

Statistiques des forums

Discussions
312 845
Messages
2 092 764
Membres
105 529
dernier inscrit
StarExcel