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

Macros et VBA Excel Discussion :

dernier mot d'une chaine de caractère


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club Avatar de anarchiste-mouton
    Homme Profil pro
    ceci
    Inscrit en
    Décembre 2017
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ceci
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2017
    Messages : 69
    Points : 68
    Points
    68
    Par défaut dernier mot d'une chaine de caractère
    Bonjour,

    Comment pourrais-je procéder pour tester le dernier mot d'une chaîne de caractère (et vérifier qu'il soit en majuscule) ?

    bon week-end

  2. #2
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Points : 3 666
    Points
    3 666
    Par défaut
    Bonjour,

    une façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim ch As String, tmp, ok As Boolean
    ch = "abcde GH"
    tmp = Split(ch, " ")
    ok = tmp(UBound(tmp)) = UCase(tmp(UBound(tmp)))
    eric

  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
    Citation Envoyé par eriiic Voir le message
    une façon :
    Une autre façon (ni meilleure, ni pire)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim ch As String, tmp, ok As Boolean
    ch = "abcde GH"
    tmp = Mid(ch, InStrRev(ch, " ") + 1, 1)
    ok = tmp = UCase(tmp)

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Points : 10 167
    Points
    10 167
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Et encore cela dépend de la façon dont tes mots sont séparés : point-virgule, virgule, espace, tabulation …
    Peut-être plus dur sur la mémoire et la performance
    Et Pas testé

    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
    24
    25
    26
    27
    28
    option Compare Binary
    sub ÇaEnPrendUnPourFaireduZèle
        'J'ai été tellement habitué à donner
        'des valeurs à mes variables dès que je les
        'déclare pour éviter de me faire sermonner
        'que cela pourrait causer des horreurs d'exécution
        'que cela devient plus fort que moi.
         Dim RéponseFinale As Boolean
         RéponseFinale = False
         dim Séparateur as String
         Dim sépare as string
         Dim LeBout as integer
         Lebout = 0
         Dim UnbeauTexte as string
         UnBeauTexte ="Astérix;Obélix;Idéfix;PANORAMIX"
         Séparateur = ";"
         sépare = FaireLaSéparationEnTableau(UnbeauTexte, Séparateur)
         LeBout=Sépare(count)
         if sépare(LeBout)=Ucase(Sépare(Lebout)) then
             RéponseFunale=True
         else
             RéponseFinale = False
         end if
    End Sub
     
    Function FaireLaSéparationEnTableau(UnbeauTexte, Séparateur)
        FaireLaSéparationEnTableau = split(UnbeauTexte, Séparateur)
    end Function
    Mais bon, cela commence à ressembler à utiliser l'artillerie pour descendre une mouche.

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 433
    Points
    12 433
    Par défaut
    Bonjour
    Et encore cela dépend de la façon dont tes mots sont séparés : point-virgule, virgule, espace, tabulation …
    sans compter que la définition d'un mot est telle, qu'à moins de précisions autres, les mots peuvent, dans une même "phrase", être précédés et suivis de plusieurs caractères différents, distincts entre eux tout au long de la "phrase".
    Il y a déjà eu plusieurs discussions à ce sujet. Il y a été observé que la principale difficulté rencontrée à ce propos était la présence éventuelle du caractère apostrophe (qui peut être ici, partie intégrante d'un mot et là, un élément séparateur du mot et exclut donc l'utilisation directe ou indirecte d'une fonction telle que Split)

  6. #6
    Membre du Club Avatar de anarchiste-mouton
    Homme Profil pro
    ceci
    Inscrit en
    Décembre 2017
    Messages
    69
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : ceci
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2017
    Messages : 69
    Points : 68
    Points
    68
    Par défaut
    Merci pour vos réponses à tous les 3 !

    Ce qu'a proposé eriiic me convient parfaitement bien (cela va m'aider à différencier des personnes et des entités).
    Bon, je ne comprends pas trop ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ok = tmp(UBound(tmp)) = UCase(tmp(UBound(tmp)))
    Je ne savais pas que l'on pouvait écrire 2 fois '=' sur la même ligne.

    Menhir lorsque je teste tmp = "G" et non "GH".


    Bonne semaine à vous et encore merci pour l'aide.
    Anarchiste-Mouton

  7. #7
    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 anarchiste-mouton Voir le message
    Bon, je ne comprends pas trop ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ok = tmp(UBound(tmp)) = UCase(tmp(UBound(tmp)))
    Tu as pris le temps d'aller consulter l'aide VBA ?

    Je ne savais pas que l'on pouvait écrire 2 fois '=' sur la même ligne.
    Le second est un comparatif. L'ensemble suivant le premier "=" représente donc un booleen.

    Menhir lorsque je teste tmp = "G" et non "GH".
    Supprime le dernier paramètre du Mid.

  8. #8
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Points : 3 666
    Points
    3 666
    Par défaut
    Bonjour,

    dit autrement : tmp(UBound(tmp)) = UCase(tmp(UBound(tmp))) est un test dont le résultat est affecté à ok.
    eric

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] supprimer le dernier mot d'une chaine de caractère
    Par francois.mv dans le forum Access
    Réponses: 1
    Dernier message: 30/06/2015, 18h31
  2. Réponses: 9
    Dernier message: 23/12/2013, 16h40
  3. Réponses: 4
    Dernier message: 18/04/2011, 22h56
  4. Récupérer tous les mots d'une chaine de caractère
    Par steps5ive dans le forum Access
    Réponses: 2
    Dernier message: 05/09/2006, 15h14
  5. recherche de mots dans une chaine de caractères
    Par jeanfrancois dans le forum Langage
    Réponses: 5
    Dernier message: 10/02/2006, 10h47

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