XL pour MAC Recopie cellules via formule

  • Initiateur de la discussion Initiateur de la discussion chenenq
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

chenenq

XLDnaute Nouveau
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
 
Solution
Voici le code

VB:
Sub concat()

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

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

Next i

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

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

Next i

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

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

Next i

End Sub

Pour lancer la macro, il faut activer l'onglet développeur dans Fichier/Options/Personnaliser le ruban /...
Voici le code

VB:
Sub concat()

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

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

Next i

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

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

Next i

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

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

Next i

End Sub

Pour lancer la macro, il faut activer l'onglet développeur dans Fichier/Options/Personnaliser le ruban / Cocher l'onglet développeur.

Puis retourner dans Excel et lancer la macro dans le menu Développeur / Macro / Executer la macro concat
 
De rien, pour votre fichier réel, il suffit de copier coller la fonction

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

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

Next i

autant de fois qu'il y a de colonnes et bien sur de modifier les références de la dernière colonne qui va accueillir la somme.

Bien à vous
 
Bonjour @chenenq, chagatte,

ton fichier en retour, version n° 1 terminée.

fais Ctrl e ➯ travail effectué ! 🙂


VB:
Option Explicit

Const colD% = 4 'colonne Destination = colonne D
'si dans ton fichier réel la dernière colonne est
'par exemple J, il suffit de remplacer 4 par 10 :
'Const colD% = 10 '(laisse le D de colD car c'est
'l'initiale de "Destination") ; y'a pas d'autre
'changement à faire : ce qui suit reste pareil !

Dim nlm&, lg2&, col%

Private Sub Job()
  Dim lg1&
  For lg1 = 2 To Cells(nlm, col).End(3).Row
    lg2 = lg2 + 1: Cells(lg2, colD) = Cells(lg1, col)
  Next lg1
End Sub

Sub concat()
  nlm = Rows.Count: lg2 = 1: Application.ScreenUpdating = 0
  For col = 1 To colD - 1: Job: Next col
End Sub

tu as écrit : « y compris pour plusieurs dizaines de milliers de lignes. »

aussi, dans mon post suivant, je vais mettre une autre version qui est
beaucoup plus rapide, car elle utilise la méthode des tableaux ; mais
essaye quand même cette première version.




@chagatte : le + 1 au bout de ta ligne derlignec = ... + 1 est utile et
nécessaire, mais pas le + 1 au bout de ta ligne For i = 2 To ... + 1

soan
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
311
Réponses
5
Affichages
406
Retour