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

extraire partie d'une cellule et la copier dans une autre

14 réponses
Avatar
cegeffroy
Bonsoir,

Ca fait deux heures que je me casse la tete et la j'avoue que je
commence a m'enerver

Je m'explique.
J'ai dans une colonne E ceci :
M ou Mme TOTO
M=2E TUTU
Madame TITI
Melle TETE

J'aimerais pouvoir extraire les civilit=E9 =E0 savoir M ou Mme, M.,
Madame, Melle et les copier dans une autre colonnes.

Est ce possible en macro ou en formule ?

Merci d'avance pour votre aide

10 réponses

1 2
Avatar
Daniel.j
Bonjour
Essaie avec Donnees=>Convertir (separateur espace)

--
Daniel
FAQ MPFE
http://dj.joss.free.fr/faq.htm" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://dj.joss.free.fr/faq.htm

VBAXL
http://dj.joss.free.fr/


a écrit dans le message de news:

Bonsoir,

Ca fait deux heures que je me casse la tete et la j'avoue que je
commence a m'enerver

Je m'explique.
J'ai dans une colonne E ceci :
M ou Mme TOTO
M. TUTU
Madame TITI
Melle TETE

J'aimerais pouvoir extraire les civilité à savoir M ou Mme, M.,
Madame, Melle et les copier dans une autre colonnes.

Est ce possible en macro ou en formule ?

Merci d'avance pour votre aide
Avatar
FREDSCOPE
Bonsoir,

En colonne F, la formule =GAUCHE(E1;CHERCHE(" ";E1;1)-1) doit faire
l'affaire pour les civilité simples.

Pour les M ou Mme, M et Mme, je pense qu'il suffirait de compter le
nombre d'espaces dans la chaine et de décaler troisième paramètre de
la fonction Cherche.

Ou bien traiter ces cas la, s'ils ne sont pas nombreux par une
fonction si.

FRED

On 13 sep, 17:44, wrote:
Bonsoir,

Ca fait deux heures que je me casse la tete et la j'avoue que je
commence a m'enerver

Je m'explique.
J'ai dans une colonne E ceci :
M ou Mme TOTO
M. TUTU
Madame TITI
Melle TETE

J'aimerais pouvoir extraire les civilité à savoir M ou Mme, M.,
Madame, Melle et les copier dans une autre colonnes.

Est ce possible en macro ou en formule ?

Merci d'avance pour votre aide


Avatar
cegeffroy
Bonjour,

Merci pour cette idée et cette solution mais hélas, cela ne suffira
pas...

De plus j'ai environ 400 lignes donc...

Il n'y a pas moyen de régler ce probleme sous forme de macro ??

Merci encore

On 13 sep, 19:46, FREDSCOPE wrote:
Bonsoir,

En colonne F, la formule =GAUCHE(E1;CHERCHE(" ";E1;1)-1) doit faire
l'affaire pour les civilité simples.

Pour les M ou Mme, M et Mme, je pense qu'il suffirait de compter le
nombre d'espaces dans la chaine et de décaler troisième paramètre de
la fonction Cherche.

Ou bien traiter ces cas la, s'ils ne sont pas nombreux par une
fonction si.

FRED

On 13 sep, 17:44, wrote:



Bonsoir,

Ca fait deux heures que je me casse la tete et la j'avoue que je
commence a m'enerver

Je m'explique.
J'ai dans une colonne E ceci :
M ou Mme TOTO
M. TUTU
Madame TITI
Melle TETE

J'aimerais pouvoir extraire les civilité à savoir M ou Mme, M.,
Madame, Melle et les copier dans une autre colonnes.

Est ce possible en macro ou en formule ?

Merci d'avance pour votre aide- Masquer le texte des messages précé dents -


- Afficher le texte des messages précédents -



Avatar
garnote
Bonjour, Bonjour,

Une piste :
Sélectionne tes entrées de la colonne E et lance cette macro.
Elle met dans la colonne F une des civilités entrées dans le Array
de la macro. La macro utilise LTrim(c) pour prévoir le coup où
il y aurait des espaces avant les civilités.

