XL 2010 copier coller colonne paire et impaire dans nouveau fichier

staros

XLDnaute Nouveau
Bonjour a tous
je début dans les macro car je pense que cela pourra m'aider a aller plus vite dans l'organisation de mes données.
Je m'explique, j'ai plusieurs fichiers excel de resultats qui sont organisés en plusieurs colonnes (le nombre de colonne peut varier selon les expériences). Je voudrais reunir tous ces données dans un seul fichier excel. Pour cela je dois copier et coller les colonnes paires (B, D, F etc...) de chaque fichiers dans un nouveau classer excel (feuille1). la meme chose pour les colonnes impaires (C, E, G etc) sur le nouveau classeur (feuille2).
en pratique par exemple pour les colonnes paires:
fichier 1 colonne B, D, F, H, J, L, N, P, R, T V, X, Z. dans nouveau fichier "destination" feuille1 en B, D, F, H, J, L, N, P, R, T V, X, Z
fichier 2 colonne B, D, F, H, J, L, N, P, R, T V, X, Z dans le meme fichier "destination"feuille1 mais en AB, AD, AF, AH, AJ, AL, AN, AP, AR, AT AV, AX, AZ
fichier 3 colonne B, D, F, H, J, L, N, P, R, T V, X, Z dans le meme fichier "destination"feuille1 mais en BB, BD, BF, BH, BJ, BL, BN, BP, BR, BT BV, BX, BZ
etc.
le meme chose pour les colonnes impaires
fichier 1 colonne C, E, G, I, K, M, O Q, S, U, W, Y . dans nouveau fichier "destination" feuille2 en C, E, G, I, K, M, O, Q, S, U, W, Y
fichier 2 colonne C, E, G, I, K, M, O Q, S, U, W, Y dans le meme fichier "destination"feuille2 mais en AC, AE, AG, AI, AK, AM, AO, AQ, AS, AU, AW, AY
fichier 3 colonne C, E, G, I, K, M, O Q, S, U, W, Y dans le meme fichier "destination"feuille2 mais en BC, BE, BG, BI, BK, BM, BO, BQ, BS, BU, BW, BY
ETC

Cela parait simple manuellement mais c'est peut être trop compliquer pour commencer la programmation a cause de la variable "nombre de colonne"
Si quelqu'un pouvait me donner quelques tuyaux pour commencer.
J'ai bien fait utiliser la fonction record mais ca marche que pour le meme nombre de colonne. Dans le cas contraire ca laisse soit au mieux des colonnes vides entre chaque copier coller dans les nouvelles feuilles, soit au pire ca ecrase les colonnes déjà coller précedemment.

Merci d'avance de votre aide
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Staros,
Un essai en PJ. J'ai stocké dans le même fichier pour faire simple puisque le problème est, semble t-il, la gestion des colonnes. Au plus simple ( et moins rapide ) avec :
VB:
Sub Transfert()
For Ligne = 1 To 20
    For Colonne = 2 To 26 Step 2 ' Colonnes PAIRES à partir de B
        Sheets("Feuil1").Cells(Ligne, Colonne + 26) = Cells(Ligne, Colonne)         ' Col B devient Col AB
        Sheets("Feuil1").Cells(Ligne, Colonne + 26 + 26) = Cells(Ligne, Colonne)    ' Col B devient Col BB
    Next Colonne
    For Colonne = 3 To 25 Step 2 ' Colonnes IMPAIRES à partir de C
        Sheets("Feuil2").Cells(Ligne, Colonne + 26) = Cells(Ligne, Colonne)         ' Col B devient Col AB
        Sheets("Feuil2").Cells(Ligne, Colonne + 26 + 26) = Cells(Ligne, Colonne)    ' Col B devient Col BB
    Next Colonne
Next Ligne
End Sub
 

Pièces jointes

  • Staros.xlsm
    26 KB · Affichages: 13

staros

XLDnaute Nouveau
Bonjour Sylvanu et merci de prendre le temps de m'aider.
J'ai teste la macro. L'idée est bonne mais il faut corriger la macro car les colonnes paires se copient deux fois dans les colonnes AB et BB de la feuille1. Elles sont aussi espacées d'une colonne vide. De meme les colonnes impaires se copient deux fois dans la feuilles 2 AB et BB. Mais je pense avoir compris le principe , il faut modifier 'Feuille1" de la deuxieme ligne commande
Sheets("Feuil1").Cells(...26+26).

Par contre je voudrai copier les colonnes paires et impaires idéalement d'un autre fichier.

