Dans une cellule (A1), une phrase variable contient un mot en majuscules,
variable aussi et de place variable dans la phrase.
Ce mot contient au moins 2 lettres (pour éliminer les mots contenant une
majuscule de début de phrase).
Je souhaite récupérer ce seul mot dans la cellule B1.
Si par hasard la phrase contient deux mots en majuscule, je ne souhaite
récupérer que le premier (le plus à gauche).
En utilisant des len, left et des Ucase, j'ai maladroitement tenté diverses
choses qui ne fontionnent pas bien.
a écrit dans le message denews:2beb1d3c-383 On 7 mar, 12:28, "Coriandre" wrote:
For i = 0 To UBound(Split(Range("A1"))) If Split(Range("A1"), " ")(i) = UCase(Split(Range("A1"), " ")(i)) And Len(Split(Range("A1"), " ")(i)) > 1 Then Range("B1") = Split(Range("A1"), " ")(i) Exit For End If Next --------------------------------------
Cela fonctionne très bien, à condition que la phrase ne contienne pas de caractère type : ou ; etc. avant le mot en majuscules.
Mais je dois pouvoir adapter le code comme avec celui de Sitting Hoax.
Grand merci.
-- Coriandre
Je viens de comprendre ta condition mais chez moi ces caractères types sont toujours suivi d'un blanc
Peut être pas pour toi
On 7 mar, 14:22, "Coriandre" <nospam-wat...@free.fr.invalid> wrote:
<francois.for...@wanadoo.fr> a écrit dans le message denews:2beb1d3c-383 f-4b31-a290-fdd5794bf349@q78g2000hsh.googlegroups.com...
On 7 mar, 12:28, "Coriandre" <nospam-wat...@free.fr.invalid> wrote:
For i = 0 To UBound(Split(Range("A1")))
If Split(Range("A1"), " ")(i) = UCase(Split(Range("A1"), " ")(i))
And Len(Split(Range("A1"), " ")(i)) > 1 Then
Range("B1") = Split(Range("A1"), " ")(i)
Exit For
End If
Next
--------------------------------------
Cela fonctionne très bien, à condition que la phrase ne contienne pas de
caractère type : ou ; etc. avant le mot en majuscules.
Mais je dois pouvoir adapter le code comme avec celui de Sitting Hoax.
Grand merci.
--
Coriandre
Je viens de comprendre ta condition mais chez moi ces caractères types
sont toujours suivi d'un blanc
a écrit dans le message denews:2beb1d3c-383 On 7 mar, 12:28, "Coriandre" wrote:
For i = 0 To UBound(Split(Range("A1"))) If Split(Range("A1"), " ")(i) = UCase(Split(Range("A1"), " ")(i)) And Len(Split(Range("A1"), " ")(i)) > 1 Then Range("B1") = Split(Range("A1"), " ")(i) Exit For End If Next --------------------------------------
Cela fonctionne très bien, à condition que la phrase ne contienne pas de caractère type : ou ; etc. avant le mot en majuscules.
Mais je dois pouvoir adapter le code comme avec celui de Sitting Hoax.
Grand merci.
-- Coriandre
Je viens de comprendre ta condition mais chez moi ces caractères types sont toujours suivi d'un blanc
Peut être pas pour toi
Coriandre
a écrit dans le message de news: On 7 mar, 14:22, "Coriandre" wrote: ---------------------
Les caractères type (ou; etc) sont des mots à par entière Si tu souhaites récupérer le 1° mots en majuscule ayant minimum 2 lettres tous ce qui est écrit en lettres dans ta phrase répondant au critère du nombre est un résultat valable si tant est qu'il soit en majuscule Je ne vois pas quel code pourrais les différencier si ce n'est celui qui prendrait en compte une liste d'exclusion établit ---------------------
Je ne sais pas si nous parlons de la même chose. Pour préciser, j'évoquais les caractères suivants : deux points (:), point virgule (;), les points d'interrogation (?), etc. qui peuvent se trouver avant le mot en majuscules à extraire.
J'ai donc adapté ta macro ainsi : --------------------------- Sub trouver_majuscule3() For i = 0 To UBound(Split(Range("A1"))) If Split(Range("A1"), " ")(i) = UCase(Split(Range("A1"), " ")(i)) And Len(Split(Range("A1"), " ")(i)) > 1 Then
'Condition pour éliminer les caractères en question : If Asc(Split(Range("A1"), " ")(i)) > 64 And _ Asc(Split(Range("A1"), " ")(i)) < 91 Then
Range("B1") = Split(Range("A1"), " ")(i) Exit For End If End If Next i ------------------------------
et cela fonctionne alors très bien.
Merci de ton aide !
-- Coriandre
<francois.forcet@wanadoo.fr> a écrit dans le message de
news:437b23c6-f7b4-44fe-82d9-a72f41f3b5cd@x41g2000hsb.googlegroups.com...
On 7 mar, 14:22, "Coriandre" <nospam-wat...@free.fr.invalid> wrote:
---------------------
Les caractères type (ou; etc) sont des mots à par entière
Si tu souhaites récupérer le 1° mots en majuscule ayant minimum 2
lettres tous ce qui est écrit en lettres dans ta phrase répondant au
critère du nombre est un résultat valable si tant est qu'il soit en
majuscule
Je ne vois pas quel code pourrais les différencier si ce n'est celui
qui prendrait en compte une liste d'exclusion établit
---------------------
Je ne sais pas si nous parlons de la même chose.
Pour préciser, j'évoquais les caractères suivants : deux points (:), point
virgule (;), les points d'interrogation (?), etc. qui peuvent se trouver
avant le mot en majuscules à extraire.
J'ai donc adapté ta macro ainsi :
---------------------------
Sub trouver_majuscule3()
For i = 0 To UBound(Split(Range("A1")))
If Split(Range("A1"), " ")(i) = UCase(Split(Range("A1"), " ")(i))
And Len(Split(Range("A1"), " ")(i)) > 1 Then
'Condition pour éliminer les caractères en question :
If Asc(Split(Range("A1"), " ")(i)) > 64 And _
Asc(Split(Range("A1"), " ")(i)) < 91 Then
Range("B1") = Split(Range("A1"), " ")(i)
Exit For
End If
End If
Next i
------------------------------
a écrit dans le message de news: On 7 mar, 14:22, "Coriandre" wrote: ---------------------
Les caractères type (ou; etc) sont des mots à par entière Si tu souhaites récupérer le 1° mots en majuscule ayant minimum 2 lettres tous ce qui est écrit en lettres dans ta phrase répondant au critère du nombre est un résultat valable si tant est qu'il soit en majuscule Je ne vois pas quel code pourrais les différencier si ce n'est celui qui prendrait en compte une liste d'exclusion établit ---------------------
Je ne sais pas si nous parlons de la même chose. Pour préciser, j'évoquais les caractères suivants : deux points (:), point virgule (;), les points d'interrogation (?), etc. qui peuvent se trouver avant le mot en majuscules à extraire.
J'ai donc adapté ta macro ainsi : --------------------------- Sub trouver_majuscule3() For i = 0 To UBound(Split(Range("A1"))) If Split(Range("A1"), " ")(i) = UCase(Split(Range("A1"), " ")(i)) And Len(Split(Range("A1"), " ")(i)) > 1 Then
'Condition pour éliminer les caractères en question : If Asc(Split(Range("A1"), " ")(i)) > 64 And _ Asc(Split(Range("A1"), " ")(i)) < 91 Then
Range("B1") = Split(Range("A1"), " ")(i) Exit For End If End If Next i ------------------------------