Sub Extraire_Civilites()
Dim ch
Dim c As Range
Dim i As Single
ch = Array("M ou Mme", "M.", "Madame", "Melle")
For Each c In Selection
For i = 0 To UBound(ch)
If Left(LTrim(c), Len(ch(i))) = ch(i) Then c.Offset(0, 1) = ch(i)
Next i
Next c
End Sub

Serge



a écrit dans le message de news:
Bonjour,

Merci pour cette idée et cette solution mais hélas, cela ne suffira
pas...

De plus j'ai environ 400 lignes donc...

Il n'y a pas moyen de régler ce probleme sous forme de macro ??

Merci encore

On 13 sep, 19:46, FREDSCOPE wrote:
Bonsoir,

En colonne F, la formule =GAUCHE(E1;CHERCHE(" ";E1;1)-1) doit faire
l'affaire pour les civilité simples.

Pour les M ou Mme, M et Mme, je pense qu'il suffirait de compter le
nombre d'espaces dans la chaine et de décaler troisième paramètre de
la fonction Cherche.

Ou bien traiter ces cas la, s'ils ne sont pas nombreux par une
fonction si.

FRED

On 13 sep, 17:44, wrote:



Bonsoir,

Ca fait deux heures que je me casse la tete et la j'avoue que je
commence a m'enerver

Je m'explique.
J'ai dans une colonne E ceci :
M ou Mme TOTO
M. TUTU
Madame TITI
Melle TETE

J'aimerais pouvoir extraire les civilité à savoir M ou Mme, M.,
Madame, Melle et les copier dans une autre colonnes.

Est ce possible en macro ou en formule ?

Merci d'avance pour votre aide- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -



Avatar
garnote
Ou bien ( plus rapide ? ) :

Sub Extraire_Civilites()
Dim ch
Dim c As Range
Dim i As Byte
For Each c In Selection
For Each ch In Array("M ou Mme", "M.", "Madame", "Melle")
If Left(LTrim(c), Len(ch)) = ch Then
c.Offset(0, 1) = ch
Exit For
End If
Next ch
Next c
End Sub

Serge



"garnote" a écrit dans le message de news:
Bonjour, Bonjour,

Une piste :
Sélectionne tes entrées de la colonne E et lance cette macro.
Elle met dans la colonne F une des civilités entrées dans le Array
de la macro. La macro utilise LTrim(c) pour prévoir le coup où
il y aurait des espaces avant les civilités.

Sub Extraire_Civilites()
Dim ch
Dim c As Range
Dim i As Single
ch = Array("M ou Mme", "M.", "Madame", "Melle")
For Each c In Selection
For i = 0 To UBound(ch)
If Left(LTrim(c), Len(ch(i))) = ch(i) Then c.Offset(0, 1) = ch(i)
Next i
Next c
End Sub

Serge



a écrit dans le message de news:
Bonjour,

Merci pour cette idée et cette solution mais hélas, cela ne suffira
pas...

De plus j'ai environ 400 lignes donc...

Il n'y a pas moyen de régler ce probleme sous forme de macro ??

Merci encore

On 13 sep, 19:46, FREDSCOPE wrote:
Bonsoir,

En colonne F, la formule =GAUCHE(E1;CHERCHE(" ";E1;1)-1) doit faire
l'affaire pour les civilité simples.

Pour les M ou Mme, M et Mme, je pense qu'il suffirait de compter le
nombre d'espaces dans la chaine et de décaler troisième paramètre de
la fonction Cherche.

Ou bien traiter ces cas la, s'ils ne sont pas nombreux par une
fonction si.

FRED

On 13 sep, 17:44, wrote:



Bonsoir,

Ca fait deux heures que je me casse la tete et la j'avoue que je
commence a m'enerver

Je m'explique.
J'ai dans une colonne E ceci :
M ou Mme TOTO
M. TUTU
Madame TITI
Melle TETE

J'aimerais pouvoir extraire les civilité à savoir M ou Mme, M.,
Madame, Melle et les copier dans une autre colonnes.

Est ce possible en macro ou en formule ?

Merci d'avance pour votre aide- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -








