Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

XL 2003 - extraire caractères

15 réponses
Avatar
Congelator
Bonjour tout le monde,
J'ai à nouveau besoin de vos lumières. Mon problèmes est le suivant :
1 doc Word (mal foutu !) avec plusieurs centaines de lignes
"nom1 prénom1 téléphone1 .....(nb d'espaces variables)... nom2 prénom2
téléphone2"
"nom3 prénom3 téléphone3 .........(nb d'espaces variables)........ nom4
prénom4 téléphone4"
Après quelques adaptations j'ai pu exporter ça dans XL mais ça me donne 1
cellule avec la même structure, donc 2 personnes et 2 téléphones par cellule.
Comment en extraire 1 colonne pour le nom - prénom et 1 autre pour le No de
tél ?
A B
nom1 prénom1 téléphone1
nom2 prénom2 téléphone2
etc..

Le seul point commun est un "/" dans le No de tél mais j'ai des préfixes à 4
chiffres (0033/...) et des 3 chiffres (085/...). J'ai essayé avec GAUCHE ou
DROITE mais il me manque l'astuce pour trouver le 1er espace depuis la droite
pour extraire le tél et déduire ce nb de car depuis la gauche pour extraire
le nom et prénom. Alors si vous avez une idée, merci d'avance.

--
Céd / Lausanne

10 réponses

1 2
Avatar
michdenis
Bonjour,

Que ce soit ici ou par l'intermédiaire d'un fichier que tu
publies sur cjoint.com, donne nous une idée de quelques
contenus de cellules de ta colonne A:A.
(tu peux modifier les noms ou leur numéro de téléphone!)
Est-ce que l'ordre des champs est toujours le même ?

Ce que tu veux obtenir : 2 cellules, l'un contenant le nom et prénom
et la deuxième, le numéro de téléphone ?


"Congelator" <congelator(a_effacer)@hotmail.com> a écrit dans le message de groupe de
discussion :
Bonjour tout le monde,
J'ai à nouveau besoin de vos lumières. Mon problèmes est le suivant :
1 doc Word (mal foutu !) avec plusieurs centaines de lignes
"nom1 prénom1 téléphone1 .....(nb d'espaces variables)... nom2 prénom2
téléphone2"
"nom3 prénom3 téléphone3 .........(nb d'espaces variables)........ nom4
prénom4 téléphone4"
Après quelques adaptations j'ai pu exporter ça dans XL mais ça me donne 1
cellule avec la même structure, donc 2 personnes et 2 téléphones par cellule.
Comment en extraire 1 colonne pour le nom - prénom et 1 autre pour le No de
tél ?
A B
nom1 prénom1 téléphone1
nom2 prénom2 téléphone2
etc..

Le seul point commun est un "/" dans le No de tél mais j'ai des préfixes à 4
chiffres (0033/...) et des 3 chiffres (085/...). J'ai essayé avec GAUCHE ou
DROITE mais il me manque l'astuce pour trouver le 1er espace depuis la droite
pour extraire le tél et déduire ce nb de car depuis la gauche pour extraire
le nom et prénom. Alors si vous avez une idée, merci d'avance.

--
Céd / Lausanne
Avatar
Modeste
Bonsour® Congelator avec ferveur ;o))) vous nous disiez :

J'ai à nouveau besoin de vos lumières. Mon problèmes est le suivant :
1 doc Word (mal foutu !) avec plusieurs centaines de lignes
"nom1 prénom1 téléphone1 .....(nb d'espaces variables)... nom2 prénom2
téléphone2"
"nom3 prénom3 téléphone3 .........(nb d'espaces variables)........
nom4 prénom4 téléphone4"
Après quelques adaptations j'ai pu exporter ça dans XL mais ça me
donne 1 cellule avec la même structure, donc 2 personnes et 2
téléphones par cellule. Comment en extraire 1 colonne pour le nom -
prénom et 1 autre pour le No de tél ?
A B
nom1 prénom1 téléphone1
nom2 prénom2 téléphone2
etc..

