Extraire les mots en majuscule de toutes les cellules d'une page

Le
Coriandre
Rebonjour,

Décidément, j'ai encore besoin d'aide :

Mon but est toujours de récupérer le premier mot en majuscule d'une cellule.

Mais de le faire pour toutes les cellules d'une plage nommée "Plage", puis
d'ajouter les mots majuscules obtenus dans la cellulle ("A1"), en les
séparant par des sauts de ligne (& vbnewline &).

Exemple :
En ligne 1 de la plage "Plage" la phrase est :
"Mais qu'est-ce qu'il fait TOTO ? "
En ligne 2 de la plage "Plage" la phrase est :
"Je ne sais pas. TATA mange du pain. TONTON aussi."
La ligne 3 est vide
En ligne 4 de la plage "Plage" la phrase est :
"C'est le pain de TITI."


Le résultat en A1 doit être :
TOTO
TATA
TITI


La plage peut-être grande, et il serait fastidieux d'ajouter les valeurs
obtenues par les macros de JB ou de François Forcet pour chaque cellule de
la plage.
Aussi j'ai essayé de composer une macro avec :
For i = 1 to Plage.Cells.count
en y imbriquant les macros de JB ou de François Forcet.
Sans succès

Merci de votre aide.

--
Coriandre
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
JB
Le #5232991
Bonjour,

Sub essai()
For Each c In [B1:B4]
temp = temp & Mot(c) & Chr(10)
Next c
[A1] = temp
End Sub

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

http://cjoint.com/?dhr7AMQMY0

JB


On 7 mar, 17:42, "Coriandre"
Rebonjour,

Décidément, j'ai encore besoin d'aide :

Mon but est toujours de récupérer le premier mot en majuscule d'une ce llule.

Mais de le faire pour toutes les cellules d'une plage nommée "Plage", pu is
d'ajouter les mots majuscules obtenus dans la cellulle ("A1"), en les
séparant par des sauts de ligne (& vbnewline &).

Exemple :
En ligne 1 de la plage "Plage" la phrase est :
"Mais qu'est-ce qu'il fait TOTO ? "
En ligne 2 de la plage "Plage" la phrase est :
"Je ne sais pas. TATA mange du pain. TONTON aussi."
La ligne 3 est vide
En ligne 4 de la plage "Plage" la phrase est :
"C'est le pain de TITI."
...

Le résultat en A1 doit être :
TOTO
TATA
TITI
...

La plage peut-être grande, et il serait fastidieux d'ajouter les valeurs
obtenues par les macros de JB ou de François Forcet pour chaque cellule de
la plage.
Aussi j'ai essayé de composer une macro avec :
For i = 1 to Plage.Cells.count...
en y imbriquant les macros de JB ou de François Forcet.
Sans succès...

Merci de votre aide.

--
Coriandre


francois.forcet
Le #5232981
Rebonjour à toi

Je te propose un code dans ce genre
Aprés avoir sélectionné ta plage :

For each c in selection
For i = 0 To UBound(Split(c))
If Split(c, " ")(i) = UCase(Split(c, " ")(i))
And Len(Split(c, " ")(i)) > 1 Then
'Condition pour éliminer les caractères en question :
If Asc(Split(c, " ")(i)) > 64 And _
Asc(Split(c, " ")(i)) < 91 Then
Résultat = Résultat & Split(c, " ")(i) & vblf
Exit For
End If
End If
Next i
Next c
Range("A1") = Résultat

Tu peux adapter un bout de code pour sélectionner ta plage
automatiquement à mettre en tout début de ce code
Celà devrait faire

Dis moi !!!!
Coriandre
Le #5232561
Merci à JB et François Forcet pour leur aide.

La macro de François fonctionne telle qu'elle.

J'ai dû modifier très légèrement celle de JB car telle qu'à l'intial :
---------------------
Sub essai()
For Each c In [B1:B4]
temp = temp & Mot(c) & Chr(10)
Next c
[A1] = temp
End Sub
--------------------
elle ajoutait des sauts de lignes vides en trop entre les mots en majuscule
(probablement correspondant aux lignes vides de la plage).

---------------------
Sub essai()
For Each c In [B1:B4]

' ajout pour éliminer les sauts de pages en trop :
If Mot(c) <> Empty Then

temp = temp & Mot(c) & Chr(10)
End If
Next c
[A1] = temp
End Sub
--------------------

Merci encore à tous deux.

--
Coriandre
Publicité
Poster une réponse
Anonyme