IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Excel Discussion :

extraire une chaine de caractères minuscules


Sujet :

Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut extraire une chaine de caractères minuscules
    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

  2. #2
    Membre éprouvé Avatar de excfl
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    690
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 690
    Points : 1 250
    Points
    1 250
    Par défaut
    Bonjour le forum,

    A2 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =GAUCHE(A1;(TROUVE(" ";A1)-1))
    A3 :
    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 :

  3. #3
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    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 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =STXT(A1;TROUVE(" ";A1)+1;100)
    Mais les deux marchent aussi bien, c'est juste une question de goût.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    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

  5. #5
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 071
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 071
    Points : 9 850
    Points
    9 850
    Billets dans le blog
    5
    Par défaut
    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

    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
    pour l'utiliser, c'est comme une fonction Excel classique, elle s'appelle LesMinuscules :

    - écris "TOTO titi" en A1
    - en A2 tu mets "=LesMinuscules(A1)"

  6. #6
    Membre éprouvé Avatar de excfl
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    690
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 690
    Points : 1 250
    Points
    1 250
    Par défaut
    Une simple remarque :

    http://www.etudes-litteraires.com/la...majuscules.php
    Images attachées Images attachées  
    Si cette proposition vous convient, merci de cliquer sur :

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    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?

  8. #8
    Membre éprouvé Avatar de excfl
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    690
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 690
    Points : 1 250
    Points
    1 250
    Par défaut
    Citation Envoyé par liop49 Voir le message
    Pour la remarque ???
    Comme je l'avais indiqué : "il s'agit d'une simple remarque."

    Je suis certainement "has been" mais toujours attaché aux règles de grammaire.
    Si cette proposition vous convient, merci de cliquer sur :

  9. #9
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Je reprends le code de Joe (je suis à fond pour le recyclage ).

    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 1 en second paramètre, ça donne les lettres se trouvant avant la première minuscule moins 1.
    Si tu mets 2 en second paramètre, ça donne les lettres se trouvant après la première minuscule, celle-ci comprise.

    Citation Envoyé par excfl Voir le message
    Je suis certainement "has been" mais toujours attaché aux règles de grammaire.
    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.

  10. #10
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 071
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 071
    Points : 9 850
    Points
    9 850
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    je reprend mes poubelles pour les recycler aussi

    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 fonction contient deux arguments :

    - 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..)

  11. #11
    Membre éprouvé Avatar de excfl
    Profil pro
    Inscrit en
    Octobre 2012
    Messages
    690
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2012
    Messages : 690
    Points : 1 250
    Points
    1 250
    Par défaut
    Citation Envoyé par Menhir Voir le message
    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".
    Bonne remarque.

    Cependant, dans un contexte formel ou administratif, à l'écrit, on met le nom de famille devant le prénom.
    Si cette proposition vous convient, merci de cliquer sur :

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    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

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    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

  14. #14
    Membre confirmé
    Homme Profil pro
    conseiller
    Inscrit en
    Janvier 2013
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : conseiller
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 367
    Points : 649
    Points
    649
    Par défaut
    Bonjour,
    je n'ai pas tout suivi mais une possibilité via l'utilisation d'une expression rationnelle :
    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
    A+

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    Désolé mais je ne comprend pas la réponse

    Qu'entendez vous par
    .Pattern = "[^a-zéèàùäëïöüâêîôû]+" 'à compléter
    ?

    Merci

    Pierre

  16. #16
    Membre confirmé
    Homme Profil pro
    conseiller
    Inscrit en
    Janvier 2013
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : conseiller
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 367
    Points : 649
    Points
    649
    Par défaut
    Citation Envoyé par liop49 Voir le message
    Désolé mais je ne comprend pas la réponse

    Qu'entendez vous par ?

    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) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =ExtraireMinuscules(A1)
    A+

  17. #17
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    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

  18. #18
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par liop49 Voir le message
    Oui mais avec votre code
    et ma cellule A1 = TOTO (LALA) bla bla BOBO

    j'obtient pour =ExtraireMinuscules(A1) => bla bla
    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.

  19. #19
    Membre confirmé
    Homme Profil pro
    conseiller
    Inscrit en
    Janvier 2013
    Messages
    367
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : conseiller
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2013
    Messages : 367
    Points : 649
    Points
    649
    Par défaut
    à tester :
    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
    avec la chaîne TOTO (LALA) bla bla BOBO
    =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+

  20. #20
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 491
    Points : 155
    Points
    155
    Par défaut
    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

Discussions similaires

  1. extraire une chaine de caractères
    Par Stéph utilisateur d'acces dans le forum Excel
    Réponses: 6
    Dernier message: 06/03/2009, 14h15
  2. Extraire une chaine de caractères
    Par Sam_Dalembert dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 18/08/2008, 12h58
  3. Réponses: 4
    Dernier message: 22/10/2007, 14h51
  4. extraire une chaine de caractères
    Par nopnop dans le forum C
    Réponses: 11
    Dernier message: 10/04/2007, 18h21
  5. Extraire une chaine de caractéres
    Par fatati dans le forum Oracle
    Réponses: 4
    Dernier message: 30/01/2007, 15h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo