Bonjour
Je cherche une fonction sous excel qui permettrait d'extraite d'une cellule les caractères en minuscules.
exemple :
En A1 j'ai TYRENAID pierre
Je voudrais mettre en A2 TYRENAID et en A3 pierre
Par avance merci pour votre aide
Pierre
Version imprimable
Bonjour
Je cherche une fonction sous excel qui permettrait d'extraite d'une cellule les caractères en minuscules.
exemple :
En A1 j'ai TYRENAID pierre
Je voudrais mettre en A2 TYRENAID et en A3 pierre
Par avance merci pour votre aide
Pierre
Bonjour le forum,
A2 :A3 :Code:=GAUCHE(A1;(TROUVE(" ";A1)-1))
Code:=DROITE(A1;NBCAR(A1)-TROUVE(" ";A1))
Je ne pense pas qu'il soit possible de faire exactement ce que tu demandes sans passer par une macro VBA.
Par contre, il est assez facile de trouver l'espace qui sépare ces deux parties et donc de les séparer, comme le montre les formules de excfl.
Pour la seconde, j'aurais plutôt écrit :
Mais les deux marchent aussi bien, c'est juste une question de goût. ;)Code:=STXT(A1;TROUVE(" ";A1)+1;100)
Merci pour vos réponses mais le problème c'est que je peux avoir GRIOD UYTER pierre et du coup ça ne réponds pas à la question initiale : comment extraire les minuscules d'une chaine de caractères.
Menhir : tu penses que sans un code VBA, je n'y arriverai pas. Peux-tu, STP, m'orienter car je ne maîtrise pas :oops:
Merci
Bonjour,
voici une fonction personnalisée qu'on devra peut être ajuster en fonction des valeurs que tu testeras
- appuies sur Alt+F11 pour ouvrir l'éditeur de code
- tu vas dans le menu "insérer" de l'éditeur de code, et tu insères un nouveau module
- dans ce module, tu colles le code suivant
pour l'utiliser, c'est comme une fonction Excel classique, elle s'appelle LesMinuscules :Code:
1
2
3
4
5
6
7
8
9
10
11 Function LesMinuscules(Cellule As Range) As String Dim i As Integer If Cellule.Cells.Count > 1 Then Exit Function For i = 1 To Len(Cellule.Value) If UCase(Mid(Cellule.Value, i, 1)) <> Mid(Cellule.Value, i, 1) Then LesMinuscules = LesMinuscules & Mid(Cellule.Value, i, 1) End If Next i End Function
- écris "TOTO titi" en A1
- en A2 tu mets "=LesMinuscules(A1)"
Une simple remarque :
http://www.etudes-litteraires.com/la...majuscules.php
Bonjour
Pour la remarque ???
Pour le code c'est parfait, sauf qu'il m'enlève les espaces si j'ai plusieurs groupes de caractères en minuscules.
TOTO fifi loulou riri
il me mets fifiloulouriri
et est ce qu'il y aurait pas moyen d'afficher en A3 les groupes de caractères en majuscules seules?
Je reprends le code de Joe (je suis à fond pour le recyclage ;) ).
Si tu mets 1 en second paramètre, ça donne les lettres se trouvant avant la première minuscule moins 1.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 Function MajMin(Cellule As Range, Mm as Integer) As String Dim i As Integer If Cellule.Cells.Count > 1 Then Exit Function If Len(Cellule.Value) = 0 Then Exit Function For i = 1 To Len(Cellule.Value) If UCase(Mid(Cellule.Value, i, 1)) <> Mid(Cellule.Value, i, 1) Then Exit For Next i If Mm = 1 Then MajMin = Left(Cellule.Value, i-2) If Mm = 2 Then MajMin = Mid(Cellule.Value, i, 100) End Function
Si tu mets 2 en second paramètre, ça donne les lettres se trouvant après la première minuscule, celle-ci comprise.
Dans ce cas, il serait bon aussi de rappeler que le prénom, par définition, se place toujours avant le nom (contraire à une habitude trop répandue), sinon, c'est un "postnom". ;)
Bonjour,
je reprend mes poubelles pour les recycler aussi :ptdr:
La fonction contient deux arguments :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Function LesMinuscules(Cellule As Range, Optional Min As Boolean = True) As String Dim i As Integer If Cellule.Cells.Count > 1 Then Exit Function If Min = True Then For i = 1 To Len(Cellule.Value) If UCase(Mid(Cellule.Value, i, 1)) <> Mid(Cellule.Value, i, 1) _ Or Mid(Cellule.Value, i, 1) = " " Then LesMinuscules = LesMinuscules & Mid(Cellule.Value, i, 1) End If Next i Else For i = 1 To Len(Cellule.Value) If LCase(Mid(Cellule.Value, i, 1)) <> Mid(Cellule.Value, i, 1) _ Or Mid(Cellule.Value, i, 1) = " " Then LesMinuscules = LesMinuscules & Mid(Cellule.Value, i, 1) End If Next i End If LesMinuscules = Application.WorksheetFunction.Trim(LesMinuscules) End Function
- la cellule concernée par l'extraction
- un argument Optionnel "FAUX" qui inverse la fonction : on récupère les majuscules au lieu des minuscules
Si je met TITI toto tata TOUTOU en A1 :
=LesMinuscules(A1) ==> toto tata
=LesMinuscules(A1;VRAI) ==> toto tata (même résultat)
=LesMinuscules(A1;FAUX) ==> TITI TOUTOU
ça fonctionne également quand un mot contient des majuscules et des minuscules en même temps : c'est comme si on supprimait les caractères indésirables, en ne laissant qu'un espace entre chaque mot
Il est aussi possible, pour les extractions de minuscules, d'ajouter un paramètre qui extraie la première lettre en majuscule du mot (cas d'un prénom/nom/ville/nom propre etc..)
Merci pour votre aide et pour les cours de grammaire.
c'est Parfait mais Je n'ai pAs tout Compris aux Leçons de Grammaire.;)
Pierre
Bonjour,
Je reviens vers vous car j'ai un nouveau problème qui arrive.
Le dernier code est parfait mais j'ai depuis peu une nouveauté qui n'est pas gérée par le code.
J'ai le texte suivant en A1 : TOTO (LALA) bla bla BOBO
Je voudrais que =LesMinuscules(A1;faux) donne : TOTO (LALA) BOBO
Est ce que quelqu'un peut m'aider ?
Merci
Pierre
Bonjour,
je n'ai pas tout suivi mais une possibilité via l'utilisation d'une expression rationnelle :
A+Code:
1
2
3
4
5
6
7
8
9
10
11
12 Function ExtraireMinuscules(Chaine As String) As String Dim oReg As Object Set oReg = CreateObject("vbscript.regexp") With oReg .ignorecase = False .Global = True .Pattern = "[^a-zéèàùäëïöüâêîôû]+" 'à compléter ExtraireMinuscules = .Replace(Chaine, " ") End With End Function
Désolé mais je ne comprend pas la réponse
Qu'entendez vous par?Citation:
.Pattern = "[^a-zéèàùäëïöüâêîôû]+" 'à compléter
Merci
Pierre
Oui mais avec votre code
et ma cellule A1 = TOTO (LALA) bla bla BOBO
j'obtient pour =ExtraireMinuscules(A1) => bla bla
Je voudrais aussi avoir TOTO (LALA) BOBO en mettant =ExtraireMinuscules(A1;faux)
Mais çà me met #Valeur!
Est ce que quelqu'un peut m'aider ?
MErci
à tester :
avec la chaîne TOTO (LALA) bla bla BOBOCode:
1
2
3
4
5
6
7
8
9
10
11 Function ExtraireChaine(Chaine As String, Optional Minuscule As Boolean = True) As String Dim oReg As Object Set oReg = CreateObject("vbscript.regexp") With oReg .ignorecase = False .Global = True .Pattern = "[" & IIf(Minuscule = True, "^", "") & "a-zéèàùäëïöüâêîôû]+" 'à compléter ExtraireChaine = Application.WorksheetFunction.Trim(.Replace(Chaine, " ")) End With End Function
=ExtraireChaine(A1;VRAI) ramène bla bla
=ExtraireChaine(A1;FAUX) ramène TOTO (LALA) BOBO
Comme je l'ai déjà indiqué je pense que le pattern devra être adapté pour traiter certains exemples que tu ne fournis pas. En effet tu demandes de l'aide mais tu ne fournis que très peu d'exemples...
A+
Bonjour,
Désolé pour l'absence de retour de ma part mais j'étais dans un autre monde depuis le 07/03/16 :roll:
davido84 => C'est parfait çà fonctionne
Et l'histoire du à compléter, je viens de comprendre :oops:
J'ai rajouté par exemple le signe "*" et il ne me le prend pas en compte en la condition "FAUX"
Dernière petite question, est ce possible d'exclure un caractère des deux extractions ?
Par exemple le sigle "*", je ne veux pas l'extraire.
Merci
Nicolas