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

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

  • exemple 3 pour forum.xls
    68.5 KB · Affichages: 129

domduf33

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

Discussions similaires

Réponses
12
Affichages
430

Statistiques des forums

Discussions
314 636
Messages
2 111 460
Membres
111 151
dernier inscrit
KARIMTAPSO