Copier une collone a la suite d'une autre

Bonjour à toutes et à tous,

Je viens vers vous car j'aimerai automatiser certaine manipulation que je fais tous les mois. J'aurais donc besoin de VBA mais n'y connais rien et même avec le générateur j'enchaine les échecs !

En effet, mon problème est surement simple, j'ai deux feuilles différentes, feuil1 et feuil2 dans lesquelles j'ai des tableaux différents et j'aimerai les compiler sur une feuil3.

En gros j'aimerai que la colonne A feuil 1 se copie colonne A feuil3. Puis que Colonne A de la feuil2 se copie automatiquequement à la suite dans la colonneA feuil 3.

Ce qui me pose problème c'est que je n'ai pas toujours le même nombre de ligne a chaque fois. Aussi il arrive que j'ai des cellules vides en colonne A et j'ai besoin qu'elles soient aussi ajoutées.

Les données peuvent s'incrémenter par le haut du tableau ca ne me dérange pas.

Et je dois faire les mêmes manip après, mais je pense qu'en ayant compriis pour la collone A je pourrait refaire un code pour les colonnes suivantes.

J'espère que vous avez pu me comprendre ^^

Je ne peux malheureusement pas mettre de fichier.

J'ai un excel 2010 en anglais.

Merci à vous pour le temps que vous me consacrerez et bonne fin de journée

Bonjour Summer, bonjour le forum,

Peut-être comme ça :

Sub Macro1()
Dim OS(1 To 3) As Worksheet 'déclare la variable OS (OngletS)
Dim I As Byte 'déclare la variable I (Incrément)
Dim PL As Range 'déclare la variable PL (PLage)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

Set OS(1) = Sheets("Feuil1") 'définit l'onglet OS(1)
Set OS(2) = Sheets("Feuil2") 'définit l'onglet OS(2)
Set OS(3) = Sheets("Feuil3") 'définit l'onglet OS(3)
For I = 1 To 2 'boucle sur les deux premiers onglets
    Set PL = OS(I).Range("A1").CurrentRegion 'définit la plage PL
    'définit la cellule de destination DEST (A1 si A1 est vide, sinon la première cellule vide de la colonne A de l'onglet OS(3)
    Set DEST = IIf(OS(3).Range("A1").Value = "", OS(3).Range("A1"), OS(3).Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0))
    PL.Copy DEST 'copie la plage PL et la colle dans DEST
    Set PL = Nothing 'vide la plage PL
Next I 'prochain onglet de la boucle
End Sub

Bonjour,

Je te remercie pour cette réponse rapide, mais j'avoue ne pas comprendre grand chose au code. La cela fait les 2 premier onglet que pour la colonne A ?

Car j'aimerai à terme ne plus avoir a demander et déranger X personnes pour mes travaux ^^

Encore merci beaucoup !

J'ai reussi a faire un fichier simplifier en espérant que cela vous permettra de comprendre mon soucis ^^

Merci d'avance :*

Re,

D'abord pourquoi déposer ton fichier dans un serveur alors que le site permet cela ?!... Ensuite, quand tu fournis un fichier exemple, fais au moins l'effort de remplir toutes les colonnes...

Ce mélange de colonnes entre tous les onglets est assez confus. J'espère que le code ci-dessous correspond bien à ta demande :

Sub Macro1()
Dim OS(1 To 3) As Worksheet 'déclare la variable OS (OngletS)
Dim I As Integer 'déclare la variable I (Incrément)
Dim K As Integer 'déclare la variable I (Incrément)
Dim TV As Variant 'déclare la variable TV (Tableau des Valeurs)
Dim TL() As Variant 'déclare la variable TL (Tableau des lignes)

Set OS(1) = Sheets("Sheet1") 'définit l'onglet OS(1)
Set OS(2) = Sheets("Sheet2") 'définit l'onglet OS(2)
Set OS(3) = Sheets("Sheet3") 'définit l'onglet OS(3)
OS(3).Range("A1").CurrentRegion.Offset(1, 0).ClearContents 'efface d'éventuelles anciennes données de l'onglet OS(3)
TV = OS(1).Range("A1").CurrentRegion 'définit le tableau des valeurs TV de l'onglet OS(1)
K = 1 'initialise K
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
    ReDim Preserve TL(1 To 5, 1 To K) 'redimensionne le tableau des lignes TL (5 lignes, K colonnes)
    TL(1, K) = TV(I, 1) 'récupère dans la ligne 1 de TL la donnée en colonne 1 de TV
    TL(2, K) = TV(I, 2) 'récupère dans la ligne 2 de TL la donnée en colonne 2 de TV
    TL(3, K) = TV(I, 6) 'récupère dans la ligne 3 de TL la donnée en colonne 6 de TV
    TL(4, K) = TV(I, 4) 'récupère dans la ligne 4 de TL la donnée en colonne 4 de TV
    TL(5, K) = TV(I, 3) 'récupère dans la ligne 5 de TL la donnée en colonne 3 de TV
    K = K + 1 'incrémente K (ajoute une colonne au tableau des lignes TL)
Next I 'prochaine ligne de la boucle
TV = OS(2).Range("A1").CurrentRegion 'redéfinit le tableau des valeurs TV de l'onglet OS(2)
For I = 2 To UBound(TV, 1) 'boucle sur toutes les lignes I du tableau des valeurs TV (en partant de la seconde)
    ReDim Preserve TL(1 To 5, 1 To K) 'redimensionne le tableau des lignes TL (5 lignes, K colonnes)
    TL(1, K) = TV(I, 1) 'récupère dans la ligne 1 de TL la donnée en colonne 1 de TV
    TL(2, K) = TV(I, 2) 'récupère dans la ligne 2 de TL la donnée en colonne 2 de TV
    TL(3, K) = TV(I, 6) 'récupère dans la ligne 3 de TL la donnée en colonne 6 de TV
    TL(4, K) = TV(I, 7) 'récupère dans la ligne 4 de TL la donnée en colonne 7 de TV
    TL(5, K) = TV(I, 8) 'récupère dans la ligne 5 de TL la donnée en colonne 8 de TV
    K = K + 1 'incrémente K (ajoute une colonne au tableau des lignes TL)
Next I 'prochaine ligne de la boucle
'renvoie dans la cellule A2 redimensionnée de l'onglet OS(3) le tableau TL Transposé
OS(3).Range("A2").Resize(UBound(TL, 2), UBound(TL, 1)).Value = Application.Transpose(TL)
End Sub

Bonjour ,

Excusez moi je n'avais pas vu pour le postage de fichier.

D'accord, je le ferrais pour une prochaine fois, promis !

Merci beaucoup pour votre code mais lorsque je le met une erreur code 9 apparait pour :

Set OS(1) = Sheets("Sheet1") 'définit l'onglet OS(1)

Mais deja un grand merci pour le temps passé

Re,

J'ai repris le nom de l'onglet de ton exemple. Il faut que tu adaptes ou que tu sois plus malin quand tu fournis un fichier exemple, qu'il corresponde à la réalité !...

Set OS(1) = Sheets("Nom_du_premier_onglet") 'définit l'onglet OS(1)
Set OS(2) = Sheets("Nom_du_deuxième_onglet") 'définit l'onglet OS(2)
Set OS(3) = Sheets("Nom_du_troisième_onglet") 'définit l'onglet OS(3)

C'est bien la peine que je commente mes codes tiens !...

Rechercher des sujets similaires à "copier collone suite"