• Initiateur de la discussion Initiateur de la discussion lex69
  • 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 !

L

lex69

Guest
Bonjour je suis actuellement en stage, et j'ai le début de ma formule qui ne fonctionne pas, il me semblait qu'elle fonctionné jusqu'a maintenant et cela est très embétant!

Voila la partie de ma formule qui ne fonctionne pas :

Code:
  'choix de la feuille ou la formation doit être écrite
    categ = InputBox("Veuillez saisir le type de la formation (CACES, HABILITATION ELECTRIQUE, SECURITE, NUCLEAIRE ou DIVERS)")
    While Not categ = "SECURITE" Or categ = "HABILITATION ELECTRIQUE" Or categ = "CACES" Or categ = "DIVERS" Or categ = "NUCLEAIRE"
        categ = InputBox("Veuillez saisir le type de la formation (CACES, HABILITATION ELECTRIQUE, SECURITE, NUCLEAIRE ou DIVERS)")
    Wend

La condition de la boucle n'est accepeté que si categ = "SECURITE", je suppose donc que la fonction "Or" ne fonctionne pas, ou que je ne la comprend pas !?
 
Re : Succession de Or

Bonjour Lex69 🙂,
Le Not ne s'applique qu'au premier membre 😛, tu peux par exemple mettre des parenthèses
Code:
categ = UCase(InputBox("Veuillez saisir le type de la formation (CACES, HABILITATION ELECTRIQUE, SECURITE, NUCLEAIRE ou DIVERS)"))
While Not (categ = "SECURITE" Or categ = "HABILITATION ELECTRIQUE" Or categ = "CACES" Or categ = "DIVERS" Or categ = "NUCLEAIRE")
    categ = UCase(InputBox("Veuillez saisir le type de la formation (CACES, HABILITATION ELECTRIQUE, SECURITE, NUCLEAIRE ou DIVERS)"))
Wend
D'autre part, je te conseille d'ajouter le UCase tel que je l'ai mis, du coup, caces sera transformer en CACES par exemple 🙄...
Bon courage 😎
 
Re : Succession de Or

Bonjou
Priorité des opérateurs


Lorsque plusieurs opérations sont contenues dans une même expression, chacune d'elles est évaluée et résolue dans un ordre prédéfini, appelé priorité des opérateurs.

Dans les expressions contenant des opérateurs de diverses catégories, les opérateurs sont évalués dans l'ordre suivant : opérateurs arithmétiques, puis opérateurs de comparaison et enfin opérateurs logiques. Les opérateurs de comparaison ont la même priorité ; c'est-à-dire qu'ils sont évalués dans leur ordre d'apparition, de gauche à droite. Les opérateurs arithmétiques et logiques sont évalués dans l'ordre de priorité ci-dessous :
Il suit un tableau dont la structure n'est pas préservée une fois collé ici entre balises et qui montre que Not est le plus prioritaire des opérateurs logiques. si vous voulez que vos And soient prioritaires sur le Not de début mettez tout ce qui suit le Not entre parenthèses
À+
 
Re : Succession de Or

Salut lex69,

Perso j'utiliserai plutôt un select case au lieu d'une succession de Or toujours un peu compliqué à décortiquer. Ah, et j'utiliserai un Do...Loop aussi 😉

Code:
Do
categ = InputBox("Veuillez saisir le type de la formation (CACES, HABILITATION ELECTRIQUE, SECURITE, NUCLEAIRE ou DIVERS)")
Select Case categ
    Case "SECURITE", "HABILITATION ELECTRIQUE", "CACES", "DIVERS", "NUCLEAIRE"
        Exit Do
    Case ""
        Exit Sub    'Clic sur annuler, on sort de la sub !
    Case Else
        MsgBox "Saisie incorrect", vbInfo + vbOKOnly, "Erreur"
End Select
Loop

Bon courage,
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 Souci de copie
Réponses
8
Affichages
384
Réponses
10
Affichages
1 K
Réponses
32
Affichages
1 K
Retour