OVH Cloud OVH Cloud

selection des majuscules

9 réponses
Avatar
maslaf
Bonjour,

Pouvez-vous m'aider pour me permettre d'extraire d'une=20
cha=EEne de caract=E8res d'1 cellule, seulement les mots en=20
majuscules?
D'avance merci.

Bonne A.M.

9 réponses

Avatar
isabelle
bonjour maslaf,

ces mots sont t'ils toujours séparés par un espace ou autre chose ?

isabelle


Bonjour,

Pouvez-vous m'aider pour me permettre d'extraire d'une
chaîne de caractères d'1 cellule, seulement les mots en
majuscules?
D'avance merci.

Bonne A.M.


Avatar
AV
Pouvez-vous m'aider pour me permettre d'extraire d'une
chaîne de caractères d'1 cellule, seulement les mots en
majuscules?


S'il y a un seul mot en majuscules dans la chaîne contenue en A1
(Pas forcément le plus court ....)
=STXT(A1;EQUIV(2;(CODE(STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1))>64)+(CODE(STX
T(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1))<91);0);MAX((CODE(STXT(A1;LIGNE(INDIRECT
("1:"&NBCAR(A1)));1))<91)*(LIGNE(INDIRECT("1:"&NBCAR(A1)))))-EQUIV(2;(CODE(STXT(
A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1))>64)+(CODE(STXT(A1;LIGNE(INDIRECT("1:"&NBC
AR(A1)));1))<91);0)+1)

Matricielle (validation par ctrl+maj+entrée)

AV

Avatar
AV
Pas sur que tout les cas de figure soient acceptés...
A suivre... pour l'heure : pas le temps !

AV
Avatar
Bonsoir Isabelle,
oui, les mots en majuscules sont toujours séparés des
autres par un espace mais il y a parfois plusieurs mots en
majuscules qui se suivent, qui sont séparés entre eux par
un espace et je souhaite extraire TOUT ce qui est en
majuscules.

Merci pour l'aide apportée.
Avatar
ChrisV
Bonjour maslaf,

Sub extracMaj()
Dim i As Integer
Set aC = ActiveCell
exT = ""
If IsEmpty(ActiveCell) Then
inF = MsgBox("Aucune donnée à traiter !", _
vbInformation, "Erreur...")
Else
For i = 1 To Len(ActiveCell)
If Mid(aC, i, 1) Like UCase(Mid(aC, i, 1)) _
And Not IsNumeric(Mid(aC, i, 1)) Then _
exT = exT & Mid(aC, i, 1)
Next i
If Trim(exT) <> "" Then
MsgBox Trim(exT), vbInformation
Else: MsgBox "Aucune majuscule trouvée...", vbInformation
End If
End If
Set aC = Nothing
End Sub


ou avec une fonction personnalisée...

Function extracMaj(txt)
Dim i As Integer
For i = 1 To Len(txt)
If Mid(txt, i, 1) Like UCase(Mid(txt, i, 1)) _
And Not IsNumeric(Mid(txt, i, 1)) Then _
extracMaj = LTrim(Replace(extracMaj & Mid(txt, i, 1), " ", " "))
Next i
End Function

dans le classeur avec le texte en A1
=extracMaj(A1)


ChrisV


"maslaf" a écrit dans le message de
news:2c0f01c470bf$91e2a270$
Bonjour,

Pouvez-vous m'aider pour me permettre d'extraire d'une
chaîne de caractères d'1 cellule, seulement les mots en
majuscules?
D'avance merci.

Bonne A.M.
Avatar
isabelle
bonjour maslaf,

ChrisV vient à l'instant de donner une macro qui répond exactement à ça,

isabelle


Bonsoir Isabelle,
oui, les mots en majuscules sont toujours séparés des
autres par un espace mais il y a parfois plusieurs mots en
majuscules qui se suivent, qui sont séparés entre eux par
un espace et je souhaite extraire TOUT ce qui est en
majuscules.

Merci pour l'aide apportée.


Avatar
Daniel.M
Bonjour,

Si le mot doit être complètement en majuscule, voici une fonction personnalisée:

=XTraitMaj(A1)

Function XTraitMAJ(Txt$) As String
Dim RE As Object, MS As Object
Dim i As Integer, s As String, tmp As String

Set RE = CreateObject("VBScript.RegExp")
RE.Ignorecase = True: RE.Global = True
RE.Pattern = "s?S+s?"
Set MS = RE.Execute(Txt)

For i = 0 To MS.Count - 1
If MS(i).Value = UCase(MS(i).Value) Then
s = s & " " & Trim(MS(i).Value)
End If
Next i
XTraitMAJ = Mid(s, 2)
End Function

Salutations,

Daniel M.

"maslaf" wrote in message
news:2c0f01c470bf$91e2a270$
Bonjour,

Pouvez-vous m'aider pour me permettre d'extraire d'une
chaîne de caractères d'1 cellule, seulement les mots en
majuscules?
D'avance merci.

Bonne A.M.
Avatar
franck
pourquoi dim tmp as string ?

merci

-----Message d'origine-----
Bonjour,

Si le mot doit être complètement en majuscule, voici une
fonction personnalisée:


=XTraitMaj(A1)

Function XTraitMAJ(Txt$) As String
Dim RE As Object, MS As Object
Dim i As Integer, s As String, tmp As String

Set RE = CreateObject("VBScript.RegExp")
RE.Ignorecase = True: RE.Global = True
RE.Pattern = "s?S+s?"
Set MS = RE.Execute(Txt)

For i = 0 To MS.Count - 1
If MS(i).Value = UCase(MS(i).Value) Then
s = s & " " & Trim(MS(i).Value)
End If
Next i
XTraitMAJ = Mid(s, 2)
End Function

Salutations,

Daniel M.

"maslaf" wrote in
message

news:2c0f01c470bf$91e2a270$
Bonjour,

Pouvez-vous m'aider pour me permettre d'extraire d'une
chaîne de caractères d'1 cellule, seulement les mots en
majuscules?
D'avance merci.

Bonne A.M.


.



Avatar
Daniel.M
pourquoi dim tmp as string ?


Pour rien. :-(
Un résidu d'une 1ère itération.

Daniel M.