[Catégorie modifiée .Net -> VBA] gestion cellule avec séparateur [Résolu]

Signaler
Messages postés
20
Date d'inscription
lundi 18 avril 2011
Statut
Membre
Dernière intervention
6 juillet 2011
-
Messages postés
20
Date d'inscription
lundi 18 avril 2011
Statut
Membre
Dernière intervention
6 juillet 2011
-
Bonjour,

J'ai un petit problème que je n'arrive pas à résoudre malgré mes recherches, je dois, à partir d'une cellule ou il y a des champs avec un séparateur ";", les mettre en colonne.
Voici mon code qui ne marche :
Public Function formatage()
i = 1

Sheets("test").Select

Do While Not (IsEmpty(ActiveSheet.Range("A" & i)))
ActiveSheet.Range("B1").Insert = Split(ActiveSheet.Range("A" & i).Value, ";")

i = i + 1

Loop
End Function


Merci pour votre aide

4 réponses

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Je t'ai dit l'essentiel.
Exemple tout con :
    Dim sTexte As String
    Dim mElements() As String
    Dim r As Long
    
    sTexte = "Coucou;Codes;Sources"
    mElements = Split(sTexte, ";")
    
    For r = 0 To UBound(mElements)
        Range("A1").Offset(0, r + 1).Value = mElements(r)
    Next r
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Salut

Split te renvoie un tableau de chaine, de base 0 (index commencent à 0).
Pour isoler un des éléments de ce tableau, deux solutions :
- Déclarer un tableau
Dim mElements() As String
mElements = Split(...)
Et utiliser un des index, par exemple le n°2, c'est à dire le 3ème élément
If UBound(mElements) >= 2 Then MsgBox mElements(2)
- Sans tableau intermédiaire
maChaine = Split(...)(2)
Syntaxe un peu bizarre, mais qui fonctionne.
Par contre, gare aux index inexistants qui génèreront des erreurs

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
20
Date d'inscription
lundi 18 avril 2011
Statut
Membre
Dernière intervention
6 juillet 2011
1
merci pour ton aide, mais j'aimerai en fait récupéré les valeurs entre le séparateur pour les organiser en colonne et je ne vois pas trop comment le faire avec ton code <noob inside/>
Messages postés
20
Date d'inscription
lundi 18 avril 2011
Statut
Membre
Dernière intervention
6 juillet 2011
1
oui merci c ce que j'ai fais à peu près et ça fonctionne merci

mElements = Split(ActiveSheet.Range("B" & i).Value, ";") 

count = UBound(mElements) 

count = count + 1

m = 0 

For l = 1 To count

Worksheets("test").Range("B" & k) = mElements(m) 

m = m + 1

k = k + 1

Next l