Formule recopie cellules excel

chenneq2 Messages postés 4 Statut Membre -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
J'ai plusieurs colonnes dans excel qui contiennent chacune un nombre différent de valeurs (cellules contenant un chiffre). Je souhaite sans passer par des copier-coller, que toutes les valeurs apparaissent les unes à la suite des autres dans une nouvelle colonne : valeurs de la colonne A puis celles de la colonne B ...
Une formule est elle adaptée ?
Merci de votre aide
cordialement

Configuration: Macintosh / Safari 14.0.1

6 réponses

  1. Yoyo01000 Messages postés 1720 Date d'inscription   Statut Membre Dernière intervention   168
     
    Bonjour,

    vous voulez faire apparaître les valeurs de plusieurs colonnes dans une seule et unique colonne, c'est ça ?
    0
    1. chenneq2 Messages postés 4 Statut Membre
       
      Bonsoir,
      bon la solution proposée fonctionne parfaitement sur un "petit" jeu de données. ici je m'adresse à un fichier de 10 de milliers de lignes et là ça coince. je ne sais pas si Excel tourne en tache de fond ou si il est bloqué (mon Mac ne me dit pas qu'il l'est) mais après plusieurs heures je n'ai pas le résultat escompté avec la macro.
      J'aurais éventuellement une autre option : "fusionner" (merger ?) différents fichiers Excel formatés de manière identique (même nom de colonnes).
      Savez vous comment faire ?
      D'avance merci bonne soirée.
      0
  2. chenneq2 Messages postés 4 Statut Membre
     
    oui c'est bien ça
    merci d'avance
    0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour chennec, Yoyo

    " les valeurs apparaissent les unes à la suite des autres "

    C'est à dire triées dans l'ordre croissant des x colonnes ?
    0
  4. chenneq2 Messages postés 4 Statut Membre
     
    Merci. Voici la solution

    Sub concat()

    For i = 2 To ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row + 1

    derlignec = ActiveSheet.Range("F" & Rows.Count).End(xlUp).Row + 1
    Cells(derlignec, 6).Value = Cells(i, 1).Value

    Next i

    For i = 2 To ActiveSheet.Range("B" & Rows.Count).End(xlUp).Row + 1

    derlignec = ActiveSheet.Range("F" & Rows.Count).End(xlUp).Row + 1
    Cells(derlignec, 6).Value = Cells(i, 2).Value

    Next i

    For i = 2 To ActiveSheet.Range("C" & Rows.Count).End(xlUp).Row + 1

    derlignec = ActiveSheet.Range("F" & Rows.Count).End(xlUp).Row + 1
    Cells(derlignec, 6).Value = Cells(i, 3).Value

    Next i
    For i = 2 To ActiveSheet.Range("D" & Rows.Count).End(xlUp).Row + 1

    derlignec = ActiveSheet.Range("F" & Rows.Count).End(xlUp).Row + 1
    Cells(derlignec, 6).Value = Cells(i, 4).Value

    Next i
    For i = 2 To ActiveSheet.Range("E" & Rows.Count).End(xlUp).Row + 1

    derlignec = ActiveSheet.Range("F" & Rows.Count).End(xlUp).Row + 1
    Cells(derlignec, 6).Value = Cells(i, 5).Value

    End Sub
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Raymond PENTIER Messages postés 58211 Date d'inscription   Statut Contributeur Dernière intervention   17 480
     
    "Une formule est elle adaptée ?" Non ; aucune.
    0
  7. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    Avec Excel sur Windows solution rapide

    Option Explicit
    '-----------------
    Sub xxx()
    Dim Col As Byte, Derlig As Integer, Ligvid As Long, Tablo
    Range("F2:F500000").Clear
    For Col = 1 To 5
    Derlig = Columns(Col).Find(what:="*", searchdirection:=xlPrevious).Row
    Tablo = Range(Cells(1, Col), Cells(Derlig, Col))
    Ligvid = Columns("F").Find("", Range("F1"), xlValues).Row
    Cells(Ligvid, "F").Resize(UBound(Tablo), 1) = Tablo
    Next

    End Sub


    restitution à partir de F2 (en f1 entêté par ex: compil)

    0