j'aurai voulu savoir s'il était possible d'avoir les champs d'une cellule excel (séparés par une entrée à la ligne) séparemment.
En fait, dans une cellule excel, j'ai le nom de plusieurs personnes séparés par une entrée à la ligne.
Dans une macro, j'ai besoin d'effectuer un traitement pour chacun de ces noms.
Je ne sais pas comment faire ?
oui, je pense que Ju a raison (salut Julien).
Je précise juste que le caractère 'délimiter' (afin de splitter) est le Chr(10) [et pas le vbNewLine ou vbCrLf] pour une cellule excel
Salut,
Je préciserai que vbCrLf fonctionne pour la mise en forme dans une cellule Excel
Mais pas pour le rechercher dans une cellule ou il faut effectivement utiliser Chr(10)
JML
Partageons notre savoir et nos acquis
beh moi j'ai pas de chance sur ce genre de chose... Là je suis sur un pc (je viens de vérifier) qui atteste tes dires.
Par contre, sur mon pc, j'ai le petit carré !! Ca doit dépendre d'une config
salut Mortalino,
En fait j'ai eu aussi ce souci mais je ne saurai te dire quand et comment il a été résolu
j'utilise excel 2003 mais au moins 2 fois par semaine il y a des patchs qui s'installent sur le Pc !!!
Bonne journée
JML
Partageons notre savoir et nos acquis
Possible, vu que jai bloqué les MAJ de Microsoft ^^
A la limite, je réactiverai le temps de faire les MAJ, on verra bien si ça change quelque chose.
bonne journée également
Split renvoie un tableau donc si je récupère le résultat de la fonction Split dans un tableau, comment accéder au iè élément de ce tableau.
En fait mon problème est de récupérer dans un tableau ce que renvoie la fonction Split.
J'sais pas mais si le but c'est d'exploiter des listes de noms dans une cellule, peut être qu'une boucle sur le contenu de la cellule en recherchant (Chr(10) jusqu'au dernier caractère devrait faire l'affaire
Ou alors j'ai perdu le fil depuis le message initial. Si c'est le cas j'ai bien besoin de ces vacances qui commencent ce soir
JML
Partageons notre savoir et nos acquis
Dim i As Integer
Dim tabDest() As String
tabDest = Split(Range("AL" & Selection.Row), Chr(10))
Do While tabDest(i) <> "" ...
Voila le début de mon code.
Apparemment le compilateur n'accepte pas : il me dit que l'indice i n'appartient pas à la sélection ???
J'ai besoin d'exploiter chaque élément du tableau renvoyé par Split, à part.
Avec Split j'sais pas mais ça ça marche
______________________
Option Explicit
Sub JML_Test()
Dim I As Integer, TabDest() As String, FinCellule As Boolean, ChaineDeDonnee, DebLectChaine
Range("A1").Select
FinCellule = False
DebLectChaine = 1
ChaineDeDonnee = ActiveCell.Value
Do While FinCellule = False
If InStr(DebLectChaine, ChaineDeDonnee, Chr(10)) > 0 Then
I = I + 1
ReDim Preserve TabDest(I)
TabDest(I) = Mid(ChaineDeDonnee, DebLectChaine, InStr(DebLectChaine, ChaineDeDonnee, Chr(10)) - DebLectChaine)
DebLectChaine = 1 + InStr(DebLectChaine, ChaineDeDonnee, Chr(10))
End If
If DebLectChaine > Len(ChaineDeDonnee) Then
FinCellule = True
ElseIf InStr(DebLectChaine, ChaineDeDonnee, Chr(10)) = 0 Then
I = I + 1
ReDim Preserve TabDest(I)
TabDest(I) = Mid(ChaineDeDonnee, DebLectChaine, Len(ChaineDeDonnee))
FinCellule = True
End If
Loop
End Sub
Maintenant si c'est pour faire un tableau au lieu d'affecter dans un tableau tu peux directement affecter dans des cellules en faisant tourner les variables qui vont bien
Avec Split j'sais pas mais ça ça marche
______________________
Option Explicit
Sub JML_Test()
Dim I As Integer, TabDest() As String, FinCellule As Boolean, ChaineDeDonnee, DebLectChaine
Range("A1").Select
FinCellule = False
DebLectChaine = 1
ChaineDeDonnee = ActiveCell.Value
Do While FinCellule = False
If InStr(DebLectChaine, ChaineDeDonnee, Chr(10)) > 0 Then
I = I + 1
ReDim Preserve TabDest(I)
TabDest(I) = Mid(ChaineDeDonnee, DebLectChaine, InStr(DebLectChaine, ChaineDeDonnee, Chr(10)) - DebLectChaine)
DebLectChaine = 1 + InStr(DebLectChaine, ChaineDeDonnee, Chr(10))
End If
If DebLectChaine > Len(ChaineDeDonnee) Then
FinCellule = True
ElseIf InStr(DebLectChaine, ChaineDeDonnee, Chr(10)) = 0 Then
I = I + 1
ReDim Preserve TabDest(I)
TabDest(I) = Mid(ChaineDeDonnee, DebLectChaine, Len(ChaineDeDonnee))
FinCellule = True
End If
Loop
End Sub
Maintenant si c'est pour faire un tableau au lieu d'affecter dans un tableau tu peux directement affecter dans des cellules en faisant tourner les variables qui vont bien