SPLIT
Si dans la colonne A tu as des données du type
C:\mondossier\mon_sous_dossier\mondocument.xls .
sub répartir
For Each cel In Range("A:A")
If cel.Value <> "" Then
c = cel.Address
Données = Split(Range(c).Value, "")
range(c).offset(0,1).value=Données(0)
range(c).offset(0,2).value=Données(1)
range(c).offset(0,3).value=Données(2)
range(c).offset(0,4).value=Données(3)
End If
Next cel
end sub
La fonction split crée un tableau dont le premier élément d'index 0 contient les signes avant le premier séparateur, (ici \).
Si on ne connait pas le nombre d'éléments maximum de ce tableau c'est à dire par exemple le nombre de sous dossiers imbriqués, utilise
For i = 0 To UBound(Données) Range(c).Offset(0, i + 1).Value = Données(i) Next i
à la place des 4 range (c).offset...
Ubound renvoie le nombre maximum d'éléments dans le tableau
Cette macro écrit donc
en colonne B : C:\
en col C : Mondossier
En col D : mon sous_dossier
en col E : mondocument.xls
La fonction Split de VBA existe pour excel 2000 et XP mais pas pour excel 97 ... alors voici une macro de Pierre :
Function Split97(chaine As String, Separateur As String)
Dim i As Integer,
NbreTab As Integer
Dim Debutchaine As Integer
Dim Tableau()
NbreTab = 0
Debutchaine = 1
For i = 1 To Len(chaine)
If
Mid(chaine, i, 1) = Separateur Then
NbreTab = NbreTab + 1
ReDim Preserve Tableau(1 To NbreTab)
Tableau(NbreTab) = _
Mid(chaine, Debutchaine, i - Debutchaine)
i = i + 1
Debutchaine = i
End If
Next i
If i > Debutchaine Then
NbreTab = NbreTab + 1
ReDim Preserve Tableau(1 To NbreTab)
Tableau(NbreTab) = _
Mid(chaine, Debutchaine, i - Debutchaine)
End If
If NbreTab = 0 Then
ReDim Tableau(1)
Tableau(1) = chaine
End If
Split97 = Tableau()
End FunctionAuteurs : Michel Holderith, Stéphane Royer, Flo Cabon, Pierre Fauconnier
Mots clefs associés à cette page : texte, split
- Vous devez vous identifier ou créer un compte pour écrire des commentaires