Le seul point commun est un "/" dans le No de tél mais j'ai des
préfixes à 4 chiffres (0033/...) et des 3 chiffres (085/...). J'ai
essayé avec GAUCHE ou DROITE mais il me manque l'astuce pour trouver
le 1er espace depuis la droite pour extraire le tél et déduire ce nb
de car depuis la gauche pour extraire le nom et prénom. Alors si vous
avez une idée, merci d'avance.



en VBA voir la fonction split en utilisant les séparateurs adéquats
egalement utiliser la fonction InStrRev
les solutions pouvant etre multiples, simple ou compliquées voire spécifique à chaque ligne...
le plus simple serait de donner ici via cijoint.fr, un extrait (une dizaine de lignes de ton fichier word)
;o))) en modifiant tant soit peu les données nominatives ou confidentielles...
Avatar
Congelator
voilà le fichier. J'espère que j'ai été assez clair sinon dites-le moi

http://www.cijoint.fr/cjlink.php?file=cj200909/cij833QQcy.doc

merci !
--
Céd / Lausanne


"Modeste" a écrit :

Bonsour® Congelator avec ferveur ;o))) vous nous disiez :

> J'ai à nouveau besoin de vos lumières. Mon problèmes est le suivant :
> 1 doc Word (mal foutu !) avec plusieurs centaines de lignes
> "nom1 prénom1 téléphone1 .....(nb d'espaces variables)... nom2 prénom2
> téléphone2"
> "nom3 prénom3 téléphone3 .........(nb d'espaces variables)........
> nom4 prénom4 téléphone4"
> Après quelques adaptations j'ai pu exporter ça dans XL mais ça me
> donne 1 cellule avec la même structure, donc 2 personnes et 2
> téléphones par cellule. Comment en extraire 1 colonne pour le nom -
> prénom et 1 autre pour le No de tél ?
> A B
> nom1 prénom1 téléphone1
> nom2 prénom2 téléphone2
> etc..
>
> Le seul point commun est un "/" dans le No de tél mais j'ai des
> préfixes à 4 chiffres (0033/...) et des 3 chiffres (085/...). J'ai
> essayé avec GAUCHE ou DROITE mais il me manque l'astuce pour trouver
> le 1er espace depuis la droite pour extraire le tél et déduire ce nb
> de car depuis la gauche pour extraire le nom et prénom. Alors si vous
> avez une idée, merci d'avance.

en VBA voir la fonction split en utilisant les séparateurs adéquats
egalement utiliser la fonction InStrRev
les solutions pouvant etre multiples, simple ou compliquées voire spécifique à chaque ligne...
le plus simple serait de donner ici via cijoint.fr, un extrait (une dizaine de lignes de ton fichier word)
;o))) en modifiant tant soit peu les données nominatives ou confidentielles...



Avatar
michdenis
Si dans Excel, tu as des trucs comme ceci :
Lara CROFT 071/765.43.21

Tu pourrais utiliser la commande "convertir"
du menu "Données"

A )tu sélectionnes ta plage (colonne) de cellules,
B ) tu appelles la commande "Convertir"
C ) Délimité -> séparateur "Espace" et tu obtiendras
3 colonnes :
Prénom - Nom - No. de téléphone




"Congelator" <congelator(a_effacer)@hotmail.com> a écrit dans le message de groupe de
discussion :
voilà le fichier. J'espère que j'ai été assez clair sinon dites-le moi

http://www.cijoint.fr/cjlink.php?file=cj200909/cij833QQcy.doc

merci !
--
Céd / Lausanne


"Modeste" a écrit :

Bonsour® Congelator avec ferveur ;o))) vous nous disiez :

