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
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 : Sélectionner tout - Visualiser dans une fenêtre à part =GAUCHE(A1;(TROUVE(" ";A1)-1))
Code : Sélectionner tout - Visualiser dans une fenêtre à part =DROITE(A1;NBCAR(A1)-TROUVE(" ";A1))
Si cette proposition vous convient, merci de cliquer sur :
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 : Sélectionner tout - Visualiser dans une fenêtre à part =STXT(A1;TROUVE(" ";A1)+1;100)
Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.
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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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
Si cette proposition vous convient, merci de cliquer sur :
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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".
Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.
Bonjour,
je reprend mes poubelles pour les recycler aussi
La fonction contient deux arguments :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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?.Pattern = "[^a-zéèàùäëïöüâêîôû]+" 'à compléter
Merci
Pierre
C'est une fonction personnalisée utilisant une expression rationnelle.
La fonction doit être placée dans un module.
Pour l'utiliser (si la chaîne à traiter est en A1) :A+
Code : Sélectionner tout - Visualiser dans une fenêtre à part =ExtraireMinuscules(A1)
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
Retourne la situation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part =SUBSTITUTE(A1;ExtraireMinuscules(A1);"")
Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.
à tester :
avec la chaîne TOTO (LALA) bla bla BOBO
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
davido84 => C'est parfait çà fonctionne
Et l'histoire du à compléter, je viens de comprendre
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager