VBA - Le tiret du 6 plante la macro mais je ne dois pas le supprimer

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 !

domduf33

XLDnaute Nouveau
Bonjour le forum.

J'ai un tableau dans lequel je souhaite récupérer les données pour les mettre en liste déroulantes.
Grace à d'autre personne du forum qui m'ont donné un lien pour le traitement en cascade des menu déroulant, j'ai copier la macro suivant qui fonctionne très bien mais pas dans mon cas à cause d'un point particulier.

Dans mon tableau, (voir fichier joint), les données ont un tiret (- celui du 6) en deuxième position ou en 4ème position selon les colonnes.
Si j'enlève ce tiret, la macro fonctionne très bien et crée les regroupements.
Avec ce tiret, elle plante.
Le souci est qu'il ne faut pas que je supprime ces tirets car sinon c'est l'importation automatique de fichier excel dans le logiciel de compta qui planterai.

Je ne connais que très peu VBA et donc toute aide serai la bienvenue.

Par avance merci
Cordialement
Dominique

Voici la macro en l'etat :
Sub CreeListeLedger()
colBD = 1
colListe = 8
Set f = Sheets("ledger1")
ligne = 1
f.Cells(ligne + 1, colListe).Resize(65000, 10).Clear
Set mondico = CreateObject("Scripting.Dictionary")
For Each c In Range(f.Cells(2, colBD), f.Cells(65000, colBD).End(xlUp))
mondico(c.Value) = c.Value
Next c
f.Cells(ligne, colListe) = "ledger"
f.Cells(ligne, colListe).Font.Bold = True
f.Cells(ligne + 1, colListe).Resize(mondico.Count) = Application.Transpose(mondico.items)
ActiveWorkbook.Names.Add Name:="ledger", RefersTo:=f.Cells(ligne + 1, colListe).Resize(mondico.Count)
'---- niv 2,3,..
For niv = 1 To 2 ' adapter le nombre de niveaux
colBD = colBD + 1
colListe = colListe + 2
ligne = 1
For Each c In Range(f.Cells(2, colListe - 2), f.Cells(65000, colListe - 2).End(xlUp))
If c <> "" And c.Font.Bold <> True Then
Set mondico = CreateObject("Scripting.Dictionary")
For Each d In Range(f.Cells(2, colBD), f.Cells(65000, colBD).End(xlUp))
If d.Offset(, -1) = c Then mondico(d.Value) = d.Value
Next d
f.Cells(ligne, colListe) = c
f.Cells(ligne, colListe).Font.Bold = True
f.Cells(ligne + 1, colListe).Resize(mondico.Count) = Application.Transpose(mondico.items)
ActiveWorkbook.Names.Add Name:=Replace(c, " ", "_"), RefersTo:=f.Cells(ligne + 1, colListe).Resize(mondico.Count)
ligne = ligne + mondico.Count + 1
End If
Next c
Next niv
End Sub
 

Pièces jointes

Re : VBA - Le tiret du 6 plante la macro mais je ne dois pas le supprimer

Bonjour Kjin

Ok. Merci pour la réponse.
Je vais donc voir pour ajouter des colonnes intermédiaires afin de faire les listes sans les tirets mais d'avoir toujours les tirets lors de l'import dans le logiciel de compta.

Merci et a+
Cordialement
Dominique
 
- 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
12
Affichages
552
Réponses
1
Affichages
520
Réponses
0
Affichages
459
  • Question Question
Microsoft 365 Cpier/coller en VBA
Réponses
7
Affichages
691
Retour