Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

simplifier le code VBA d'une condition

13 réponses
Avatar
FL
Bonjour à tous,
dans VBA,
-au lieu de mettre
if toto ="A" or toto = "B" or toto = "C" then ...

-je souhaiterai ne mettre qu'une seule fois toto
if toto ... A ... B ... C ...then

Je ne sais pas quoi mettre en lieu et place des petits points. Pouvez-vous
m'aider
Merci.
FL

10 réponses

1 2
Avatar
AV
Avec une variable nommée "toto"...

tablo = Array("A", "B", "C", "D")
If IsNumeric(Application.Match(toto, tablo, 0)) Then .....

AV
Avatar
Poulpor
Bonjour,

L'utilisation du "select case" évite de multiplier les conditions. Et il
semble gérer l'alphabet.

Exemple d'utilisation :

Sub toto()

bil = "l"

Select Case bil

Case "a" To "c"
MsgBox "est entre a et c"
Case "l"
MsgBox "c'est l"

End Select

End Sub

Bon courage,

Poulpor


Avec une variable nommée "toto"...

tablo = Array("A", "B", "C", "D")
If IsNumeric(Application.Match(toto, tablo, 0)) Then .....

AV





Avatar
FL
Merci AV et Poulpor pour vos réponses.
Mais je souhaite utiliser le If et non le Select Case
- Après le If je veux avoir la condition réalisée si toto est égal à A ou B
ou C.
sans avoir à écrire 3 fois toto.
toto doit faire partie de la liste A, B, C pour que la condition soit
réalisée. A, B, C étant du texte.
Encore merci
FL
"Poulpor" a écrit dans le message de
news:
Bonjour,

L'utilisation du "select case" évite de multiplier les conditions. Et il
semble gérer l'alphabet.

Exemple d'utilisation :

Sub toto()

bil = "l"

Select Case bil

Case "a" To "c"
MsgBox "est entre a et c"
Case "l"
MsgBox "c'est l"

End Select

End Sub

Bon courage,

Poulpor


Avec une variable nommée "toto"...

tablo = Array("A", "B", "C", "D")
If IsNumeric(Application.Match(toto, tablo, 0)) Then .....

AV







Avatar
lSteph
Bonjour,

If "ABCDEF" Like "*" & toto & "*" Then

Cordialement.

lSteph

"FL" a écrit dans le message de news:
44e58d1d$0$995$
Bonjour à tous,
dans VBA,
-au lieu de mettre
if toto ="A" or toto = "B" or toto = "C" then ...

-je souhaiterai ne mettre qu'une seule fois toto
if toto ... A ... B ... C ...then

Je ne sais pas quoi mettre en lieu et place des petits points. Pouvez-vous
m'aider
Merci.
FL




Avatar
FL
Merci AV,
Avec ce que tu m'as dit,
le code :
If Application.Match(toto, Array("A", "B", "C")) then ...
ça marche.

Mais ne peut-on pas faire plus court ?

Encore merci
Cordialement
FL

"AV" a écrit dans le message de news:

Avec une variable nommée "toto"...

tablo = Array("A", "B", "C", "D")
If IsNumeric(Application.Match(toto, tablo, 0)) Then .....

AV



Avatar
Paul V
hello tous,

pour satisfaire mon insatiable curiosité, pourquoi vouloir à tout prix faire
plus court?

Merci d'avance de ne pas me laisse rmourrir idiot.

Paul V

"FL" a écrit dans le message de news:
44e59eab$0$852$
Merci AV,
Avec ce que tu m'as dit,
le code :
If Application.Match(toto, Array("A", "B", "C")) then ...
ça marche.

Mais ne peut-on pas faire plus court ?

Encore merci
Cordialement
FL

"AV" a écrit dans le message de news:

Avec une variable nommée "toto"...

tablo = Array("A", "B", "C", "D")
If IsNumeric(Application.Match(toto, tablo, 0)) Then .....

AV







Avatar
AV
If Application.Match(toto, Array("A", "B", "C")) then ...
Mais ne peut-on pas faire plus court ?


S'il s'agit simplement de la recherche des lettres A_B_...Z :

If toto Like "[A-Z]" Then ..........

Sinon il faudra passer par un Array pour des recherches de chaînes variées
AV

