Rendre un bouton disponible si critère de cellule atteint

Salut le forum,

je ne savais pas si je devais continuer sur l'autre fil ou si je devais en créer un nouveau puisqu'il s'agit de la suite de mon problème de bouton mais sans être tout à fait le même problème.

Enfin, bon!

J'ai un bouton qui n'est pas disponible à l'ouverture d'un fichier mais qui doit le devenir si la cellule C34 enregistre la valeur 7.

Comment faire réagir un activeX control par une cellule?

J'ai pensé le faire par un Private sub() mais on y inscrit quoi? Il ne s'agit pas d'un click ou de quelque chose du genre.

Merci pour votre aide.

Salut Eric

tu ajoute dans ta macro concernée :

if [c34]=7 Then 
ActiveSheet.Shapes("Autoshape 19").Visible = true
suite de ta macro....
End if

claude.

Salut Claude,

le problème n'est pas d'activer ce bouton mais de le faire à partir du résultat d'une cellule. Une cellule n'a pas de macro concernée.

Amicalement.

bonjour à tous,

Eric,

Dans n'importe quelle macros, on est capable de tester la valeur d'une cellule !

Claude..

Je suis d'accord avec ça mais la macro testera la valeur au moment où elle sera sollicitée et non pas quand la valeur de la cellule atteindra 7.

J'ai essayé d'incorporer le [C34] = 7 dans une macro et ça ne se déclenche pas tout seul quand la valeur de la cellule passe à 7.

re,

fait voir la macro que tu as essayé de modifier ou envoie le fichier.

claude.

Bonsoir,

Regarde ton fichier venant de l'autre fil et ( https://www.excel-pratique.com/forum/viewtopic.php?p=24780 ) dans lequel j'ai mis un bouton différent.

- A l'ouverture de ton fichier le bouton est toujours inactif mais reste visible (macro dans Thisworbook). Je pense que c'est plus sain de voir qu'il y a un bouton plutôt que de le mettre à l'arrière plan. en effet, si quelqu'un reprend ton fichier et que le bouton n'est pas visible, il ne le saura jamais en quelque sorte.

- Le bouton ne sera actif que si tu places la valeur 7 dans la cellule C37. Cette action est provoquée par la macro TEST (dans le module) qui est appellée par la macro Private Sub Worksheet_Change(ByVal Target As Excel.Range) et ce, sur un changement de valeur dans la feuille "Inscription"

Si la valeur est déjà à 7 à l'ouverture, le bouton sera quand même inactif. Remets un 7 ou double clique dans la cellule puis ENTREE pour réactiver le bouton. On peut adapter la macro bien sûr si tu veux autre chose.

https://www.excel-pratique.com/~files/doc/Cv5HpRepertoireV3.xls

A te relire

Dan

Bonsoir, tu peux essayer comme ceci :

Si tu écris dans la cellule C34 :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$34" Then ActiveSheet.Shapes("Autoshape 1").Visible = IIf(Target = 7, True, False)
End Sub

Edit : sur une seule ligne

si le résultat de C34 est issu d'une formule :

Private Sub Worksheet_Calculate()
ActiveSheet.Shapes("Autoshape 1").Visible = IIf([c34] = 7, True, False)
End Sub

Salut à tous et merci pour vos conseils.

D'abord, comme je l'ai mentionné sur l'autre fil, mon fichier a désormais un bouton qui est un ActiveX control. Donc, Nad-Dan, j'avais déjà adopté ce que tu me suggères. C'est à dire, un bouton qui est toujours visible mais qui est inaccessible si la valeur de la cellule C34 n'est pas équivalente à 7.

Ensuite, j'ai appliqué tes macros en tentant de conserver le nom du bouton que j'avais et qui est "Ajouter".

Cependant, j'ai toujours un message d'erreur qui apparaît. Soit à l'ouverture du fichier et quand la valeur de C34 atteint 7.

Pour felix,

je ne comprends pas ce que tu veux que je fasse. Si j'écris dans la cellule le code que tu me proposes, je ne peux plus y retrouver ma formule.

De toute façon, à ce stade-ci, j'aimerais mieux maintenir la méthode que j'ai adopté et demeurer dans cette voie.

Voici le fichier :

https://www.excel-pratique.com/~files/doc/Repertoire_v2.zip

Merci encore pour votre aide.

P.S. Vous verrez encore ce fichier car pour terminer le travail, il me restera 2 boutons à créer et j'aurai besoin de vos talents en VBA.

Vous trouverez ci-joint une proposition, qui est loin d'être parfaite j'en convient. Il me semble que l'idée d'Eric est de ne pas permettre l'enregistrement tant que les différentes cellules ne sont pas renseignées. D'où l'idée du bouton qui s'affiche mais ne peut pas être exécuté.

Ci joint le fichier avec une autre proposition (pour le même but) : faire une macro avec des MsgBox qui bloque l'exécution de la macro enregistré tant que les cellules ne sont pas renseigné. En plus, si des fois tu es un peu fatigué, le message t'indique l'action à réaliser.

Bon c'était juste pour info. A toi de faire ce que tu en veux. Je pense que la macro proposé peut être améliorée... mais là faut que j'y aille...

Bertrand

https://www.excel-pratique.com/~files/doc/Une_Idee.xls

PS : pour être en dessous de 100k j'ai du supprimer la feuille 3 sur ton fichier (désolé !!!). Par ailleurs, lorsque je l'ai utilisé le message erreur 1004 n'arrêtait pas de s'inscrire.

Merci Bertrand mais je crois que je vais me contenter de trouver la solution pour le bug qui est dans mon code.

Ta solution défait complètement ma feuille répertoire et j'ai l'impression de prendre du recul. Mon bug est juste dans l'identification du bouton je crois.

Salut le forum

Essaye avec Visible à la place de Enabled

ActiveSheet.Shapes("Ajouter").Visible = True

Mytå

Bonsoir,

si tu veux maintenir la propriété enabled à ton bouton de commande, utilise ce code :

ActiveSheet.Shapes("Ajouter").OLEFormat.Object.Enabled = True

Salut felix,

ta ligne de code semble régler le problème mais je n'en serai certain que lorsque cette erreur sera corrigé :

Dans ce code, la 3e ligne, celle qui commence par "Set bout" a une erreur.

Sub Test()

Dim bout As Button

Set bout = ActiveSheet.Buttons("Ajouter")

If Range("C34") = 7 Then

ActiveSheet.Shapes("Ajouter").OLEFormat.Object.Enabled = True

Else: ActiveSheet.Shapes("Ajouter").OLEFormat.Object.Enabled = False

End If

End Sub

Merci Myta pour ta solution mais je souhaite maintenir ce bouton visible même s'il n'est pas accessible.

re le forum

Supprime les deux lignes, je n'en vois pas l'utilité avec le code fourni.

Dim bout As Button 
Set bout = ActiveSheet.Buttons("Ajouter")

Mytå

WOW!

Ça fonctionne A1.

Merci à vous tous.

Je peux m'attaquer aux deux derniers boutons. Mais ça, c'est un autre fil.

Rechercher des sujets similaires à "rendre bouton disponible critere atteint"