[VBA excel] chaine de caractere
jax
-
jax -
jax -
Bonjour
Voila je voudrais crée un petit macro sous VBA.
Je voudrais diviser des cellules en 2 (avec des Noms et des Prenoms dedant), et faire en sorte d'avoir dans 2 nouvelles cellules d'un coté le Nom et de l'autre le Prenom.
Le nom etant toujours placé avant le prenom et il y a un espace entre le nom et prenom.
j'ai essayé un peu mais je bloque :
Avec ce code, le nom reste dans la cellule, mais je n'arrive pas a recuper le Prenom et a l'afficher dans une nouvelle cellule.
Je suis novice donc si quelqu'un se sent de m'orienter. Merci
Voila je voudrais crée un petit macro sous VBA.
Je voudrais diviser des cellules en 2 (avec des Noms et des Prenoms dedant), et faire en sorte d'avoir dans 2 nouvelles cellules d'un coté le Nom et de l'autre le Prenom.
Le nom etant toujours placé avant le prenom et il y a un espace entre le nom et prenom.
j'ai essayé un peu mais je bloque :
dim cell as Range For Each cell In Selection cell = Split(cell, " ", 2) Debug.Print cell Next cell
Avec ce code, le nom reste dans la cellule, mais je n'arrive pas a recuper le Prenom et a l'afficher dans une nouvelle cellule.
Je suis novice donc si quelqu'un se sent de m'orienter. Merci
A voir également:
- [VBA excel] chaine de caractere
- Caractère ascii - Guide
- Caractère spéciaux - Guide
- Liste déroulante excel - Guide
- Caractere speciaux - Guide
- Word et excel gratuit - Guide
6 réponses
Salut, tu peux utiliser ce code:
Selection.TextToColumns DataType:=xlDelimited, Space:=True
Bonne continuation !
Selection.TextToColumns DataType:=xlDelimited, Space:=True
Bonne continuation !
Rebonjour :)
Ce code marche plutot bien mais gros soucis : lorsque je l'applique sur ma colonne, il m'efface les colones qui sont a droite de celle ci.
Meme en inserant de nouvelles colones, toutes les autres données sont effacées.
Sinon comment faire pour récuperer uniquement les 2 premiers mots de la cellule?
Merci encore
Ce code marche plutot bien mais gros soucis : lorsque je l'applique sur ma colonne, il m'efface les colones qui sont a droite de celle ci.
Meme en inserant de nouvelles colones, toutes les autres données sont effacées.
Sinon comment faire pour récuperer uniquement les 2 premiers mots de la cellule?
Merci encore
salut,
si tu n'as que le nom et prénom dans ta colonne, ce code devrait suffire, sinon il faudra développer un peu:
For Each Cell In Selection.Cells
Position1 = InStr(1, Cell.Value, " ")
Cell.Offset(0, 1).Value = Right(Cell.Value, Len(Cell.Value) - Position1)
Cell.Value = Left(Cell.Value, Position1 - 1)
Next Cell
Attention, il te faut toujours une colonne de libre à côté de la colonne qui contient les cellules que tu veux séparer, et il faut que tu sélectionnes les cellules à séparer avant d'exécuter la macro...
Si tu trouves ça trop contraignant pour une quelconque raison, tu peux toujours remplacer Selection par une plage fixe Range(...)
Tiens-moi au courant... ;-)
si tu n'as que le nom et prénom dans ta colonne, ce code devrait suffire, sinon il faudra développer un peu:
For Each Cell In Selection.Cells
Position1 = InStr(1, Cell.Value, " ")
Cell.Offset(0, 1).Value = Right(Cell.Value, Len(Cell.Value) - Position1)
Cell.Value = Left(Cell.Value, Position1 - 1)
Next Cell
Attention, il te faut toujours une colonne de libre à côté de la colonne qui contient les cellules que tu veux séparer, et il faut que tu sélectionnes les cellules à séparer avant d'exécuter la macro...
Si tu trouves ça trop contraignant pour une quelconque raison, tu peux toujours remplacer Selection par une plage fixe Range(...)
Tiens-moi au courant... ;-)
Merci
Je vais tester voir ce que sa donne. Pour la colones a rajouter je savais, mais c'est dans ma colone il y avait trop d'espace (j'ai utilisé une fonction pour supprimé les espaces inutiles).
Sinon c'est bien en selectionnant la colone que je veux separer.
Je vais voir ce que je peux faire pour arrangé ton code. C'est un peu la merde parceque ma colone n'a pas des "données" parfaites; ya des caracteres qui sont la mais qui ne devraient pas (tableau recuperé et mal renseigné)
En tout cas merci bien
Je vais tester voir ce que sa donne. Pour la colones a rajouter je savais, mais c'est dans ma colone il y avait trop d'espace (j'ai utilisé une fonction pour supprimé les espaces inutiles).
Sinon c'est bien en selectionnant la colone que je veux separer.
Je vais voir ce que je peux faire pour arrangé ton code. C'est un peu la merde parceque ma colone n'a pas des "données" parfaites; ya des caracteres qui sont la mais qui ne devraient pas (tableau recuperé et mal renseigné)
En tout cas merci bien
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Si après le nom et le prénom, tu as de nouveau un espace et d'autres renseignements, tu peux utiliser ça si tu ne veux garder que le nom et le prénom, et si tu veux tout séparer, tu peux toujours créer le nombre de colonne nécessaires et adapter ce code:
Sub sépare()
For Each Cell In Selection.Cells
Position1 = InStr(1, Cell.Value, " ")
Position2 = InStr(Position1 + 1, Cell.Value, " ")
Position3 = InStr(Position2 + 1, Cell.Value, " ")
...
Cell.Offset(0, 1).Value = Mid(Cell.Value, Len(Cell.Value) - Position1, Len(Cell.Value) - Position1)
Cell.Offset(0,2).Value = Mid(Cell.Value, Len(Cell.Value) - Position2, Len(Cell.Value) - Position3)
...
Cell.Value = Left(Cell.Value, Position1 - 1)
Next Cell
End Sub
Sub sépare()
For Each Cell In Selection.Cells
Position1 = InStr(1, Cell.Value, " ")
Position2 = InStr(Position1 + 1, Cell.Value, " ")
Position3 = InStr(Position2 + 1, Cell.Value, " ")
...
Cell.Offset(0, 1).Value = Mid(Cell.Value, Len(Cell.Value) - Position1, Len(Cell.Value) - Position1)
Cell.Offset(0,2).Value = Mid(Cell.Value, Len(Cell.Value) - Position2, Len(Cell.Value) - Position3)
...
Cell.Value = Left(Cell.Value, Position1 - 1)
Next Cell
End Sub
Y-a-t-il un endroit ou l'on peut voir toutes ces procedures deja ecrites et sont elles expliquées?
En tout cas merci
Bonne continuation...
Merci encore