Avatar
FL
Merci Isteph pour ta réponse.
En fait les valeurs A, B, C sont des exemples.
mes valeurs en réalité sont D, E1, E2, E3, G
If "DE1E2E3G" like "*"&toto&"*" Then fonctionne parfaitement.
Une autre solution celle d'AV fonctionne parfaitement
If Application.Match(toto, Array("D", "E1", "E2","E3","G") then ...

Apparemment il n'est pas possible de traduire en VBA
----toto fait-il partie de la liste (D,E1,E2,E3,G)---

Encore merci à tous
Cordialement
FL

"lSteph" a écrit dans le message de news:
%
Bonjour,

If "ABCDEF" Like "*" & toto & "*" Then

Cordialement.

lSteph

"FL" a écrit dans le message de news:
44e58d1d$0$995$
Bonjour à tous,
dans VBA,
-au lieu de mettre
if toto ="A" or toto = "B" or toto = "C" then ...

-je souhaiterai ne mettre qu'une seule fois toto
if toto ... A ... B ... C ...then

Je ne sais pas quoi mettre en lieu et place des petits points.
Pouvez-vous m'aider
Merci.
FL








Avatar
lSteph
Si c'est possible! comme AV te l'a montré mais il faut définir d'abord
l'Array
et je comprends ce que tu veux dire, une forme de OU matriciel simplifierait
parfois la vie mais comme dit PaulV faire systématiquement au plus court en
VBA
n'est pas toujours le mieux , à l'instar de ce qui se pourrait vouloir en
terme de formulisme.

Par ailleurs si cela fonctionne ainsi (pour ce que j'ai proposé) c'est
parceque cela s'y prette dans le cadre
d'une chaine de caractères sans quoi le recours aux autres solutions
proposées serait AMHA incontournable.

Cordialement.

lSteph
"FL" a écrit dans le message de news:
44e5b8d5$0$855$
Merci Isteph pour ta réponse.
En fait les valeurs A, B, C sont des exemples.
mes valeurs en réalité sont D, E1, E2, E3, G
If "DE1E2E3G" like "*"&toto&"*" Then fonctionne parfaitement.
Une autre solution celle d'AV fonctionne parfaitement
If Application.Match(toto, Array("D", "E1", "E2","E3","G") then ...

Apparemment il n'est pas possible de traduire en VBA
----toto fait-il partie de la liste (D,E1,E2,E3,G)---

Encore merci à tous
Cordialement
FL

"lSteph" a écrit dans le message de news:
%
Bonjour,

If "ABCDEF" Like "*" & toto & "*" Then

Cordialement.

lSteph

"FL" a écrit dans le message de news:
44e58d1d$0$995$
Bonjour à tous,
dans VBA,
-au lieu de mettre
if toto ="A" or toto = "B" or toto = "C" then ...

-je souhaiterai ne mettre qu'une seule fois toto
if toto ... A ... B ... C ...then

Je ne sais pas quoi mettre en lieu et place des petits points.
Pouvez-vous m'aider
Merci.
FL












Avatar
FL
Merci ISteph, AV, PaulV et Poulpor
Bonne journée à vous tous.

FL
"lSteph" a écrit dans le message de news:

Si c'est possible! comme AV te l'a montré mais il faut définir d'abord
l'Array
et je comprends ce que tu veux dire, une forme de OU matriciel
simplifierait
parfois la vie mais comme dit PaulV faire systématiquement au plus court
en VBA
n'est pas toujours le mieux , à l'instar de ce qui se pourrait vouloir en
terme de formulisme.

Par ailleurs si cela fonctionne ainsi (pour ce que j'ai proposé) c'est
parceque cela s'y prette dans le cadre
d'une chaine de caractères sans quoi le recours aux autres solutions
proposées serait AMHA incontournable.

Cordialement.

lSteph
"FL" a écrit dans le message de news:
44e5b8d5$0$855$
Merci Isteph pour ta réponse.
En fait les valeurs A, B, C sont des exemples.
mes valeurs en réalité sont D, E1, E2, E3, G
If "DE1E2E3G" like "*"&toto&"*" Then fonctionne parfaitement.
Une autre solution celle d'AV fonctionne parfaitement
If Application.Match(toto, Array("D", "E1", "E2","E3","G") then ...

Apparemment il n'est pas possible de traduire en VBA
----toto fait-il partie de la liste (D,E1,E2,E3,G)---

Encore merci à tous
Cordialement
FL

"lSteph" a écrit dans le message de news:
%
Bonjour,

If "ABCDEF" Like "*" & toto & "*" Then

Cordialement.

lSteph

"FL" a écrit dans le message de news:
44e58d1d$0$995$
Bonjour à tous,
dans VBA,
-au lieu de mettre
if toto ="A" or toto = "B" or toto = "C" then ...

-je souhaiterai ne mettre qu'une seule fois toto
if toto ... A ... B ... C ...then

Je ne sais pas quoi mettre en lieu et place des petits points.
Pouvez-vous m'aider
Merci.
FL
















1 2