Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 Empiler des valeurs de cellule dans une même colonne

  • Initiateur de la discussion Initiateur de la discussion Michel J.
  • 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 !

M

Michel J.

Guest
Bonjour,
Je suis nouveau sur Excel download et j'ai découvert VBA, dans le même temps. Je cherche à passer d'une colonne dont les cellules contiennent des valeurs numériques séparées par des "," (nombre de valeurs inconnu dans chaque cellule) à une nouvelle colonne contenant toutes les valeurs . J'ai trouvé la réponse qui avait été faite en octobre 2019 par Staple1600.
Cela fonctionne avec un nombre limité de cellules, mais au delà j'ai un message "Erreur d'exécution '13': Incompatibilité de type".
Et quand je fais Debogage il pointe sur strVal = Join(Application.Transpose(vArr), ",")
J'ai une colonne de 6000 cellules et un total de 7000 x valeur numériques
Vous trouverez ci-dessous la macro VBA avec laquelle je me débats.
Sub PourTest()
Columns(1).Clear
[A1] = "5390004542"
[A2] = "5390004545"
[A3] = "5390004548, 5390004549"
[A4] = "5390004557"
[A5] = "5390004567, 5390004568"
[A6] = "5390004886, 5390004887, 5390004892, 5390004894, 5390004895, 5390004897, 5390004898, 5390004899, 5390004905, 5390004907, 5390004912, 5390004913, 5390004915, 5390004916, 5390004919, 5390004921, 5390004924, 5390004925, 5390004933"
[A7] = "5390013031"
[A8] = "5390027139, 5390073116"
[A9] = "5390030782, 5390030784, 5390030785"
[A10] = "5390047424, 5390047425, 5390047426, 5390047427, 5390047428"
[A11] = "5390056155, 5390056156, 5390056158, 5390056159, 5390056389, 5390056390, 5390056391, 5390056392, 5390056393, 5390059753, 5390059754, 5390059755, 5390059757, 5390059759, 5390059760, 5390059762, 5390059763, 5390059764, 5390060750, 5390060751, 5390060752, 5390060753, 5390060849, 5390060850, 5390060852, 5390060853, 5390060941, 5390060942"
[A12] = "5390063667"
[A13] = "5390063759"
[A14] = "5390081979, 5390081980, 5390083595, 5390083596, 5390083621"
[A15] = "5390082614, 5390082617"
[A16] = "5390089992, 5390099824, 5390099825"
[A17] = "5390092251"
[A18] = "5390092640"
MsgBox "Procéder à l'empilement...", vbQuestion, "Test"
Empiler
End Sub

Sub Empiler()
Dim vArr, strVal$, vOut, i&
vArr = Range("A1:A18")
strVal = Join(Application.Transpose(vArr), ",")
vOut = Split(strVal, ",")
Cells(1).Resize(UBound(vOut) + 1) = Application.Transpose(vOut)
End Sub

Merci par avance pour votre aide, remarques ou commentaires.
Cordialement
MJ
 
Dernière modification par un modérateur:
Bonsoir Michel J., bienvenue sur XLD,

Le séparateur étant ", " il faut le mette sur Join et sur Split :
VB:
Sub PourTest()
If MsgBox("Procéder à l'empilement ?", vbYesNo + vbQuestion, "Test") = vbNo Then Exit Sub
Columns(1).Clear
[A1] = "5390004542"
[A2] = "5390004545"
[A3] = "5390004548, 5390004549"
[A4] = "5390004557"
[A5] = "5390004567, 5390004568"
[A6] = "5390004886, 5390004887, 5390004892, 5390004894, 5390004895, 5390004897, 5390004898, 5390004899, 5390004905, 5390004907, 5390004912, 5390004913, 5390004915, 5390004916, 5390004919, 5390004921, 5390004924, 5390004925, 5390004933"
[A7] = "5390013031"
[A8] = "5390027139, 5390073116"
[A9] = "5390030782, 5390030784, 5390030785"
[A10] = "5390047424, 5390047425, 5390047426, 5390047427, 5390047428"
[A11] = "5390056155, 5390056156, 5390056158, 5390056159, 5390056389, 5390056390, 5390056391, 5390056392, 5390056393, 5390059753, 5390059754, 5390059755, 5390059757, 5390059759, 5390059760, 5390059762, 5390059763, 5390059764, 5390060750, 5390060751, 5390060752, 5390060753, 5390060849, 5390060850, 5390060852, 5390060853, 5390060941, 5390060942"
[A12] = "5390063667"
[A13] = "5390063759"
[A14] = "5390081979, 5390081980, 5390083595, 5390083596, 5390083621"
[A15] = "5390082614, 5390082617"
[A16] = "5390089992, 5390099824, 5390099825"
[A17] = "5390092251"
[A18] = "5390092640"
Empiler
End Sub

Sub Empiler()
Dim vArr, strVal$, vOut
vArr = [A1:A18]
strVal = Join(Application.Transpose(vArr), ", ")
vOut = Split(strVal, ", ")
[A20].Resize(UBound(vOut) + 1) = Application.Transpose(vOut)
End Sub
A+
 
Bonjour job75
Merci pour votre réponse, J'ai repris la macro révisée mais je rencontre toujours ce message "Erreur d'exécution '13': Incompatibilité de type". et en utilisant Débogage pas à pas détaillé (F8), il pointe sur strVal = Join(Application.Transpose(vArr), ", ")
Et là, ???
Je place en pièce jointe le fichier Excel avec la macro VBA avec le séparateur correct sur les objets Join et Split.
Merci
 

Pièces jointes

 
Bonsoir @job75
Merci pour votre réponse, J'ai repris la macro révisée mais je rencontre toujours ce message "Erreur d'exécution '13': Incompatibilité de type". et en utilisant Débogage pas à pas détaillé (F8), il pointe sur strVal = Join(Application.Transpose(vArr), ", ")
Et là, ???
Je place en pièce jointe le fichier Excel avec la macro VBA avec le séparateur correct sur les objets Join et Split.
Merci

Fichiers joints
 
- 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
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…