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
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
Bonjour,
une façon :
eric
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)))
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)
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é
Mais bon, cela commence à ressembler à utiliser l'artillerie pour descendre une mouche.
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
Bonjour
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".Et encore cela dépend de la façon dont tes mots sont séparés : point-virgule, virgule, espace, tabulation …
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)
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 :
Je ne savais pas que l'on pouvait écrire 2 fois '=' sur la même ligne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part ok = tmp(UBound(tmp)) = UCase(tmp(UBound(tmp)))
Menhir lorsque je teste tmp = "G" et non "GH".
Bonne semaine à vous et encore merci pour l'aide.
Anarchiste-Mouton
Tu as pris le temps d'aller consulter l'aide VBA ?
Le second est un comparatif. L'ensemble suivant le premier "=" représente donc un booleen.Je ne savais pas que l'on pouvait écrire 2 fois '=' sur la même ligne.
Supprime le dernier paramètre du Mid.Menhir lorsque je teste tmp = "G" et non "GH".
Bonjour,
dit autrement : tmp(UBound(tmp)) = UCase(tmp(UBound(tmp))) est un test dont le résultat est affecté à ok.
eric
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