Comme le nombre de colonne varie, est-il possible de faire une macro sans y mettre un nombre de colonne et ligne définit. Copier toute la colonne enlever le probleme du nombre de ligne. Pour les colonnes, il doit bien y avoir une fonction "detecter" les colonnes avec des chiffres et copier coller les colonnes paires sur une autre feuille. La difficulté est pour le deuxieme copier coller ou la deuxieme serie copier coller doit se mettre à coté de la premier serie. C'est cette variable qui me semble complexe.
Merci d'avance de votre aide
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
fichier 2 colonne B, D, F, H, J, L, N, P, R, T V, X, Z dans le meme fichier "destination"feuille1 mais en AB, AD, AF, AH, AJ, AL, AN, AP, AR, AT AV, AX, AZ
Sur cette phrase j'ai compris que la destination avait des colonnes vides : AB,AD,AF ... sont pleines, les colonnes AC, AE ... sont vides.
Pour compter les lignes et colonnes, plusieurs méthodes peuvent être utilisées, dont cells ci :
VB:
DerCol = Sheets("Feuil1").Cells(1, Columns.Count).End(xlToLeft).Column
DerLin = Sheets("Feuil1").Cells(Rows.Count, 2).End(xlUp).Row
Pour copier coller toute une colonne d'un seul coup, utilisez :
Code:
derlin = Sheets("Feuil1").Cells(Rows.Count, 2).End(xlUp).Row
Sheets("Feuil1").Range("A1:A" & derlin).Copy Destination:=Sheets("Feuil2").Range("A1")
Pour coller de façon consécutives, il faut créer une variable NoColonneCollage que vous incrémentez au fur et à mesure, du genre :
Code:
NoColonneCollage=1
For i= 1 to xxx step 2
  Copier colonne i
  Coller colonne NoColonneCollage
  NoColonneCollage=NoColonneCollage+1
next i
Ce qui décorrèle l'index de copie de l'index de collage.
 

staros

XLDnaute Nouveau
Sur cette phrase j'ai compris que la destination avait des colonnes vides : AB,AD,AF ... sont pleines, les colonnes AC, AE ... sont vides.

oui c'est cela

Pour compter les lignes et colonnes, plusieurs méthodes peuvent être utilisées, dont cells ci :
VB:
DerCol = Sheets("Feuil1").Cells(1, Columns.Count).End(xlToLeft).Column
DerLin = Sheets("Feuil1").Cells(Rows.Count, 2).End(xlUp).Row

J'ai mis ces variables en debut de macro et remplacé les chiffres par ces variables

Pour copier coller toute une colonne d'un seul coup, utilisez :
Code:
derlin = Sheets("Feuil1").Cells(Rows.Count, 2).End(xlUp).Row
Sheets("Feuil1").Range("A1:A" & derlin).Copy Destination:=Sheets("Feuil2").Range("A1")
Pour coller de façon consécutives, il faut créer une variable NoColonneCollage que vous incrémentez au fur et à mesure, du genre :
Code:
NoColonneCollage=1
For i= 1 to xxx step 2
  Copier colonne i
  Coller colonne NoColonneCollage
  NoColonneCollage=NoColonneCollage+1
next i
Ce qui décorrèle l'index de copie de l'index de collage.

La je suis perdu. comment je peux integrer ce dernier dans la macro?
j'ai tenté plusieurs choses mais j'ai l’impression de reculer.

pour être plus claire il faudrait faire:
définir une variable i= nombre de colonne a copier
faire une loop avec une variable nombre de feuille n
loop n=3
copier-coller feuille 1 colonne paire dans nouvelle feuille "paire"
copier-coller feuille 2 colonne paire dans nouvelle feuille "paire" mais décalé de la variable i
copier-coller feuille 3 colonne paire dans nouvelle feuille "paire" mais décalé de la variable ix2


Pour être plus concrets, je joins un fichier excel pour exemple (sachant le nombre de colonne va varier mais sera égale entre les feuilles 1 et 2

Copier feuille1 colonne B, D, F, H, J, L, dans coller dans feuille paire en B, C, D, E, F, G
Copier feuille2 colonne B, D, F, H, J, L,M dans coller feuille paire en H, I ,J, K, L M

Copier feuille1 colonne C, E, G, I, K, M dans coller dans feuille impaire en B, C, D, E, F, G
Copier feuille2 colonne C, E, G, I, K, M dans coller feuille impaire en H, I ,J, K, L M

Merci
 

Pièces jointes

  • Staros.xlsx
    87.6 KB · Affichages: 3

Statistiques des forums

Discussions
313 257
Messages
2 096 609
Membres
106 682
dernier inscrit
faferrand