|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Sophie Directeur de projet Inscription : décembre 2011 Messages : 3 ![]() |
Bonjour,
Pour chaque cellule d'une seule colonne, je souhaite déplacer une chaine de caractère pour faciliter ensuite le tri de cette colonne. J'ai parfois le Prénom,NOM et parfois seulement NOM. J'aimerais avoir NOM,Prénom et quand il n'y a que le NOM aucune modification. Utilisatrice peu avertie de VBA, j'ai fais des tests pour repérer les cellules où il y a une virgule et sélectionner ce qu'il y a à gauche de cette virgule pour ensuite le coller à droite du nom mais ça ne fonctionne pas (CHERCHE, STXT...) Situation de départ Patrice,BERNARD Colette, PATISSON BARBARA Sophie,DAUMER RAMEAU Situation d'arrivée espérée BERNARD,Patrice PATISSON,Colette BARBARA DAUMER,Sophie RAMEAU Auriez vous des pistes pour m'aider? Merci d'avance |
|
|
00
|
|
|
#2 | |||
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
Bonjour,
Code :
__________________
Cordialement. Daniel Citation:
|
|||
|
20
|
|
|
#3 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2008 Messages : 5 848 ![]() |
Par formule sans VBA
Donnée brute en A1 Code :
=SI(ESTNUM(TROUVE(",";A1));SUPPRESPACE(STXT(A1;TROUVE(",";A1)+1;NBCAR(A1))&", "&GAUCHE(A1;TROUVE(",";A1)-1));A1)
__________________
Cordialement. |
|
|
10
|
|
|
#4 |
|
Invité de passage
![]() Sophie Directeur de projet Inscription : décembre 2011 Messages : 3 ![]() |
Bonjour Daniel,
Ton code fonctionne parfaitement, merci beaucoup. J'ai pu l'intégrer dans ma macro complète et ça tourne à merveille. J'ai cependant du mal à comprendre comment fonctionne exactement la formule split ( elle scinde le texte en 2 à partir de la virgule et après?) et où va se positionner le tableau créé. Bien cordialement Sophie |
|
|
00
|
|
|
#5 | |
|
Expert Confirmé Sénior
![]() Daniel aucune Inscription : septembre 2011 Messages : 2 004 ![]() |
C'est ça. "Split" (en anglais, c'est "partager, découper"). découpe la chaîne de caractères en se servant du séparateur fourni (ici, la virgule). Le résultat est un tableau de chaînes de caractères; le premier élément (index 0) désigne la première partie, la seconde partie a l'index 1 etc. Donc ici, s'il y a deux partie, Tabl(0) désigne le prénom et Tabl(1) le nom. Ubound(Tabl) renvoie l'index le plus élevé du tableau. S'il est égal à 0, c'est qu'il n'y a qu'une partie, donc seulement un nom.
__________________
Cordialement. Daniel Citation:
|
|
|
00
|
|
|
#6 |
|
Invité de passage
![]() Sophie Directeur de projet Inscription : décembre 2011 Messages : 3 ![]() |
Ok, je comprends mieux le rôle de "If UBound(Tabl) > 0 Then" dans le code et finalement l'ensemble. Entre le code et les explications tout devient lumineux.
Merci de ta réactivité et de la clarté de tes réponses. Bien cordialement Sophie |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com