Contenu cellule excel

mimi_939 Messages postés 50 Date d'inscription vendredi 31 décembre 2004 Statut Membre Dernière intervention 3 août 2007 - 31 juil. 2007 à 12:10
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 2 août 2007 à 00:14
Bonjour,

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 ?

Si vous avez une idée, merci d'avance.

12 réponses

jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
31 juil. 2007 à 12:41
Salut,
Regarde si Split ne pourrait pas répondre à ta question.

@+: Ju£i?n
Pensez: Réponse acceptée
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
31 juil. 2007 à 13:04
salut,

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

@++

<hr width="100%" size="2" />( Nouveau forum : Exclusivement Office & VBA/STRONG>
0
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 2
31 juil. 2007 à 14:08
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
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
31 juil. 2007 à 14:15
salut JML,

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

@++

<hr width="100%" size="2" />( Nouveau forum : Exclusivement Office & VBA/STRONG>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 2
31 juil. 2007 à 14:23
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
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
31 juil. 2007 à 14:34
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

@++





<hr width="100%" size="2" />


( Nouveau forum : Exclusivement Office & VBA
0
mimi_939 Messages postés 50 Date d'inscription vendredi 31 décembre 2004 Statut Membre Dernière intervention 3 août 2007
1 août 2007 à 10:54
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.
0
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 2
1 août 2007 à 11:36
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
0
mimi_939 Messages postés 50 Date d'inscription vendredi 31 décembre 2004 Statut Membre Dernière intervention 3 août 2007
1 août 2007 à 11:43
    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.
0
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 2
1 août 2007 à 14:14
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

JML
 Partageons notre savoir et nos acquis
0
JM247L Messages postés 443 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 1 mars 2011 2
1 août 2007 à 14:19
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

JML
 Partageons notre savoir et nos acquis
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
2 août 2007 à 00:14
Si tu te sers de Split, tu pourrais écrire quelque chose comme
For I = 0 to UBound(TabDest)
...
Next

Tu peux aussi remplacer le 0 par LBound(TabDest)

MPi
0
Rejoignez-nous