Comment supprimer des mots en minuscule dans
janloup
-
Ivan-hoe Messages postés 433 Date d'inscription Statut Membre Dernière intervention -
Ivan-hoe Messages postés 433 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
dans une colonne j'ai un grand nombre de cellules comme ceci :
CASSES l'anesthèsiste
CANNELLE(S)
CANTALOUPS gigiboon
CAPRE(S)
CAPRON (S) gilsanth
CAPUCINES falbala73
CARDAMOMES
CARDE (S) tazounette kakou68
CARDON(S)
CARMINE
CAROTTE(S)
CAROUBE bestof
j'aimerais avec la commande la plus simple possible supprimer les mots en minuscule
par avance merci de votre aide
dans une colonne j'ai un grand nombre de cellules comme ceci :
CASSES l'anesthèsiste
CANNELLE(S)
CANTALOUPS gigiboon
CAPRE(S)
CAPRON (S) gilsanth
CAPUCINES falbala73
CARDAMOMES
CARDE (S) tazounette kakou68
CARDON(S)
CARMINE
CAROTTE(S)
CAROUBE bestof
j'aimerais avec la commande la plus simple possible supprimer les mots en minuscule
par avance merci de votre aide
A voir également:
- Comment supprimer des mots en minuscule dans
- Supprimer rond bleu whatsapp - Guide
- Comment supprimer une page sur word - Guide
- Majuscule en minuscule - Guide
- E accent aigu minuscule - Guide
- Supprimer pub youtube - Accueil - Streaming
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
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
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
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?
Si le texte est en A1, mettre en B1 =minuscule(A1)
@ +