Comment supprimer des mots en minuscule dans
Fermé
janloup
-
13 sept. 2008 à 00:33
Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 - 15 sept. 2008 à 15:32
Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 - 15 sept. 2008 à 15:32
A voir également:
- Comment supprimer des mots en minuscule dans
- Comment supprimer une page sur word - Guide
- Supprimer compte instagram - Guide
- E accent minuscule - Guide
- Majuscule en minuscule - Guide
- Comment supprimer bing - Guide
4 réponses
j'ai trouvé sur un forum cette ligne de commande :
le texte en A1,
en B1 :
=SUBSTITUE(A1;{"a";"b";"c";"d";"e";"f";"g";"h";"i" ;"j";"k";"l";"m";"n";"o";"p";"q";"r";"s";"t";"u";" v";"w";"x";"y";"z"};"")
mais ça ne supprime que le "a" ..
ou est l'erreur ?
j'ai trouvé aussi :
une proposition par VBA (Pour un texte en A1) à étendre à toutes les cellules concernées:
Sub test()
Dim Tex As String, LetCherch1 As String, LetCherch2 As String
Tex = Range("A1")
For i = Len(Tex) To 1 Step -1
LetCherch1 = Mid(Tex, i, 1)
LetCherch2 = Mid(UCase(Tex), i, 1)
If LetCherch1 <> LetCherch2 Then Tex = Replace(Tex, LetCherch1, "")
Next
Range("A1") = Trim(Tex)
End Sub
je n'ai pas réussi a utiliser
merci pour votre aide
janloup
le texte en A1,
en B1 :
=SUBSTITUE(A1;{"a";"b";"c";"d";"e";"f";"g";"h";"i" ;"j";"k";"l";"m";"n";"o";"p";"q";"r";"s";"t";"u";" v";"w";"x";"y";"z"};"")
mais ça ne supprime que le "a" ..
ou est l'erreur ?
j'ai trouvé aussi :
une proposition par VBA (Pour un texte en A1) à étendre à toutes les cellules concernées:
Sub test()
Dim Tex As String, LetCherch1 As String, LetCherch2 As String
Tex = Range("A1")
For i = Len(Tex) To 1 Step -1
LetCherch1 = Mid(Tex, i, 1)
LetCherch2 = Mid(UCase(Tex), i, 1)
If LetCherch1 <> LetCherch2 Then Tex = Replace(Tex, LetCherch1, "")
Next
Range("A1") = Trim(Tex)
End Sub
je n'ai pas réussi a utiliser
merci pour votre aide
janloup
Ivan-hoe
Messages postés
433
Date d'inscription
dimanche 17 février 2008
Statut
Membre
Dernière intervention
17 octobre 2008
309
13 sept. 2008 à 09:56
13 sept. 2008 à 09:56
Bonjour Janloup,
Solution simple :
si on peut considérer que le nom (en majuscules) et le pseudo (en minuscules) sont séparés par le premier espace, alors on peut ne garder que la partie gauche du texte, avant l'espace.
formule en B1 (à étirer ensuite) :
=SI(ESTERREUR(CHERCHE(" ";A1));A1;GAUCHE(A1;CHERCHE(" ";A1)-1))
Inconvénient : ça pose problème pour CAPRON (S) et CARDE (S) à cause de l'espace avant le (S).
Autre solution, en utilisant une fonction personnalisée (à partir du code que tu fournis) :
copie le code ci-dessous dans un module VBA. Ensuite, dans Excel, tape la formule dans B1 : =SUPPRMINUS(A1)
Inconvénient : le code de la fonction devra être complété pour les cas particuliers que tu pourras rencontrer. Ici, ça prend en compte les minuscules, les chiffres et les apostrophes uniquement.
Solution simple :
si on peut considérer que le nom (en majuscules) et le pseudo (en minuscules) sont séparés par le premier espace, alors on peut ne garder que la partie gauche du texte, avant l'espace.
formule en B1 (à étirer ensuite) :
=SI(ESTERREUR(CHERCHE(" ";A1));A1;GAUCHE(A1;CHERCHE(" ";A1)-1))
Inconvénient : ça pose problème pour CAPRON (S) et CARDE (S) à cause de l'espace avant le (S).
Autre solution, en utilisant une fonction personnalisée (à partir du code que tu fournis) :
copie le code ci-dessous dans un module VBA. Ensuite, dans Excel, tape la formule dans B1 : =SUPPRMINUS(A1)
Inconvénient : le code de la fonction devra être complété pour les cas particuliers que tu pourras rencontrer. Ici, ça prend en compte les minuscules, les chiffres et les apostrophes uniquement.
Function SUPPRMINUS(Tex As String) As String Dim LetCherch1 As String, LetCherch2 As String Dim i As Integer For i = Len(Tex) To 1 Step -1 LetCherch1 = Mid(Tex, i, 1) LetCherch2 = Mid(UCase(Tex), i, 1) If LetCherch1 <> LetCherch2 _ Or IsNumeric(LetCherch1) _ Then Tex = Replace(Tex, LetCherch1, "") Next i Tex = Replace(Tex, "'", "") SUPPRMINUS = Trim(Tex) End Function
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
13 sept. 2008 à 10:31
13 sept. 2008 à 10:31
Bonjour tout le monde,
Une autre fonction (avec ou sans espaces entre les maj et min)
Une autre fonction (avec ou sans espaces entre les maj et min)
Function extraire_maj(texto As Range) Dim reg As Object Dim extraction As Object Set reg = CreateObject("vbscript.regexp") reg.Global = True reg.Pattern = "(\w[A-Z()]{1,})" Set extraction = reg.Execute(texto) For Each maj In extraction extraire_maj = maj.Value Next maj End Function
Ivan-hoe
Messages postés
433
Date d'inscription
dimanche 17 février 2008
Statut
Membre
Dernière intervention
17 octobre 2008
309
13 sept. 2008 à 19:29
13 sept. 2008 à 19:29
Bonjour michel,
dans un but pédagogique, pourrais-tu expliquer chaque ligne de ton code ?
ça m'intéresserait de comprendre.
Salutations.
I.
dans un but pédagogique, pourrais-tu expliquer chaque ligne de ton code ?
ça m'intéresserait de comprendre.
Salutations.
I.
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 303
14 sept. 2008 à 10:40
14 sept. 2008 à 10:40
Bonjour Ivan-Hoe
Pas facile ta question!
La méthode que j'ai utilisé est celles des "expressions régulières, ou expressions rationnelles" (regexp) utilisée surtout sur les sites Web pour manipuler, extraire, vérifier des saisies de l'internaute. Les langages utilisés sont majoritairement Java, C, PhP; L'utilisation en VBA – tirée du Vbscript- reste marginale.
En PJ tu pourras trouver un exemple de vérification d'une syntaxe d'adresse mail: pas d'espace, arobase présent, au moins 1 point dans la 2° partie ; d'autres démos sont aussi jointes.
Deux documents à potasser où j'ai fait connaissance avec cette drôle de bête:
https://cafeine.developpez.com/access/tutoriel/regexp/
https://docs.microsoft.com/en-us/previous-versions/1400241x(v=vs.100)?redirectedfrom=MSDN
Il y en a d'autres…
Sur le code proposé :
-----
Dim reg As Object
Dim extraction As Object
Set reg = CreateObject("vbscript.regexp")
Déclaration des objets nécessaires et instantation de l'objet en expression régulière (regexp)
Il y a d'autres manières (voir PJ) mais celle-ci évite d'avoir à aller cocher la bibliothèque vbscript regular expression 5.5 dans les outils-ref de VBE chaque fois que tu changes d'ordi…
----
reg.Global = True
indique que l'on veut travailler sur toute la donnée de travail. Par défaut elle est à "false" (1 seule occurrence)
---
reg.Pattern = "(\w[A-Z()]{1,})"
C'est LA que tout se joue et c'est loin d'être évident (pour moi, ce qui explique mon retard à répondre!). On définit le modèle –ou motif- ("pattern") que devra suivre la donnée (ici "texto"). Dans notre cas:
"w" minuscule indique que l'on recherche des caractères alphanumériques de type texte
[A-Z ()] indique que l'on cherche l'alphabet littéraire en majuscule et les parenthèses
{1, } indique que la donnée doit comporter au moins 1 occurrence
nota: la syntaxe est très délicate. Par ex. "W "majuscule indique que l'on veut le complément de l'ensemble défini entre les crochets… Toutefois, cela peut être pratique pour extraire des caractères autres que les chiffres en utilisant la lettre "d": \d demande des chiffres \D demande tout sauf des chiffres (cf PJ)
---
Set extraction = reg.Execute(texto)
On instantie l'objet extraction ( être en objet va permettre de boucler dans extraction) en exécutant suivant le "pattern" modélisé sur la donnée de travail (texto)
---
For Each maj In extraction
extraire_maj = maj.Value
Next maj
On boucle pour transfèrer de l'objet au string extraire_maj, résultat de la fonction. J'aurais eu tendance à écrire extraire_maj= extraire_maj + maj.value mais ca marche sans (au départ j'avais oublié!!!)…
Voilà, voilà…. Mais je n'utilise rarement ces regexp et mes connaissance et compréhensions sont très faibles là-dessus. D'ailleurs, il y a 1 truc foireux: écris par exemple ffffXXX(E) et lance la procédure: moi, j'ai fXXX(E)… j'ai pas trouvé l'erreur
Dans la PJ:
Vérification d'une adresse mail ( réalisée avec plusieurs contributeurs sur un autre forum)
Extraction de chiffes et de lettres
Extraction de mots d'au moins N lettres sans doublons dans une phrase
Amuses toi bien quand m^me ! en espèrant avoir répondu à ta demande
Cordialement
https://www.cjoint.com/?jokI1MkbUS
Pas de nouvelles de Janloup?
Pas facile ta question!
La méthode que j'ai utilisé est celles des "expressions régulières, ou expressions rationnelles" (regexp) utilisée surtout sur les sites Web pour manipuler, extraire, vérifier des saisies de l'internaute. Les langages utilisés sont majoritairement Java, C, PhP; L'utilisation en VBA – tirée du Vbscript- reste marginale.
En PJ tu pourras trouver un exemple de vérification d'une syntaxe d'adresse mail: pas d'espace, arobase présent, au moins 1 point dans la 2° partie ; d'autres démos sont aussi jointes.
Deux documents à potasser où j'ai fait connaissance avec cette drôle de bête:
https://cafeine.developpez.com/access/tutoriel/regexp/
https://docs.microsoft.com/en-us/previous-versions/1400241x(v=vs.100)?redirectedfrom=MSDN
Il y en a d'autres…
Sur le code proposé :
-----
Dim reg As Object
Dim extraction As Object
Set reg = CreateObject("vbscript.regexp")
Déclaration des objets nécessaires et instantation de l'objet en expression régulière (regexp)
Il y a d'autres manières (voir PJ) mais celle-ci évite d'avoir à aller cocher la bibliothèque vbscript regular expression 5.5 dans les outils-ref de VBE chaque fois que tu changes d'ordi…
----
reg.Global = True
indique que l'on veut travailler sur toute la donnée de travail. Par défaut elle est à "false" (1 seule occurrence)
---
reg.Pattern = "(\w[A-Z()]{1,})"
C'est LA que tout se joue et c'est loin d'être évident (pour moi, ce qui explique mon retard à répondre!). On définit le modèle –ou motif- ("pattern") que devra suivre la donnée (ici "texto"). Dans notre cas:
"w" minuscule indique que l'on recherche des caractères alphanumériques de type texte
[A-Z ()] indique que l'on cherche l'alphabet littéraire en majuscule et les parenthèses
{1, } indique que la donnée doit comporter au moins 1 occurrence
nota: la syntaxe est très délicate. Par ex. "W "majuscule indique que l'on veut le complément de l'ensemble défini entre les crochets… Toutefois, cela peut être pratique pour extraire des caractères autres que les chiffres en utilisant la lettre "d": \d demande des chiffres \D demande tout sauf des chiffres (cf PJ)
---
Set extraction = reg.Execute(texto)
On instantie l'objet extraction ( être en objet va permettre de boucler dans extraction) en exécutant suivant le "pattern" modélisé sur la donnée de travail (texto)
---
For Each maj In extraction
extraire_maj = maj.Value
Next maj
On boucle pour transfèrer de l'objet au string extraire_maj, résultat de la fonction. J'aurais eu tendance à écrire extraire_maj= extraire_maj + maj.value mais ca marche sans (au départ j'avais oublié!!!)…
Voilà, voilà…. Mais je n'utilise rarement ces regexp et mes connaissance et compréhensions sont très faibles là-dessus. D'ailleurs, il y a 1 truc foireux: écris par exemple ffffXXX(E) et lance la procédure: moi, j'ai fXXX(E)… j'ai pas trouvé l'erreur
Dans la PJ:
Vérification d'une adresse mail ( réalisée avec plusieurs contributeurs sur un autre forum)
Extraction de chiffes et de lettres
Extraction de mots d'au moins N lettres sans doublons dans une phrase
Amuses toi bien quand m^me ! en espèrant avoir répondu à ta demande
Cordialement
https://www.cjoint.com/?jokI1MkbUS
Pas de nouvelles de Janloup?
Ivan-hoe
Messages postés
433
Date d'inscription
dimanche 17 février 2008
Statut
Membre
Dernière intervention
17 octobre 2008
309
15 sept. 2008 à 15:32
15 sept. 2008 à 15:32
Merci d'avoir pris le temps d'expliquer, c'est sympa.
I.
I.
13 sept. 2008 à 09:32
Si le texte est en A1, mettre en B1 =minuscule(A1)
@ +