> J'ai à nouveau besoin de vos lumières. Mon problèmes est le suivant :
> 1 doc Word (mal foutu !) avec plusieurs centaines de lignes
> "nom1 prénom1 téléphone1 .....(nb d'espaces variables)... nom2 prénom2
> téléphone2"
> "nom3 prénom3 téléphone3 .........(nb d'espaces variables)........
> nom4 prénom4 téléphone4"
> Après quelques adaptations j'ai pu exporter ça dans XL mais ça me
> donne 1 cellule avec la même structure, donc 2 personnes et 2
> téléphones par cellule. Comment en extraire 1 colonne pour le nom -
> prénom et 1 autre pour le No de tél ?
> A B
> nom1 prénom1 téléphone1
> nom2 prénom2 téléphone2
> etc..
>
> Le seul point commun est un "/" dans le No de tél mais j'ai des
> préfixes à 4 chiffres (0033/...) et des 3 chiffres (085/...). J'ai
> essayé avec GAUCHE ou DROITE mais il me manque l'astuce pour trouver
> le 1er espace depuis la droite pour extraire le tél et déduire ce nb
> de car depuis la gauche pour extraire le nom et prénom. Alors si vous
> avez une idée, merci d'avance.

en VBA voir la fonction split en utilisant les séparateurs adéquats
egalement utiliser la fonction InStrRev
les solutions pouvant etre multiples, simple ou compliquées voire spécifique à chaque
ligne...
le plus simple serait de donner ici via cijoint.fr, un extrait (une dizaine de lignes de
ton fichier word)
;o))) en modifiant tant soit peu les données nominatives ou confidentielles...



Avatar
FS
Bonsoir,

Tu pourrais utiliser une fonction Split perso, qui fonctionne dans une
feuille de calcul :

'======================== Function xlSPLIT(Arr, Optional Delim = " ", Optional Elt)
Dim cell As Range
If IsMissing(Elt) Then
xlSPLIT = Split(Arr, Delim)
On Error Resume Next
Set cell = Application.Caller
On Error GoTo 0
If cell Is Nothing Then Exit Function
If Application.Caller.Rows.Count > 1 Then _
xlSPLIT = Application.Transpose(xlSPLIT)
Else
If Elt < 0 Then
Elt = 0
ElseIf Elt > UBound(Split(Arr, Delim)) Then
Elt = UBound(Split(Arr, Delim))
End If
xlSPLIT = Split(Arr, Delim)(Elt)
End If
End Function 'fs
'========================
Après copier/coller des données Word telles que présentées dans ton
fichier exemple (coller la colonne de droite sous celle de gauche dans
Excel), tu pourrais récupérer les noms et prénoms par :

=xlsplit(A1;" ";0)

et les téls par

=xlsplit(A1;" ";1)

Le délimiteur est constitué de 2 espaces. Ça pose un problème pour Joe
Dalton, qui comporte 4 espaces entre le nom et le tél. Dans ce cas il
faut demander l'élément suivant du tableau :

=xlsplit(A1;" ";2)

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

Congelator a écrit :
voilà le fichier. J'espère que j'ai été assez clair sinon dites-le moi

http://www.cijoint.fr/cjlink.php?file=cj200909/cij833QQcy.doc

merci !


Avatar
Congelator
Pourquoi les solutions les plus simples ne sont-elles pas celles qui sautent
aux yeux... ????? Pourtant je l'ai déjà utilisées moults fois. Bon, ce n'est
pas le top vu la manière dont le fichier de base est créé mais c'est déjà un
bon début, "yapluka" refaire un peu d'ordre.

Merci
--
Céd / Lausanne


"michdenis" a écrit :

Si dans Excel, tu as des trucs comme ceci :
Lara CROFT 071/765.43.21

Tu pourrais utiliser la commande "convertir"
du menu "Données"

A )tu sélectionnes ta plage (colonne) de cellules,
B ) tu appelles la commande "Convertir"
C ) Délimité -> séparateur "Espace" et tu obtiendras
3 colonnes :
Prénom - Nom - No. de téléphone




