Déplacement ligne colonne

Bonjour,

J'ai 2 colonnes de données : A et B

Je part de la 1ère ligne, je prend la data col B, et je la met en dessous de la col A. sans effacé la 2éme ligne bien sur, donc il faut faire un saut de ligne avant.

Ensuite je part de la 2ème ligne, je prend la donnée col B, et je la met en dessous de la col A. et ainsi de suite.

En fait je veux que mes data A et B d'une même ligne se retrouve l'un en dessous de l'autre.

1ère ligne A

B

2ème ligne A

B

3ème ligne A

B

comment pourrais je faire cela ?

Merci

Bonjour Quattro, bonjour le forum,

Essai comme ça :

Sub Macro1()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)
Dim TR() As Variant 'déclare la variable TR (Tableau des Résultats)

Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
DL = O.Range("A1").CurrentRegion.Rows.Count
O.Columns(4).ClearContents
'DL = O.Cells(Application.Rows.Count, "A").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne A de l'onglet O
ReDim TR(1 To DL * 2) 'redimensionne le tableau des résultats TR
J = 1 'initialise la variable J
For I = 1 To DL * 2 Step 2 'boucle de 1 a deux fois le nombre de lignes éditées DL par pas de 2
    TR(I) = O.Cells(J, "A").Value 'récupère dans TR(I) la valeur de la cellule ligne J colonne A
    TR(I + 1) = O.Cells(J, "B").Value 'récupère dans TR(I+1) la valeur de la cellule ligne J colonne B
    J = J + 1 'incrémente J
Next I 'prochaine valeur de I (incrément de +2)
O.Range("D1").Resize(DL * 2, 1).Value = Application.Transpose(TR) 'renvoie dans la colonne D le tableau TR transposé

'cette partie ne sert que si les deux colonnes A et B non pas le même nombre de lignes éditées
Application.ScreenUpdating = False 'masque les rafraîchissement d'écran
For I = O.Cells(Application.Rows.Count, "D").End(xlUp).Row To 1 Step -1 'boucle inversée de la dernière ligne éditée de la colonne D à la première
    If O.Cells(I, "D").Value = "" Then O.Cells(I, "D").Delete xlShiftUp 'si la cellule ligne I colonne D est vide, supprime la cellule (en remontant vers le haut)
Next I 'prochaine ligne (en remontant)
Application.ScreenUpdating = False 'affiche les rafraîchissement d'écran
End Sub

Merci

cela fonctionne bien.

Si maintenant je veux rajouter 2 lignes vierges en dessous de la cellule que je décale en dessous de l'autre.

C'est à dire A ensuite B et C(vierge) et D(vierge).

Merci

Re,

Ce nouveau code ne fonctionnera que si les colonnes A et B contiennent le même nombre de valeurs :

Sub Macro2()
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim I As Integer 'déclare la variable I (Incrément)
Dim J As Integer 'déclare la variable J (incrément)
Dim TR() As Variant 'déclare la variable TR (Tableau des Résultats)

Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
DL = O.Range("A1").CurrentRegion.Rows.Count
O.Columns(4).ClearContents
ReDim TR(1 To DL * 4) 'redimensionne le tableau des résultats TR
J = 1 'initialise la variable J
For I = 1 To DL * 4 Step 4 'boucle de 1 a deux fois le nombre de lignes éditées DL par pas de 2
    TR(I) = O.Cells(J, "A").Value 'récupère dans TR(I) la valeur de la cellule ligne J colonne A
    TR(I + 1) = O.Cells(J, "B").Value 'récupère dans TR(I+1) la valeur de la cellule ligne J colonne B
    TR(I + 2) = ""
    TR(I + 3) = ""
    J = J + 1 'incrémente J
Next I 'prochaine valeur de I (incrément de +2)
O.Range("D1").Resize(DL * 4, 1).Value = Application.Transpose(TR) 'renvoie dans la colonne D le tableau TR transposé
Application.ScreenUpdating = False 'affiche les rafraîchissement d'écran
End Sub

Merci bien

Je vais essayer de comprendre tout ça.

Rechercher des sujets similaires à "deplacement ligne colonne"