extraire un groupe de lettres

  • Initiateur de la discussion Initiateur de la discussion janick
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

janick

XLDnaute Occasionnel
Bonjour,

Dans une phrase 'Dupont Christian vitrier' existe il une formule pour extraire dans une colonne 'Dupont' et dans la seconde colonne 'Christian' ex... 1er groupe de lettres et 2èm groupe de lettres.....

Merci d'avance
 
Bonjour Janick
Si ton 'groupe' n'est pas tro conséquent utiliser Menu données convertir et utiliser l'espace comme caractère séparateur

Tu peux aussi utiliser la formule trouve avec critère ' ' (espace) et ensuite utiliser gauche

Il faut voir l'allure de ton fichier

Edition Ton exemple en A1
en B1 =GAUCHE(A1;TROUVE(' ';A1)) va te donner Dupont

@+GD

Message édité par: Gérard DEZAMIS, à: 13/02/2006 17:33
 
et voici le même pour plusieurs noms

Bonjour Gérard [file name=nom_20060213174337.zip size=9671]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/nom_20060213174337.zip[/file]

Message édité par: Jacques87, à: 13/02/2006 17:44
 
Bonsoir tout le monde

une autre solution vba, en reprenant l'exemple de jacques (merci) :


Private Sub CommandButton1_Click()
Dim tablosplite As Variant
Dim c As Range

For Each c In Range('a1:a' & Range('a65536').End(xlUp).Row)
        tablosplite = Split(c, ' ')
        c(1, 5).Resize(1,
UBound(tablosplite) + 1) = tablosplite
Next c

End Sub


salut
 
Salut janick, salut les autres,

En pièce jointe une petite demo que j'ai faite en son temps.
Une seule formule à copier vers la droite, puis la ligne vers le bas.

Â+ [file name=deconcatener_20060214083343.zip size=4135]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/deconcatener_20060214083343.zip[/file]
 
Bonjour tout le monde

Jannick, tu va voir c’est super simple.

En décortiquant le code :

For Each c In Range('a1:a' & Range('a65536').End(xlUp).Row)

Signifie : pour chaque (for each) cellule (c) dans la plage (in range(...)) allant de a1 à A jusqu'à la dernière cellule non vide.


tablosplite = Split(c, ' ')

La fonction split permet de découper une chaîne de caractère en sous chaîne, il suffit pour ça de préciser la chaîne ( c) et le délimiter (espace)

Tout ceci est stocké dans un tableau en mémoire nommé ici tablosplit, mais j’aurais pu l’appeler autrement (toto= Split(c, ' '))

Un autre exemple, en a1 tu as 122 ;45 ;154 ;74

Tontableau=split(range('a1'), ';') va te séparer les sous chaine (rien a voir avec le chouchen) qui se trouve entre les ';'.

Ensuite il te faut renvoyer ce tableau :

c(1, 5).Resize(1, UBound(tablosplite) + 1) = tablosplite

c(1,5) = a partir de la cellule C en te décalant de 5 colonnes à droite, mais sur la même ligne (1,5)

redéfinit une zone(resize) ayant comme taille 1 ligne (1,…) et comme nombre de colonne le nombre de sous chaîne du tableau (UBound(tablosplite)) et renvoi le tableau (=tablosplit)

pour ne renvoyer que quelques éléments du tablosplit, il te suffit de faire une boucle :


Dim tablosplite As Variant
Dim c As Range
Dim i As Byte
Dim colonne As Byte

For Each c In Range('a1:a' & Range('a65536').End(xlUp).Row)
        colonne = 5
        tablosplite = Split(c, ' ')
       
For i = 4 To UBound(tablosplite)
                c.Offset(0, colonne) = tablosplite(i)
                colonne = colonne + 1
       
Next i
Next c


voilà, en espérant ne pas avoir été trop long et pédagogique 🙂

salut
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
221
Réponses
10
Affichages
302
Réponses
10
Affichages
428
Retour