"Congelator" <congelator(a_effacer)@hotmail.com> a écrit dans le message de groupe de
discussion :
voilà le fichier. J'espère que j'ai été assez clair sinon dites-le moi

http://www.cijoint.fr/cjlink.php?file=cj200909/cij833QQcy.doc

merci !
--
Céd / Lausanne


"Modeste" a écrit :

> Bonsour® Congelator avec ferveur ;o))) vous nous disiez :
>
> > J'ai à nouveau besoin de vos lumières. Mon problèmes est le suivant :
> > 1 doc Word (mal foutu !) avec plusieurs centaines de lignes
> > "nom1 prénom1 téléphone1 .....(nb d'espaces variables)... nom2 prénom2
> > téléphone2"
> > "nom3 prénom3 téléphone3 .........(nb d'espaces variables)........
> > nom4 prénom4 téléphone4"
> > Après quelques adaptations j'ai pu exporter ça dans XL mais ça me
> > donne 1 cellule avec la même structure, donc 2 personnes et 2
> > téléphones par cellule. Comment en extraire 1 colonne pour le nom -
> > prénom et 1 autre pour le No de tél ?
> > A B
> > nom1 prénom1 téléphone1
> > nom2 prénom2 téléphone2
> > etc..
> >
> > Le seul point commun est un "/" dans le No de tél mais j'ai des
> > préfixes à 4 chiffres (0033/...) et des 3 chiffres (085/...). J'ai
> > essayé avec GAUCHE ou DROITE mais il me manque l'astuce pour trouver
> > le 1er espace depuis la droite pour extraire le tél et déduire ce nb
> > de car depuis la gauche pour extraire le nom et prénom. Alors si vous
> > avez une idée, merci d'avance.
>
> en VBA voir la fonction split en utilisant les séparateurs adéquats
> egalement utiliser la fonction InStrRev
> les solutions pouvant etre multiples, simple ou compliquées voire spécifique à chaque
> ligne...
> le plus simple serait de donner ici via cijoint.fr, un extrait (une dizaine de lignes de
> ton fichier word)
> ;o))) en modifiant tant soit peu les données nominatives ou confidentielles...
>



