extraire un groupe de lettres

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
 

Gérard DEZAMIS

XLDnaute Accro
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
 

Jacques87

XLDnaute Accro
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
 

Hervé

XLDnaute Barbatruc
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
 

andré

XLDnaute Barbatruc
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]
 

Hervé

XLDnaute Barbatruc
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
 

Discussions similaires

Statistiques des forums

Discussions
312 545
Messages
2 089 487
Membres
104 183
dernier inscrit
bast.coud