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

Récupérer un mot en majuscules dans une phrase

12 réponses
Avatar
Coriandre
Bonjour,

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.

Comment faire ?

Merci de votre aide.

--
Coriandre

10 réponses

1 2
Avatar
Sitting Hoax
Bonjour,
essaie cette macro
Sub trouver_majuscule
x = Range("a1").Value
For i = 1 To Len(x)
lettre = Right(Left(x, i), 1)
If lettre = UCase(lettre) And lettre <> " " Then
mot = mot & lettre
End If
Next
MsgBox mot
End Sub

Amicalement
Sisting Hoax
"Coriandre" a écrit dans le message de news:

Bonjour,

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.

Comment faire ?

Merci de votre aide.

--
Coriandre




Avatar
JB
Bonjour,

Function Mot(ph)
i = 1
Do While i <= Len(ph) - 2 And Not témoin
If Mid(ph, i, 2) Like "[A-Z][A-Z]" Then
p = InStr(i, ph, " "): If p = 0 Then p = Len(ph) + 1
Mot = Mid(ph, i, p - i)
témoin = True
End If
i = i + 1
Loop
End Function

JB

On 7 mar, 12:28, "Coriandre" wrote:
Bonjour,

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é diver ses
choses qui ne fontionnent pas bien.

Comment faire ?

Merci de votre aide.

--
Coriandre


Avatar
francois.forcet
On 7 mar, 12:28, "Coriandre" wrote:
Bonjour,

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é diver ses
choses qui ne fontionnent pas bien.

Comment faire ?

Merci de votre aide.

--
Coriandre


Salut Coriandre

Ce code devrait faire :

For i = 0 To UBound(Split(Range("A1")))
If Split(Range("A1"), " ")(i) = UCase(Split(Range("A1"), " ")(i))
Then
Range("B1") = Split(Range("A1"), " ")(i)
Exit For
End If
Next

Dis moi !!!!

Avatar
francois.forcet
On 7 mar, 12:28, "Coriandre" wrote:
Bonjour,

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é diver ses
choses qui ne fontionnent pas bien.

Comment faire ?

Merci de votre aide.

--
Coriandre


Rebonjour Coriandre

Dans ma proposition je n'ai pas tenu compte des mots à 1 lettre !!!!
Mille excuses
Ce code qui en tient compte :

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

Celà devrait être nettement mieux

Dis moi !!!!

Avatar
Coriandre
"JB" a écrit dans le message de
news:

Function Mot(ph)
i = 1
Do While i <= Len(ph) - 2 And Not témoin
If Mid(ph, i, 2) Like "[A-Z][A-Z]" Then
p = InStr(i, ph, " "): If p = 0 Then p = Len(ph) + 1
Mot = Mid(ph, i, p - i)
témoin = True
End If
i = i + 1
Loop
End Function

JB

----------------------------------------

Merci de ton aide.

Intuitivement, la macro semble tenir compte de l'élimination d'un second mot
en majuscules.
(Je ne vois pas bien en revanche comment elle récupère les mots majuscules :
Grâce à Like "[A-Z][A-Z]" ?)

Mais je ne peux le vérifier car n'arrive pas à utiliser la fonction.
Une fois placée la fonction dans un module à part, faut-il créer une macro
nommée :
Sub trouver_majuscule_2()
'blablabla
End Sub
et que mettre dans cette macro pour que le résultat du mot en majuscule se
place en B1 ?

--
Coriandre
Avatar
Coriandre
a écrit dans le message de
news:
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
Avatar
Coriandre
"Sitting Hoax" a écrit dans
le message de news:
Bonjour,
essaie cette macro
Sub trouver_majuscule
x = Range("a1").Value
For i = 1 To Len(x)
lettre = Right(Left(x, i), 1)
If lettre = UCase(lettre) And lettre <> " " Then
mot = mot & lettre
End If
Next
MsgBox mot
End Sub


Merci de ta proposition.

Adaptée ainsi :
-------------
Sub trouver_majuscule()
x = Range("a1").Value
For i = 1 To Len(x)
Lettre = Right(Left(x, i), 1)
If Lettre = UCase(Lettre) And Lettre <> " " _

'Ajout de condition pour éliminer les chiffres
And Not IsNumeric(Lettre) Then

'Ajout de condition pour éliminer les caractères non lettrés (exemple les :)
If Asc(Lettre) > 64 And Asc(Lettre) < 91 Then

Mot = Mot & Lettre
End If
End If
Next
MsgBox Mot
End Sub
-------------

ça fonctionne avec un hic : tous les mots en majuscule sont récupérés et
accolés les uns aux autres.

Comment, sur la base de ton code, ne récupérer que le premier mot en
majuscules de la phrase ?

--
Coriandre

Avatar
JB
http://cjoint.com/?dho1cyIb2K

JB

On 7 mar, 14:13, "Coriandre" wrote:
"JB" a écrit dans le message denews:40da692a-9

Function Mot(ph)
 i = 1
 Do While i <= Len(ph) - 2 And Not témoin
   If Mid(ph, i, 2) Like "[A-Z][A-Z]" Then
     p = InStr(i, ph, " "): If p = 0 Then p = Len(ph) + 1
     Mot = Mid(ph, i, p - i)
     témoin = True
   End If
   i = i + 1
 Loop
End Function

JB

----------------------------------------

Merci de ton aide.

Intuitivement, la macro semble tenir compte de l'élimination d'un second mot
en majuscules.
(Je ne vois pas bien en revanche comment elle récupère les mots majusc ules :
Grâce à Like "[A-Z][A-Z]" ?)

Mais je ne peux le vérifier car n'arrive pas à utiliser la fonction.
Une fois placée la fonction dans un module à part, faut-il créer une macro
nommée :
Sub trouver_majuscule_2()
'blablabla
End Sub
et que mettre dans cette macro pour que le résultat du mot en majuscule se
place en B1 ?

--
Coriandre


Avatar
francois.forcet
On 7 mar, 14:22, "Coriandre" wrote:
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


Rebonjours Coriandre
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

Si je me trompe que l'on me dise en quoi ?????

Avatar
Coriandre
"JB" a écrit dans le message de
news:
http://cjoint.com/?dho1cyIb2K
JB
----------------------------------

Cela fonctionne parfaitement.
Merci !

--
Coriandre
1 2