Excel - Copier des lignes 2 à 2 dans colonne

EmilieM -  
 EmilieM -
Bonjour,

Je rencontre un petit probléme. Je dispose de données dans 2 colonnes distinstes et je voudrais copier l'ensemble de ces données dans une méme colonne mais en intercallant les valeurs des 2 colonnes d'origines.
Ci dessous un exemple de la macro que j'ai pu réaliser en enregistrement directement le mode opératoire:

Range("L2").Select
Selection.Copy
Range("N2").Select
ActiveSheet.Paste Link:=True
Range("M2").Select
Application.CutCopyMode = False
Selection.Copy
Range("N3").Select
ActiveSheet.Paste Link:=True
Range("L3").Select
Application.CutCopyMode = False
Selection.Copy
Range("N4").Select
ActiveSheet.Paste Link:=True
Range("M3").Select
Application.CutCopyMode = False
Selection.Copy
Range("N5").Select
ActiveSheet.Paste Link:=True
Range("L4").Select
Application.CutCopyMode = False
Selection.Copy
Range("N6").Select
ActiveSheet.Paste Link:=True
Range("M4").Select
Application.CutCopyMode = False
Selection.Copy
Range("N7").Select
ActiveSheet.Paste Link:=True
Range("L5").Select
Application.CutCopyMode = False
Selection.Copy
Range("N8").Select
ActiveSheet.Paste Link:=True
Range("M5").Select
Application.CutCopyMode = False
Selection.Copy
Range("N9").Select
ActiveSheet.Paste Link:=True
Range("L6").Select
Application.CutCopyMode = False
Selection.Copy
Range("N10").Select
ActiveSheet.Paste Link:=True
Range("M6").Select
Application.CutCopyMode = False
Selection.Copy
Range("N11").Select
ActiveSheet.Paste Link:=True
Range("L7").Select
Application.CutCopyMode = False
Selection.Copy

Ceci étant à réaliser pour un nombre infini de valeurs.

Est ce que quelqu'un aurait une petite idée de la macro à réaliser?

Emilie.

A voir également:

11 réponses

michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 315
 
et voilà une macro
Option Base 1 
Sub unsurdeux() 
Dim tablo 
Dim derlig As Long, cptr as long, cptr_tablo as long

derlig = Range("L65536").End(xlUp).Row 

ReDim tablo(derlig * 2 - 2) 
cptr_tablo = 1 
For cptr = 2 To derlig 
    tablo(cptr_tablo) = Cells(cptr, 12) 
    cptr_tablo = cptr_tablo + 1 
    tablo(cptr_tablo) = Cells(cptr, 13) 
    cptr_tablo = cptr_tablo + 1 
Next 
Application.ScreenUpdating = False 
Range("N2").Resize(UBound(tablo), 1) = Application.Transpose(tablo) 
End Sub 

:-x
1
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 315
 
je n'avais pas vu ton changement de sujet (pas très sympa comme procédé)
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 315
 
j'ai rien dit, excuse moi (pas moyen de virer ou d"annuler mon commentaire)
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
je peux le faire pour toi si tu le veux.
0
EmilieM
 
Mais non, c'est pas grave....
Merci pour vos réponses.
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Bonjour,
Les colonnes L et M ont elles le même nombre de lignes?
0
EmilieM
 
Oui, les colonnes M et L ont le méme nombre de ligne.
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Alors :
Prends soin de mettre un nom de champ en N1 et utilise ce code :
Sub copie_L_et_M_en_N()
Dim derlig, i As Integer
derlig = Range("L65536").End(xlUp).Row
For i = 2 To derlig
Cells(i, 12).Copy Range("N65536").End(xlUp).Offset(1, 0)
Cells(i, 13).Copy Range("N65536").End(xlUp).Offset(1, 0)
Next
End Sub
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
EmilieM
 
Quand tu me dis de mettre un nom de champ en N1 tu veux dire quoi?
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 315
 
nombre infini? 500,1000,100000,100000000000.....?

en attendant, par formule en N2
heu... un bug, je reviens

et tu double-clique sur la poignée d'implémentation (carré noir en bas à droite de N2)

mais si tu tiens à une macro, y'en a pour 5 minutes.... donc, tu dis
:-x
0
EmilieM
 
En appliquant la formule DECALER que tu viens de me donner cela ne fonctionne pas car il ne m'affiche que les données de la colonne L or dans ma colonne N je souhaiterai les données de la colonne L et M .

Peut étre qu'un macro serait plus judicieuse. Je sais pas trop car je n'y connais pas grand chose en macro.....

Nombre infini : 20 000 valeurs maximum dans les colonnes L et M.
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Ah oui 20 000 valeurs quand même...
Mon petit code risque d'être long...
Par nom de champ en N1 je voulais juste te dire de ne pas laisser N1 vide... Mets un titre quoi.
Pour la macro, attendons plutôt la solution de michel_m (que je salue au passage) qui te proposera de toutes manières quelque chose de plus rapide que ma première option.
0
EmilieM
 
Ok, merci quand méme.
0
EmilieM
 
Voici un autre exemple avec les données en colonne A et B et en colonne C les cellules copier
A B C
Segments Prof Macro
1 3 1
3 3 3
2 4 3
4 5 3
6 6 2
5 8 4
4
5
6
6
5
8

Et voici la macro enregistrée :
Range("A2").Select
Selection.Copy
Range("C2").Select
ActiveSheet.Paste Link:=True
Range("B2").Select
Application.CutCopyMode = False
Selection.Copy
Range("C3").Select
ActiveSheet.Paste Link:=True
Range("A3").Select
Application.CutCopyMode = False
Selection.Copy
Range("C4").Select
ActiveSheet.Paste Link:=True
Range("B3").Select
Application.CutCopyMode = False
Selection.Copy
Range("C5").Select
ActiveSheet.Paste Link:=True
Range("A4").Select
Application.CutCopyMode = False
Selection.Copy
Range("C6").Select
ActiveSheet.Paste Link:=True
Range("B4").Select
Application.CutCopyMode = False
Selection.Copy
Range("C7").Select
ActiveSheet.Paste Link:=True
Range("A5").Select
Application.CutCopyMode = False
Selection.Copy
Range("C8").Select
ActiveSheet.Paste Link:=True
Range("B5").Select
Application.CutCopyMode = False
Selection.Copy
Range("C9").Select
ActiveSheet.Paste Link:=True
Range("A6").Select
Application.CutCopyMode = False
Selection.Copy
Range("C10").Select
ActiveSheet.Paste Link:=True
Range("B6").Select
Application.CutCopyMode = False
Selection.Copy
Range("C11").Select
ActiveSheet.Paste Link:=True
Range("A7").Select
Application.CutCopyMode = False
Selection.Copy
Range("C12").Select
ActiveSheet.Paste Link:=True
Range("B7").Select
Application.CutCopyMode = False
Selection.Copy
Range("C13").Select
ActiveSheet.Paste Link:=True
Range("C25").Select

Sachant qu'il y a bien evidemment X valeurs dans A et B comme dans L et M....

Emilie.
0
EmilieM
 
Ah, non petit beug l'exempl est le suivant :
Segments Prof Macro
1 3 1
3 3 3
2 4 3
4 5 3
6 6 2
5 8 4
4
5
6
6
5
8
0
EmilieM
 
Bon toujours beug, ne pas en tenir compte...
0
EmilieM
 
Non mais c'était juste pour donner un autre exemple avec moins de valeur pour que ma demande soit plus compréhensible.
Mais la Macro fonctionne trés bien donc l'exemple supplémentaire est inutile.
Merci pour ton aide et bonne fin de journée.

Emilie.
0