Activation Macro sous condition

spwww

XLDnaute Nouveau
Bonjour à tous,
je rencontre actuellement un soucis sous excel et je me pose une question :

Est il possible de rendre un bouton lié à une macro indisponible tant qu'une cellule n'est pas égale au chiffre 36 par exemple.

J'ai un fichier sur lequel l'utilisateur doit répondre à 36 questions, ceci fait la macro valide les réponses et l'envoie sur une autre feuille du classeur.
Cependant j'aimerais rendre inaccessible la validation si l'utilisateur n'a pas répondu à toute les questions...

Ci joint fichier commenté avec explication de ce que j'ai mis en place

en vous remerciant d'avance
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Activation Macro sous condition

Bonjour,

essaye ceci, à placer dans le module de la feuille en question :
Code:
Option Explicit
Private Sub Worksheet_Calculate()
CommandButton1.Visible = Range("AO42").Value = 36
End Sub

bonne journée
@+
 

kjin

XLDnaute Barbatruc
Re : Activation Macro sous condition

Bonjour,
Il suffit de tester la cellule AO42 au début de ta procédure et d'afficher un message si elle est <36
Note
- qu'il n'est pas utile de joindre un fichier complet alors qu'un fichier débarrassé de toutes fioritures avec la macro concernée suffisent amplement
- que ce fichier devrait être nettoyé au niveau module
- que les formules en AM42 et AN42 peuvent être remplacées par
=NB.SI($C$42:$AL$42;"o")
et
=NB.SI($C$42:$AL$42;"n")
A+
kjin
 

spwww

XLDnaute Nouveau
Re : Activation Macro sous condition

Bonjour pierrot pierrejean et kjin
tout d'abord merci pour vos réponses qui fonctionnent toute (a part le option explicit de pierrot qui vient se coller dans un private sub du dessus, à n'y rien comprendre ^^)

C'est exactement ce que je voulais pour ce fichier,
cependant vu que le nombre d'utilisateur répondant a ce questionnaire est inconnu

If Range("AO42") <> 36 Then

j'ai changé If Range("AO42") <> 36 Then par If Range("AO42:AO800") <> 36 Then
par exemple mais une incompatibilité de type arrive

c'est pas évident car on ne connait pas le nombre exact de reponse donc je me suis dit jusqu'a la cellule 800 pour viser large, mais du coup vu que les cellulles en dessous de AO42 sont vides ça doit buguer.

Est ce possible de passer outre ce soucis?

en vous remerciant encore une fois
 

mamyfik

XLDnaute Nouveau
Re : Activation Macro sous condition

Bonjour à tous!

C'est normal que çà plante, parce que tu fait un test sur un range de plusieurs cellules, or, plusieurs cellules ne peuvent pas être comparées à une seule valeur comme ceci (le Range("A042:AO800").Value n'a pas lieu d'être).
Moi je vois juste le "for each" cellule de A042 à la première cellule vide pour régler ce problème, mais cela risque d'être un peu lourd...
 

Pierrot93

XLDnaute Barbatruc
Re : Activation Macro sous condition

Re, bonjour PierreJean:), Kjin:), Mamyfik

tout d'abord merci pour vos réponses qui fonctionnent toute (a part le option explicit de pierrot qui vient se coller dans un private sub du dessus, à n'y rien comprendre ^^)

"option explicit" doit être placé en tête de module et une seule fois... oblige à la déclaration de toutes les variables... pour le reste j'ai pas trop compris...

bon après midi
@+
 

Verba_Tim

XLDnaute Occasionnel
Re : Activation Macro sous condition

Bonjour tout le monde ^^
Peut être (je dis bien peut être ^^") que tu pourrait tout simplement tester le nombre de cellule pleine avec un countif?
Comme ça tu exécute ton code jusqu'au nombre de cellule pleine uniquement...
Mais si le reste fonctionne bien, il est peut être inutile de passer par la...

A + ;)

VB_Tim
 

spwww

XLDnaute Nouveau
Re : Activation Macro sous condition

Merci en effet le
"'=NB.SI($C$42:$AL$42;"O")"
reduit pas mal ce que j'avais fait !!!

une petite question kjin si ça ne te dérange pas
sur le fichier que tu m'a envoyé y'a une possibilité pour que
If [AO42] < 36 Then

La cellule AO42 s'incremente de +1 a chaque fois?
C'est a dire que je puisse vérifier a partir de la même macro si la cellule AO43 est bien égale a 36, car je ne connais pas le nombre d'utilisateur qui vont répondre à ce questionnaire, cette solution fonctionne a merveille pour un seul utilisateur
en vous remerciant d'avance