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

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Sitting Hoax
Le #5233521
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"
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




JB
Le #5233491
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"
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


francois.forcet
Le #5233481
On 7 mar, 12:28, "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é 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 !!!!

francois.forcet
Le #5233461
On 7 mar, 12:28, "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é 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 !!!!

Coriandre
Le #5233391
"JB" 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
Coriandre
Le #5233381
news:
On 7 mar, 12:28, "Coriandre"
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
Coriandre
Le #5233371
"Sitting Hoax" 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

JB
Le #5233301
http://cjoint.com/?dho1cyIb2K

JB

On 7 mar, 14:13, "Coriandre"
"JB"
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


francois.forcet
Le #5233291
On 7 mar, 14:22, "Coriandre"
On 7 mar, 12:28, "Coriandre"
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 ?????

Coriandre
Le #5233231
"JB" news:
http://cjoint.com/?dho1cyIb2K
JB
----------------------------------

Cela fonctionne parfaitement.
Merci !

--
Coriandre
Publicité
Poster une réponse
Anonyme