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

Michel J.

XLDnaute Nouveau
Supporter XLD
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 édition:

job75

XLDnaute Barbatruc
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+
 

Michel J.

XLDnaute Nouveau
Supporter XLD
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

  • Fichier de travail V1.xlsm
    15.2 KB · Affichages: 9

Michel J.

XLDnaute Nouveau
Supporter XLD
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+
 

Michel J.

XLDnaute Nouveau
Supporter XLD
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
 

Statistiques des forums

Discussions
285 094
Messages
1 865 750
Membres
156 395
dernier inscrit
JeanJoseph
Haut Bas