macro copiant des colonnes

Darnel

XLDnaute Impliqué
Bonjour à vous tous

Voilà, grâce à l'aide de PierreJean, j'ai cette macro qui me permet de ne copier que certaines colonnes d'une feuille à une autre. Problème, elle fonctionne cellules par cellules, ce qui prend un temps monumentalement phénoménal
Je souhaiterais donc apporter une petite modification à celle ci pour que la macro ne fasse que la chose suivante :
si le titre de la colonne x feuille 1 est le même que le titre de la colonne y feuil2 , alors je colle l'integralite de la colonne x feuil 1 dans la colonne y feuil 2 etc jusqu'a ce que toutes les colonnes aient été vues

Code:
Sub extractionN()
Dim listitre As New Collection
Dim numcol As New Collection
'on remplit la liste des titres "a chercher" dans la feuille extraction
With Sheets("extractionN")
' de la colonne 1 (A) à la derniere colonne remplie
 For n = 1 To .Range("IV2").End(xlToLeft).Column
 'mettre dans la liste le titre pris dans la ligne 2
   listitre.Add .Cells(2, n).Value
 Next n
End With
' on remplit la liste des numeros de colonne correspondant dans la feuille données
With Sheets("donnéesN")
' pour chaque titre de la lise
For i = 1 To listitre.Count
'on balaie la ligne 2 de la feuille données de la colonne 1 a la derniere remplie
 For n = 1 To .Range("IV2").End(xlToLeft).Column
 ' si le titre de cette colonne est celui de la liste des titres
  If .Cells(2, n) = listitre(i) Then
  'on met son N° de colonne en memoire dans la collection numcol
   numcol.Add n
  End If
 Next n
Next i
End With
 
[COLOR=red]JUSQUE LA TOUT VA BIEN, [/COLOR]
[COLOR=red]C'est au niveau du transfert que je souhaiterais que la macro se contente simplement de copier toute la colonne.[/COLOR]
[COLOR=red]Problème, je ne suis pas doué dans les boucles et autres choses comme ça, donc je veu bien un petit coup de main.[/COLOR]

'transfert
' dans la variable ligne le N° de ligne ou debutera la recopie
ligne = 3
' dans la variable colonne le N° colonne ou debutera la recopie
colonne = 1
With Sheets("donnéesN")
'pour toutes les lignes de la feuille données
For n = 1 To .Range("A65536").End(xlUp).Row
' pour chaque colonne precedemment reperée
  For m = 1 To numcol.Count
 'on ecrit
    Sheets("extractionN").Cells(ligne, colonne) = .Cells(ligne, numcol(m))
  'on passe a la colonne suivante
    colonne = colonne + 1
  Next m
 'toutes les colonnes ont été servies on réindexe la variable colonne
colonne = 1
'et on passe a la ligne suivante
ligne = ligne + 1
Next n
End With
End Sub

merci de votre aide
 

Discussions similaires

Réponses
5
Affichages
244

Statistiques des forums

Discussions
312 489
Messages
2 088 854
Membres
103 975
dernier inscrit
denry