Avatar
cegeffroy
Merci pour cette réponse on est pas loin du bon résultat

En creusant un peu dans ma petite tête, j'ai trouvé ce matin une
formule SI pouvant résoudre mon problème
=SI(NB.SI(E2;"*M ou Mme*")>0;"Monsieur ou
Madame";SI(NB.SI(E2;"*Mme*")>0;"Madame";SI(NB.SI(E2;"*M.*")>0;"Monsieur";SI (NB.SI(E2;"*Madame*")>0;"Madame";SI(NB.SI(E2;"*Melle*")>0;"Mademoiselle";SI (NB.SI(E2;"*Monsieur*")>0;"Monsieur";""))))))

Le problème est que je n'arrive pas a intégrer la formule dans une
macro !

Pour votre solution, ce qui m'embete c'est le fait que lorsque la bete
trouve les civilités, elles sont copiés sans modifications.
Je m'explique avec la formule SI que j'ai mis au dessus, si on trouve
M ou Mme en E2, alors j'aurai comme résultat dans la cellule P2
Monsieur ou Madame.

Bon je sais c'est pas simple ce que je demande mais bon...

Le tout est de savoir comment integrer la formule SI dans la macro ou
bien alors transformer en macro la formule SI ...

Merci d'avance

On 14 sep, 10:22, "garnote" wrote:
Ou bien ( plus rapide ? ) :

Sub Extraire_Civilites()
Dim ch
Dim c As Range
Dim i As Byte
For Each c In Selection
For Each ch In Array("M ou Mme", "M.", "Madame", "Melle")
If Left(LTrim(c), Len(ch)) = ch Then
c.Offset(0, 1) = ch
Exit For
End If
Next ch
Next c
End Sub

Serge

"garnote" a écrit dans le message de ne ws:



Bonjour, Bonjour,

Une piste :
Sélectionne tes entrées de la colonne E et lance cette macro.
Elle met dans la colonne F une des civilités entrées dans le Array
de la macro. La macro utilise LTrim(c) pour prévoir le coup où
il y aurait des espaces avant les civilités.

Sub Extraire_Civilites()
Dim ch
Dim c As Range
Dim i As Single
ch = Array("M ou Mme", "M.", "Madame", "Melle")
For Each c In Selection
For i = 0 To UBound(ch)
If Left(LTrim(c), Len(ch(i))) = ch(i) Then c.Offset(0, 1) = ch(i)
Next i
Next c
End Sub

Serge

a écrit dans le message de news: 1189750133.74
Bonjour,

Merci pour cette idée et cette solution mais hélas, cela ne suffira
pas...

De plus j'ai environ 400 lignes donc...

Il n'y a pas moyen de régler ce probleme sous forme de macro ??

Merci encore

On 13 sep, 19:46, FREDSCOPE wrote:
Bonsoir,

En colonne F, la formule =GAUCHE(E1;CHERCHE(" ";E1;1)-1) doit faire
l'affaire pour les civilité simples.

Pour les M ou Mme, M et Mme, je pense qu'il suffirait de compter le
nombre d'espaces dans la chaine et de décaler troisième paramètr e de
la fonction Cherche.

Ou bien traiter ces cas la, s'ils ne sont pas nombreux par une
fonction si.

FRED

On 13 sep, 17:44, wrote:

Bonsoir,

Ca fait deux heures que je me casse la tete et la j'avoue que je
commence a m'enerver

Je m'explique.
J'ai dans une colonne E ceci :
M ou Mme TOTO
M. TUTU
Madame TITI
Melle TETE

J'aimerais pouvoir extraire les civilité à savoir M ou Mme, M.,
Madame, Melle et les copier dans une autre colonnes.

Est ce possible en macro ou en formule ?

Merci d'avance pour votre aide- Masquer le texte des messages préc édents -


- Afficher le texte des messages précédents -- Masquer le texte de s messages précédents -



- Afficher le texte des messages précédents -





Avatar
JB
Bonjour,

Dans un module alt+F11 puis insertion/module

Function Civilite(chaine)
Tcivilite = Array("M. ou Mme ", "M. ", "Mme ", "Mlle ")
Tcivilite2 = Array("Monsieur ou Madame ", "Monsieur ", "Madame ",
"Mademoiselle ")
For i = 0 To UBound(Tcivilite)
If UCase(Left(chaine, Len(Tcivilite(i)))) = UCase(Tcivilite(i))
Then
Civilite = Tcivilite2(i)
Exit Function
End If
Next i
Civilite = ""
End Function

Dans le tableur : =Civilite(A1)

http://cjoint.com/?jolvNpl5Dx

JB
http://boisgontierjacques.free.fr/

On 14 sep, 10:44, wrote:
Merci pour cette réponse on est pas loin du bon résultat

En creusant un peu dans ma petite tête, j'ai trouvé ce matin une
formule SI pouvant résoudre mon problème
=SI(NB.SI(E2;"*M ou Mme*")>0;"Monsieur ou
Madame";SI(NB.SI(E2;"*Mme*")>0;"Madame";SI(NB.SI(E2;"*M.*")>0;"Monsieur"; SI­(NB.SI(E2;"*Madame*")>0;"Madame";SI(NB.SI(E2;"*Melle*")>0;"Mademoisell e";SI­(NB.SI(E2;"*Monsieur*")>0;"Monsieur";""))))))

Le problème est que je n'arrive pas a intégrer la formule dans une
macro !

Pour votre solution, ce qui m'embete c'est le fait que lorsque la bete
trouve les civilités, elles sont copiés sans modifications.
Je m'explique avec la formule SI que j'ai mis au dessus, si on trouve
M ou Mme en E2, alors j'aurai comme résultat dans la cellule P2
Monsieur ou Madame.

Bon je sais c'est pas simple ce que je demande mais bon...

Le tout est de savoir comment integrer la formule SI dans la macro ou
bien alors transformer en macro la formule SI ...

Merci d'avance

On 14 sep, 10:22, "garnote" wrote:



Ou bien ( plus rapide ? ) :

Sub Extraire_Civilites()
Dim ch
Dim c As Range
Dim i As Byte
For Each c In Selection
For Each ch In Array("M ou Mme", "M.", "Madame", "Melle")
If Left(LTrim(c), Len(ch)) = ch Then
c.Offset(0, 1) = ch
Exit For
End If
Next ch
Next c
End Sub

Serge

"garnote" a écrit dans le message de news:

Bonjour, Bonjour,

Une piste :
Sélectionne tes entrées de la colonne E et lance cette macro.
Elle met dans la colonne F une des civilités entrées dans le Array
de la macro. La macro utilise LTrim(c) pour prévoir le coup où
il y aurait des espaces avant les civilités.

Sub Extraire_Civilites()
Dim ch
Dim c As Range
Dim i As Single
ch = Array("M ou Mme", "M.", "Madame", "Melle")
For Each c In Selection
For i = 0 To UBound(ch)
If Left(LTrim(c), Len(ch(i))) = ch(i) Then c.Offset(0, 1 ) = ch(i)
Next i
Next c
End Sub

Serge

a écrit dans le message de news: 1189750133.
Bonjour,

Merci pour cette idée et cette solution mais hélas, cela ne suffi ra
pas...

De plus j'ai environ 400 lignes donc...

Il n'y a pas moyen de régler ce probleme sous forme de macro ??

Merci encore

On 13 sep, 19:46, FREDSCOPE wrote:
Bonsoir,

En colonne F, la formule =GAUCHE(E1;CHERCHE(" ";E1;1)-1) doit faire
l'affaire pour les civilité simples.

Pour les M ou Mme, M et Mme, je pense qu'il suffirait de compter le
nombre d'espaces dans la chaine et de décaler troisième paramè tre de
la fonction Cherche.

Ou bien traiter ces cas la, s'ils ne sont pas nombreux par une
fonction si.

FRED

On 13 sep, 17:44, wrote:

Bonsoir,

Ca fait deux heures que je me casse la tete et la j'avoue que je
commence a m'enerver

Je m'explique.
J'ai dans une colonne E ceci :
M ou Mme TOTO
M. TUTU
Madame TITI
Melle TETE

J'aimerais pouvoir extraire les civilité à savoir M ou Mme, M.,
Madame, Melle et les copier dans une autre colonnes.

Est ce possible en macro ou en formule ?

Merci d'avance pour votre aide- Masquer le texte des messages pr écédents -


- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -



- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -






Avatar
cegeffroy
Merci pour cette fonction mais je ne comprends pas comment ca doit
fonctionner !

Dois je l'inserer dans ma macro ?
Si je lance la fonction ci-dessus, je ne vois pas les resultats
En fait les Monsieur ou Madame bidule sont dans la colonne E de la
feuille LIST_ADM (2)
Les civilités une fois extraites doivent être reportées dans la
colonne P de la feuille LIST_ADM (2)

Merci pour votre aide précieuse

On 14 sep, 11:21, JB wrote:
Bonjour,

Dans un module alt+F11 puis insertion/module

Function Civilite(chaine)
Tcivilite = Array("M. ou Mme ", "M. ", "Mme ", "Mlle ")
Tcivilite2 = Array("Monsieur ou Madame ", "Monsieur ", "Madame ",
"Mademoiselle ")
For i = 0 To UBound(Tcivilite)
If UCase(Left(chaine, Len(Tcivilite(i)))) = UCase(Tcivilite(i))
Then
Civilite = Tcivilite2(i)
Exit Function
End If
Next i
Civilite = ""
End Function

Dans le tableur : =Civilite(A1)

http://cjoint.com/?jolvNpl5Dx

JBhttp://boisgontierjacques.free.fr/

On 14 sep, 10:44, wrote:



Merci pour cette réponse on est pas loin du bon résultat

En creusant un peu dans ma petite tête, j'ai trouvé ce matin une
formule SI pouvant résoudre mon problème
=SI(NB.SI(E2;"*M ou Mme*")>0;"Monsieur ou
Madame";SI(NB.SI(E2;"*Mme*")>0;"Madame";SI(NB.SI(E2;"*M.*")>0;"Monsieur ";SI­­(NB.SI(E2;"*Madame*")>0;"Madame";SI(NB.SI(E2;"*Melle*")>0;"Mademo iselle";S­I­(NB.SI(E2;"*Monsieur*")>0;"Monsieur";""))))))

Le problème est que je n'arrive pas a intégrer la formule dans une
macro !

Pour votre solution, ce qui m'embete c'est le fait que lorsque la bete
trouve les civilités, elles sont copiés sans modifications.
Je m'explique avec la formule SI que j'ai mis au dessus, si on trouve
M ou Mme en E2, alors j'aurai comme résultat dans la cellule P2
Monsieur ou Madame.

Bon je sais c'est pas simple ce que je demande mais bon...

Le tout est de savoir comment integrer la formule SI dans la macro ou
bien alors transformer en macro la formule SI ...

Merci d'avance

On 14 sep, 10:22, "garnote" wrote:

Ou bien ( plus rapide ? ) :

Sub Extraire_Civilites()
Dim ch
Dim c As Range
Dim i As Byte
For Each c In Selection
For Each ch In Array("M ou Mme", "M.", "Madame", "Melle")
If Left(LTrim(c), Len(ch)) = ch Then
c.Offset(0, 1) = ch
Exit For
End If
Next ch
Next c
End Sub

Serge

"garnote" a écrit dans le message d e news:

Bonjour, Bonjour,

Une piste :
Sélectionne tes entrées de la colonne E et lance cette macro.
Elle met dans la colonne F une des civilités entrées dans le Ar ray
de la macro. La macro utilise LTrim(c) pour prévoir le coup où
il y aurait des espaces avant les civilités.

Sub Extraire_Civilites()
Dim ch
Dim c As Range
Dim i As Single
ch = Array("M ou Mme", "M.", "Madame", "Melle")
For Each c In Selection
For i = 0 To UBound(ch)
If Left(LTrim(c), Len(ch(i))) = ch(i) Then c.Offset(0, 1) = ch(i)
Next i
Next c
End Sub

Serge

a écrit dans le message de news: 118975013
Bonjour,

Merci pour cette idée et cette solution mais hélas, cela ne suf fira
pas...

De plus j'ai environ 400 lignes donc...

Il n'y a pas moyen de régler ce probleme sous forme de macro ??

Merci encore

On 13 sep, 19:46, FREDSCOPE wrote:
Bonsoir,

En colonne F, la formule =GAUCHE(E1;CHERCHE(" ";E1;1)-1) doit fa ire
l'affaire pour les civilité simples.

Pour les M ou Mme, M et Mme, je pense qu'il suffirait de compter le
nombre d'espaces dans la chaine et de décaler troisième param ètre de
la fonction Cherche.

Ou bien traiter ces cas la, s'ils ne sont pas nombreux par une
fonction si.

FRED

On 13 sep, 17:44, wrote:

Bonsoir,

Ca fait deux heures que je me casse la tete et la j'avoue que je
commence a m'enerver

Je m'explique.
J'ai dans une colonne E ceci :
M ou Mme TOTO
M. TUTU
Madame TITI
Melle TETE

J'aimerais pouvoir extraire les civilité à savoir M ou Mme, M.,
Madame, Melle et les copier dans une autre colonnes.

Est ce possible en macro ou en formule ?

Merci d'avance pour votre aide- Masquer le texte des messages pr écédents -


- Afficher le texte des messages précédents -- Masquer le text e des messages précédents -



- Afficher le texte des messages précédents -- Masquer le texte d es messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -







Avatar
JB
As tu regardé l'exemple en PJ?

http://cjoint.com/?jomMaNuiR0

JB

On 14 sep, 12:00, wrote:
Merci pour cette fonction mais je ne comprends pas comment ca doit
fonctionner !

Dois je l'inserer dans ma macro ?
Si je lance la fonction ci-dessus, je ne vois pas les resultats
En fait les Monsieur ou Madame bidule sont dans la colonne E de la
feuille LIST_ADM (2)
Les civilités une fois extraites doivent être reportées dans la
colonne P de la feuille LIST_ADM (2)

Merci pour votre aide précieuse

On 14 sep, 11:21, JB wrote:



Bonjour,

Dans un module alt+F11 puis insertion/module

Function Civilite(chaine)
Tcivilite = Array("M. ou Mme ", "M. ", "Mme ", "Mlle ")
Tcivilite2 = Array("Monsieur ou Madame ", "Monsieur ", "Madame ",
"Mademoiselle ")
For i = 0 To UBound(Tcivilite)
If UCase(Left(chaine, Len(Tcivilite(i)))) = UCase(Tcivilite(i))
Then
Civilite = Tcivilite2(i)
Exit Function
End If
Next i
Civilite = ""
End Function

Dans le tableur : =Civilite(A1)

http://cjoint.com/?jolvNpl5Dx

JBhttp://boisgontierjacques.free.fr/

On 14 sep, 10:44, wrote:

Merci pour cette réponse on est pas loin du bon résultat

En creusant un peu dans ma petite tête, j'ai trouvé ce matin une
formule SI pouvant résoudre mon problème
=SI(NB.SI(E2;"*M ou Mme*")>0;"Monsieur ou
Madame";SI(NB.SI(E2;"*Mme*")>0;"Madame";SI(NB.SI(E2;"*M.*")>0;"Monsie ur";SI­­­(NB.SI(E2;"*Madame*")>0;"Madame";SI(NB.SI(E2;"*Melle*")>0;"M ademoiselle";­S­I­(NB.SI(E2;"*Monsieur*")>0;"Monsieur";""))))))

Le problème est que je n'arrive pas a intégrer la formule dans une
macro !

Pour votre solution, ce qui m'embete c'est le fait que lorsque la bete
trouve les civilités, elles sont copiés sans modifications.
Je m'explique avec la formule SI que j'ai mis au dessus, si on trouve
M ou Mme en E2, alors j'aurai comme résultat dans la cellule P2
Monsieur ou Madame.

Bon je sais c'est pas simple ce que je demande mais bon...

Le tout est de savoir comment integrer la formule SI dans la macro ou
bien alors transformer en macro la formule SI ...

Merci d'avance

On 14 sep, 10:22, "garnote" wrote:

Ou bien ( plus rapide ? ) :

Sub Extraire_Civilites()
Dim ch
Dim c As Range
Dim i As Byte
For Each c In Selection
For Each ch In Array("M ou Mme", "M.", "Madame", "Melle")
If Left(LTrim(c), Len(ch)) = ch Then
c.Offset(0, 1) = ch
Exit For
End If
Next ch
Next c
End Sub

Serge

"garnote" a écrit dans le message de news:

Bonjour, Bonjour,

Une piste :
Sélectionne tes entrées de la colonne E et lance cette macro.
Elle met dans la colonne F une des civilités entrées dans le Array
de la macro. La macro utilise LTrim(c) pour prévoir le coup o ù
il y aurait des espaces avant les civilités.

Sub Extraire_Civilites()
Dim ch
Dim c As Range
Dim i As Single
ch = Array("M ou Mme", "M.", "Madame", "Melle")
For Each c In Selection
For i = 0 To UBound(ch)
If Left(LTrim(c), Len(ch(i))) = ch(i) Then c.Offset( 0, 1) = ch(i)
Next i
Next c
End Sub

Serge

a écrit dans le message de news: 1189750
Bonjour,

Merci pour cette idée et cette solution mais hélas, cela ne s uffira
pas...

De plus j'ai environ 400 lignes donc...

Il n'y a pas moyen de régler ce probleme sous forme de macro ??

Merci encore

On 13 sep, 19:46, FREDSCOPE wrote:
Bonsoir,

En colonne F, la formule =GAUCHE(E1;CHERCHE(" ";E1;1)-1) doit faire
l'affaire pour les civilité simples.

Pour les M ou Mme, M et Mme, je pense qu'il suffirait de compter le
nombre d'espaces dans la chaine et de décaler troisième para mètre de
la fonction Cherche.

Ou bien traiter ces cas la, s'ils ne sont pas nombreux par une
fonction si.

FRED

On 13 sep, 17:44, wrote:

Bonsoir,

Ca fait deux heures que je me casse la tete et la j'avoue que je
commence a m'enerver

Je m'explique.
J'ai dans une colonne E ceci :
M ou Mme TOTO
M. TUTU
Madame TITI
Melle TETE

J'aimerais pouvoir extraire les civilité à savoir M ou Mme , M.,
Madame, Melle et les copier dans une autre colonnes.

Est ce possible en macro ou en formule ?

Merci d'avance pour votre aide- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -- Masquer le te xte des messages précédents -



- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte d es messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -








Avatar
cegeffroy
OUi j'ai vu la pièce jointe

J'ai fais ALT+F11

mais quand j'appuie sur execution, il m'ouvre une boite de dialogue
Macros
avec des boutons a gauche tels que creer executer...



On 14 sep, 12:38, JB wrote:
As tu regardé l'exemple en PJ?

http://cjoint.com/?jomMaNuiR0

JB

On 14 sep, 12:00, wrote:



Merci pour cette fonction mais je ne comprends pas comment ca doit
fonctionner !

Dois je l'inserer dans ma macro ?
Si je lance la fonction ci-dessus, je ne vois pas les resultats
En fait les Monsieur ou Madame bidule sont dans la colonne E de la
feuille LIST_ADM (2)
Les civilités une fois extraites doivent être reportées dans la
colonne P de la feuille LIST_ADM (2)

Merci pour votre aide précieuse

On 14 sep, 11:21, JB wrote:

Bonjour,

Dans un module alt+F11 puis insertion/module

Function Civilite(chaine)
Tcivilite = Array("M. ou Mme ", "M. ", "Mme ", "Mlle ")
Tcivilite2 = Array("Monsieur ou Madame ", "Monsieur ", "Madame ",
"Mademoiselle ")
For i = 0 To UBound(Tcivilite)
If UCase(Left(chaine, Len(Tcivilite(i)))) = UCase(Tcivilite(i))
Then
Civilite = Tcivilite2(i)
Exit Function
End If
Next i
Civilite = ""
End Function

Dans le tableur : =Civilite(A1)

http://cjoint.com/?jolvNpl5Dx

JBhttp://boisgontierjacques.free.fr/

On 14 sep, 10:44, wrote:

Merci pour cette réponse on est pas loin du bon résultat

En creusant un peu dans ma petite tête, j'ai trouvé ce matin une
formule SI pouvant résoudre mon problème
=SI(NB.SI(E2;"*M ou Mme*")>0;"Monsieur ou
Madame";SI(NB.SI(E2;"*Mme*")>0;"Madame";SI(NB.SI(E2;"*M.*")>0;"Mons ieur";SI­­­­(NB.SI(E2;"*Madame*")>0;"Madame";SI(NB.SI(E2;"*Melle*") >0;"Mademoiselle"­;­S­I­(NB.SI(E2;"*Monsieur*")>0;"Monsieur";"")))) ))

Le problème est que je n'arrive pas a intégrer la formule dans une
macro !

Pour votre solution, ce qui m'embete c'est le fait que lorsque la b ete
trouve les civilités, elles sont copiés sans modifications.
Je m'explique avec la formule SI que j'ai mis au dessus, si on trou ve
M ou Mme en E2, alors j'aurai comme résultat dans la cellule P2
Monsieur ou Madame.

Bon je sais c'est pas simple ce que je demande mais bon...

Le tout est de savoir comment integrer la formule SI dans la macro ou
bien alors transformer en macro la formule SI ...

Merci d'avance

On 14 sep, 10:22, "garnote" wrote:

Ou bien ( plus rapide ? ) :

Sub Extraire_Civilites()
Dim ch
Dim c As Range
Dim i As Byte
For Each c In Selection
For Each ch In Array("M ou Mme", "M.", "Madame", "Melle")
If Left(LTrim(c), Len(ch)) = ch Then
c.Offset(0, 1) = ch
Exit For
End If
Next ch
Next c
End Sub

Serge

"garnote" a écrit dans le messa ge de news:

Bonjour, Bonjour,

Une piste :
Sélectionne tes entrées de la colonne E et lance cette macr o.
Elle met dans la colonne F une des civilités entrées dans l e Array
de la macro. La macro utilise LTrim(c) pour prévoir le coup o ù
il y aurait des espaces avant les civilités.

Sub Extraire_Civilites()
Dim ch
Dim c As Range
Dim i As Single
ch = Array("M ou Mme", "M.", "Madame", "Melle")
For Each c In Selection
For i = 0 To UBound(ch)
If Left(LTrim(c), Len(ch(i))) = ch(i) Then c.Offse t(0, 1) = ch(i)
Next i
Next c
End Sub

Serge

a écrit dans le message de news: 11897
Bonjour,

Merci pour cette idée et cette solution mais hélas, cela ne suffira
pas...

De plus j'ai environ 400 lignes donc...

Il n'y a pas moyen de régler ce probleme sous forme de macro ??

Merci encore

On 13 sep, 19:46, FREDSCOPE wrote:
Bonsoir,

En colonne F, la formule =GAUCHE(E1;CHERCHE(" ";E1;1)-1) doi t faire
l'affaire pour les civilité simples.

Pour les M ou Mme, M et Mme, je pense qu'il suffirait de compt er le
nombre d'espaces dans la chaine et de décaler troisième pa ramètre de
la fonction Cherche.

Ou bien traiter ces cas la, s'ils ne sont pas nombreux par une
fonction si.

FRED

On 13 sep, 17:44, wrote:

Bonsoir,

Ca fait deux heures que je me casse la tete et la j'avoue qu e je
commence a m'enerver

Je m'explique.
J'ai dans une colonne E ceci :
M ou Mme TOTO
M. TUTU
Madame TITI
Melle TETE

J'aimerais pouvoir extraire les civilité à savoir M ou M me, M.,
Madame, Melle et les copier dans une autre colonnes.

Est ce possible en macro ou en formule ?

Merci d'avance pour votre aide- Masquer le texte des message s précédents -


- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -



- Afficher le texte des messages précédents -- Masquer le tex te des messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte d es messages précédents -


- Afficher le texte des messages précédents -- Masquer le texte des messages précédents -


- Afficher le texte des messages précédents -









1 2