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

Michel J.

XLDnaute Nouveau
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
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: 19

Michel J.

XLDnaute Nouveau
 

Michel J.

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