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 /...
@chenenq, @chagatte,

voici la version 2 terminée, avec méthode des tableaux.

fais Ctrl e ➯ travail fait encore plus rapidement ! 😊


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 T, n&
  n = Cells(nlm, col).End(3).Row: If n = 1 Then Exit Sub
  n = n - 1: T = Cells(2, col).Resize(n)
  Cells(lg2, colD).Resize(n) = T: lg2 = lg2 + n
End Sub

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

soan
 

Pièces jointes

Bonjour le fil

[recyclons du code du printemps 2020]
Issu d'une de mes réponses dans un fil de mars
Permets de concaténer plusieurs colonnes
VB:
Function MultiConcatC(vArr As Variant, Optional Séparateur As String = ";") As String
Dim j As Variant
If IsArray(vArr) Or TypeName(vArr) = "Range" Then
  For Each j In vArr
    If MultiConcatC = "" Then
    MultiConcatC = j
    ElseIf j <> "" Then
    MultiConcatC = MultiConcatC & Séparateur & j
    End If
    Next j
  Else
MultiConcatC = CStr(vArr)
End If
End Function
Exemple d'utilisation
Saisir en C1
=MultiConcatC(A1:B18)
[/recyclons du code du printemps 2020]

NB: Je crains hélas que les MACistes auront un petit souci.
Souci que les PCistes sous Windows n'auront pas
 
Re

Toujours issu de ma recyclerie
Une fonction plus courte (mais pour une seule colonne)
VB:
Function Concat(ByVal Rng As Range)
'Pour concaténer une seule colonne (avec moins de 65536 lignes)
Concat = Join(Application.Transpose(Rng.Value), ";")
End Function
Donc , on saisira: =Concat(A1:A18)

PS: Toujours le même écueil pour les MACistes.
 
- 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

  • Question Question
Microsoft 365 Souci de copie
Réponses
8
Affichages
262
  • Question Question
Microsoft 365 MFC dans tableau
Réponses
2
Affichages
291
Réponses
1
Affichages
143
Retour