Avatar
Congelator
Je suis un vrai nul en VBA, donc j'ai recopié ta fonction mais je ne peux pas
l'exécuter vu que c'est une fonction... juste ??? et en collant =xlsplit(A1;"
";0)
j'ai #NOM?. J'ai été cocher tout ce que j'ai pu dans les macros
complémentaires puis enregistrer mon document mais rien ne change. Qu'est-ce
que je fais de faux (ou que je n'ai pas fait...) ?

merci de ton aide
--
Céd / Lausanne


"FS" a écrit :

Bonsoir,

Tu pourrais utiliser une fonction Split perso, qui fonctionne dans une
feuille de calcul :

'======================== > Function xlSPLIT(Arr, Optional Delim = " ", Optional Elt)
Dim cell As Range
If IsMissing(Elt) Then
xlSPLIT = Split(Arr, Delim)
On Error Resume Next
Set cell = Application.Caller
On Error GoTo 0
If cell Is Nothing Then Exit Function
If Application.Caller.Rows.Count > 1 Then _
xlSPLIT = Application.Transpose(xlSPLIT)
Else
If Elt < 0 Then
Elt = 0
ElseIf Elt > UBound(Split(Arr, Delim)) Then
Elt = UBound(Split(Arr, Delim))
End If
xlSPLIT = Split(Arr, Delim)(Elt)
End If
End Function 'fs
'======================== >
Après copier/coller des données Word telles que présentées dans ton
fichier exemple (coller la colonne de droite sous celle de gauche dans
Excel), tu pourrais récupérer les noms et prénoms par :

=xlsplit(A1;" ";0)

et les téls par

=xlsplit(A1;" ";1)

Le délimiteur est constitué de 2 espaces. Ça pose un problème pour Joe
Dalton, qui comporte 4 espaces entre le nom et le tél. Dans ce cas il
faut demander l'élément suivant du tableau :

=xlsplit(A1;" ";2)

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

Congelator a écrit :
> voilà le fichier. J'espère que j'ai été assez clair sinon dites-le moi
>
> http://www.cijoint.fr/cjlink.php?file=cj200909/cij833QQcy.doc
>
> merci !



Avatar
FS
Bonjour,

Le code de la fonction doit être recopié dans un module ordinaire (ni
module de feuille ni module ThisWorkbook).
Il n'y a rien d'autre à faire, à moins que tu veuilles que la fonction
soit disponible dans d'autres classeurs. Dans ce cas on pourrait en
effet penser à une macro complémentaire. Redis si besoin.
En attendant un exemple de ce que je te propose
(testé avec Excel 2003) :

http://www.cijoint.fr/cjlink.php?file=cj200909/cijLfewNFm.xls

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

Congelator a écrit :
Je suis un vrai nul en VBA, donc j'ai recopié ta fonction mais je ne peux pas
l'exécuter vu que c'est une fonction... juste ??? et en collant =xlsplit(A1;"
";0)
j'ai #NOM?. J'ai été cocher tout ce que j'ai pu dans les macros
complémentaires puis enregistrer mon document mais rien ne change. Qu'est-ce
que je fais de faux (ou que je n'ai pas fait...) ?

merci de ton aide


Avatar
michdenis
Bonjour Frédéric,

Dans le fichier soumis, certains numéros de téléphone
sont précédés d'un espace... c'est prévu ?


Salutations


"FS" a écrit dans le message de groupe de discussion :

Bonjour,

Le code de la fonction doit être recopié dans un module ordinaire (ni
module de feuille ni module ThisWorkbook).
Il n'y a rien d'autre à faire, à moins que tu veuilles que la fonction
soit disponible dans d'autres classeurs. Dans ce cas on pourrait en
effet penser à une macro complémentaire. Redis si besoin.
En attendant un exemple de ce que je te propose
(testé avec Excel 2003) :

http://www.cijoint.fr/cjlink.php?file=cj200909/cijLfewNFm.xls

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

Congelator a écrit :
Je suis un vrai nul en VBA, donc j'ai recopié ta fonction mais je ne peux pas
l'exécuter vu que c'est une fonction... juste ??? et en collant =xlsplit(A1;"
";0)
j'ai #NOM?. J'ai été cocher tout ce que j'ai pu dans les macros
complémentaires puis enregistrer mon document mais rien ne change. Qu'est-ce
que je fais de faux (ou que je n'ai pas fait...) ?

merci de ton aide


Avatar
Congelator
Bonjour Frédéric,

ça maaaaaarche !! Merci beaucoup pour ce code, il va m'être utile.
Michdenis et toi êtes des CHEFS !!
--
Céd / Lausanne


"FS" a écrit :

Bonjour,

Le code de la fonction doit être recopié dans un module ordinaire (ni
module de feuille ni module ThisWorkbook).
Il n'y a rien d'autre à faire, à moins que tu veuilles que la fonction
soit disponible dans d'autres classeurs. Dans ce cas on pourrait en
effet penser à une macro complémentaire. Redis si besoin.
En attendant un exemple de ce que je te propose
(testé avec Excel 2003) :

http://www.cijoint.fr/cjlink.php?file=cj200909/cijLfewNFm.xls

FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/

Congelator a écrit :
> Je suis un vrai nul en VBA, donc j'ai recopié ta fonction mais je ne peux pas
> l'exécuter vu que c'est une fonction... juste ??? et en collant =xlsplit(A1;"
> ";0)
> j'ai #NOM?. J'ai été cocher tout ce que j'ai pu dans les macros
> complémentaires puis enregistrer mon document mais rien ne change. Qu'est-ce
> que je fais de faux (ou que je n'ai pas fait...) ?
>
> merci de ton aide



1 2