Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

(VBA) InputBox : comportement étrange

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

D

Doktor

Guest
Bonjour à tous,

J'ai créé mon premier code VBA afin de rappeler à l'utilisateur d'un fichier Excel qu'il doit remplir une cellule en particulier (C51) afin que tous les calculs de la feuille fonctionnent correctement. 🙂


Code:
Option Explicit

Private Sub Worksheet_Activate()

Range("C51").Select
    Selection = MsgBox("Avez-vous saisi le nombre de semaines travaillées ce mois?", vbYesNo)
    Select Case Selection
        Case vbYes
        MsgBox ("Ok")
        Case vbNo
        Selection = InputBox("Saisissez-le :", "Nombre de semaines")
    End Select
Application.EnableEvents = False
        
End Sub

Pour résumer :

1) L'utilisateur ouvre le feuillet
2) Il se retrouve à l'ouverture devant la msgbox "Avez-vous saisi le nombre de semaines travaillées ce mois?"
a) Il répond oui : une msgbox "ok" s'affiche et c'est tout
b) Il répond non : une inputbox s'affiche lui demandant de saisir le nombre de semaines
3) Le nombre de semaines est automatiquement saisi en C51

Mon problème est le suivant : Lorsque l'utilisateur clique sur "oui" et la msgbox "ok" s'affiche, le compteur actuel de semaines en C51 est automatiquement augmenté de 2. 😱 😕

Comment y remédier? Je veux que le compteur actuel reste le même qu'il est si l'utilisateur l'a déjà saisi lors d'une précédente ouverture du fichier.

Merci à tous.
 
Re : (VBA) InputBox : comportement étrange

Ok, je comprends mieux maintenant.
Dernières questions : peux-tu m'expliquer le rôle de la variable "b" dans ce code?

On déclare une variable booléenne qui, dès qu'elle a comme valeur "true", exécute la condition?
Par exemple, ici,

Code:
If b Then Exit Sub

veut dire : "Si l'on trouve "b" dans le code, alors on quitte la procédure dès qu'elle se termine"? Le b=true fait donc "apparaître" ce "b" et valide la condition?

Aussi, pourquoi ne trouve-t-on pas de "End If" s'il y a un "If" dans

Code:
If b Then Exit Sub
?
 
Re : (VBA) InputBox : comportement étrange

Re,

Aussi, pourquoi ne trouve-t-on pas de "End If" s'il y a un "If" dans

si ce qui suit le "then" est sur la même ligne pas besoin de "end if"...

la variable booléenne permet de vérifier si nous sommes déjà passé dans la procédure, si c'est le cas on sort, sinon l'instruction suivante la positionne à TRUE et l'on continue l'execution du code.... au prochain passage on sortira du code...
 
- 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 Export données
Réponses
4
Affichages
880
G
Réponses
2
Affichages
602
gaelle31
G
Réponses
7
Affichages
1 K
L
Réponses
1
Affichages
1 K
L
Réponses
4
Affichages
869
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…