Simplification d'une formule IF OR

  • Initiateur de la discussion Initiateur de la discussion benoitxi
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

benoitxi

XLDnaute Nouveau
Bonjour à tous,

Je cherche à simplifier la formule OU suivante :

If (Range("A" & i) = "Contrat1" Or Range("A" & i) = "Contrat2" Or Range("A" & i) = "Contrat3"Or Range("A" & i) = "Contrat4")

Je me suis dit que je pourrais créer une liste qui comprend tous mes contrats pour les regrouper car je serais amener a l'utiliser plusieurs fois.

Dim Liste As String
Liste = (Contrat1,Contrat2,Contrat3,Contrat4)

Mais ça ne fonctionne pas.
J’ai essayer plusieurs syntaxes avec le ; les "" mais je pense que String ne peux contenir qu’une seule valeur.

Auriez-vous une solution à me proposer qui me permettrait de simplifier l'empilage des OU.
Ayant une nombre de contrat différent important et des contions importantes je ne peux pas utiliser le <> sous peine de les empiler également
(J’ai un niveau VBA moyen)

Merci à tous
Bon week end
 
Dernière édition:
Re,

En fait il faut écrire :
VB:
Liste = "Contrat11,Contrat22,Contrat33,Contrat44"
  If InStr("," & Liste & ",", "," & Range("a" & i) & ",") > 0 Then
End Sub

Pourquoi ? Imaginons que vous recherchiez le terme "Contrat1". Avec l'écriture de mon premier message, on recherche "Contrat1" dans "Contrat11,Contrat22,Contrat33,Contrat44". Et on va trouver ce terme (car "Contrat1" fait partie du terme "Contrat11"). Et on aura tort.

Avec la seconde écriture, on recherche ",Contrat1," dans ",Contrat11,Contrat22,Contrat33,Contrat44,". Bien sûr, on ne trouve pas ce terme... Et on aura raison.

edit: Salut @zebanx 😉
 
Dernière édition:
Re,

En fait il faut écrire :
VB:
Liste = "Contrat11,Contrat22,Contrat33,Contrat44"
  If InStr("," & Liste & ",", "," & Range("a" & i) & ",") > 0 Then
End Sub

Pourquoi ? Imaginons que vous recherchiez le terme "Contrat1". Avec l'écriture de mon premier message, on recherche "Contrat1" dans "Contrat11,Contrat22,Contrat33,Contrat44". Et on va trouver ce terme (car "Contrat1" fait partie du terme "Contrat11"). Et on aura tort.

Avec la seconde écriture, on recherche ",Contrat1," dans ",Contrat11,Contrat22,Contrat33,Contrat44,". Bien sûr, on ne trouve pas ce terme... Et on aura raison.

edit: Salut @zebanx 😉

Hello Ma pomme,

La formule IsStr est super et je me demandais comment je pourrais faire pour faire une recherche dans une plage nommé ou une colonne au lieu d'une liste prédéfinie.

Exemple ci dessous

If Range("société").Cells(i, 1) = "société1 _
And Range("Dept").Cells(i, 1) = "Dept1" _
And InStr( Range ("Colonne_service") , Range("Service").Cells(i, 1)) > 0 _ (je veux dire si le Service est présent dnas la colonne Service alors c'est bon)
Then Range("Destinataire").Cells(i, 1) = [Dest_1]

Merci pour ton aide
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
6
Affichages
554
Retour