VBA: problème avec la fonction Dim
Bonjour à tous
J’ai une feuille Excel avec en première colonne des noms d’entreprises et en deuxième des secteurs d’activités séparés par des virgules. Et je voudrais obtenir une feuille a deux colonnes comme ci-dessous:
Nomd’entreprise1 1° secteur d’activité
Nomd’entreprise1 2° secteur d’activité
Nomd’entreprise2 1° secteur d’activité
J'ai donc écrit le programe à la fin de mon post en VBA, mais j'ai un problème avec la fonction Dim. Quand une entreprise est présent sur 3 secteurs comme si dessous :
Entreprise1, Secteur1,secteur2,secteur3
J’obtiens ce résultat :
Entreprise1 Secteur1
Entreprise1 secteur2,secteur3
Entreprise1 secteur3
J’ai utilisé la fonction MsgBox pour afficher les valeurs « dd » et « ff » avant d’appliquer la fonction Mid. Et les valeurs sont correctes Mid devrais sortir « secteur2 » à la 3° ligne. Est-ce que vous savez d’où peux venir le problème ?
Dim virgule As String * 1
Dim aa As Long
Dim bb As Long
Dim zz As Long
Dim cc As Byte
Dim dd As Long
Dim ee As Long
virgule = ","
aa = 0
bb = 0
zz = 2
Call adkomma2
‘Sous-routine ajoutant une virgule à la fin de chaque case.
Do Until Cells(zz, 2) = 0
Branchen = Cells(zz, 2)
cc = Len(Branchen)
Do Until cc = aa
bb = WorksheetFunction.Search(virgule, Branchen, aa + 1)
dd = aa + 1
ee = bb - 1
Branche = Mid(Branchen, dd, ee)
Cells(zz, 2).Activate
Rows(zz).Select
Selection.Insert Shift:=xlDown
zz = zz + 1
Cells(zz, 2) = Branchen
Cells(zz - 1, 2) = Branche
Branchen = Cells(zz, 1)
Cells(zz - 1, 1) = Branchen
Branchen = Cells(zz, 2)
aa = bb
Loop
aa = 0
bb = 0
Rows(zz).Select
Selection.Delete Shift:=xlUp
Loop
End Sub
Salut,
Si tu n'obtiens pas de réponse, je pense que c'est parce que ton code inscrit ainsi ne nous dit pas grand chose.
A ta place, je placerais mon fichier sur le site, si possible au format xls. (et si nécessaire, en enlevant les données confidentielles).
Et alors là, demande immédiatement une augmentation de la capacité à ton fournisseur de messagerie, car tu vas voir arriver les réponses
A te relire.
Bonjour Yvouille,
En l'absence de données complémentaires, voici un fichier qui vous fournira peut-être une piste.
Bonjour,
Attention Dim n'est pas une fonction mais une instruction pour déclarer une variable qui permettra d'attribuer un "espace" de stockage mémoire à cette variable pendant l'exécution du code.
Par rapport à ton fichier une première idée serait d'utiliser la fonctionne Données / Convertir
- Sélectionne B2 à B8
- Menu Données / convertir
- Clique le case à cocher "délimité" puis clique sur "suivant"
- Coche "tabulation" et "virgule" puis clique sur "suivant" et sur "fin"
Ensuite adapter le code pour faire ce que tu veux
Amicalement