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.

11 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      je n'avais pas vu ton changement de sujet (pas très sympa comme procédé)
      0
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      j'ai rien dit, excuse moi (pas moyen de virer ou d"annuler mon commentaire)
      0
    3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      je peux le faire pour toi si tu le veux.
      0
    4. EmilieM
       
      Mais non, c'est pas grave....
      Merci pour vos réponses.
      0
  2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    Bonjour,
    Les colonnes L et M ont elles le même nombre de lignes?
    0
  3. EmilieM
     
    Oui, les colonnes M et L ont le méme nombre de ligne.
    0
  4. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. EmilieM
     
    Quand tu me dis de mettre un nom de champ en N1 tu veux dire quoi?
    0
  7. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  8. 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
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
    2. EmilieM
       
      Ok, merci quand méme.
      0
  9. 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
  10. 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
  11. EmilieM
     
    Bon toujours beug, ne pas en tenir compte...
    0
  12. 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