Changer de la propriété Enables d'un bouton sous condition

Bonsoir le forum,

Je viens une fois de plus quérir vos connaissances...

Comme le titre l'indique, je souhaiterai changer la procédure de mon Bouton1 sous condition:

Si le nom du classeur est classeur 1: Enabled: True

Si le nom du classeur est autre: Enable: False

J'attends vos proposition et merci pour votre temps,

Bien à vous,

Simon

If ActiveWorkbook.Name = "Classeur1" Then
    Bouton1.enable = True
Else
    Bouton1.enable = False
End If

reste à savoir quand appeler ton code, ce n'est pas clair dans ton exemple

Bonsoir Math,

Désoler si les précisions manquaient.

Je voudrai qu'il s'agisse d'un évènement workbook_open.

A chaque ouverture, la macro doit vérifier s'il s'agit du fichier original (classeur1), dans ce cas, le bouton1 n'est pas disponible. S'il s'agit d'une copie, le bouton devient disponible.

Merci de ton aide,

Simon

je ne suis pas trop sur de comprender

Private Sub Workbook_Open()

    If ActiveWorkbook.Name = "Classeur1" Then
        Bouton1.enable = True
    Else
        Bouton1.enable = False
    End If

End Sub

En fait, s'agissant d'un bouton de sauvegarde, il faudrait certainement utiliser une structure if-then.

Voila mon code:

Private Sub CommandButton1_Click()
  If ActiveWorkbook.Name = "Classeur1" Then
        MsgBox "Vous ne pouvez pas enregistrer le fichier original. Merci de créer une copie"
  Else
       ActiveWorkbook.SAVE

 End If

End Sub

Mais le fichier persiste à s'enregistrer malgré tout. J'ai du faire une erreure.

Merci de me corriger,

Simon

PS: Dsl si je suis long à la détente...oO

Ou se trouve ce bouton? s'il est dans une feuille du classeur1, la condition sera toujours vrai...

Tu veux pouvoir enregistrer quand le nom du classeur actif n'est pas égale à "Classeur1"?

Envoie si tu peux ton fichier exemple

Bonjour Math,

Le bouton se trouve dans une UserForm.

Je vais te détailler:

Mon classeur est géré par une Userform (UserformEMIDICE)

Il y a 2 boutons: BoutonEnregistrer et BoutonEnregistrerSous.

Si mon classeur s'appelle EMIDICE.xls, je voudrait que BoutonEnregistrer ne soit pas disponible afin d'éviter que l'utilisateur n'enregistre le classeur original avec ses données. Le bouton BoutonEnregistrerSous quant-à lui est disponible et le classeur s'enregistrera avec un nouveau nom (un nom de société et une date en l'occurence).

Si mon classeur porte un autre nom, le BoutonEnregistrer doit être disponible pour que l'utilisateur puisse enregistrer les modifications apportées à son document en concervant le même nom. Le BoutonEnregistrerSous est aussi disponible si l'utilisateur souhaite en changer le nom et certaines données et en conserver d'autres.

J'espère avoir été assez claire..

Si besoin, je t'enverrais mon classeur.

Merci de ton aide

je t'envoie un petit exemple.

Je mis ce code dans ThisWorkbook pour masquer les boutons selon le nom du classeur:

Private Sub Workbook_Open()
    If ActiveWorkbook.Name = "Patron.xls" Then
        Sheets("Feuil1").cmdSave.Enabled = False
        Sheets("Feuil1").cmdSaveAs.Enabled = True
    Else
        Sheets("Feuil1").cmdSave.Enabled = True
        Sheets("Feuil1").cmdSaveAs.Enabled = True
    End If
End Sub

et ce code bour les boutons

Private Sub cmdSave_Click()
    ActiveWorkbook.Save
End Sub

Private Sub cmdSaveAs_Click()
    ActiveWorkbook.SaveAs
End Sub

est-ce que tu as pensé à une façon de bloquer les boutons save de Excel?

22patron.zip (10.44 Ko)

Bonjour,

Pourquoi ne pas enregistrer l'original sous le format "modèle" (.xlt)?

J'ai testé ton code dans une feuille et il marche impec.

Par contre, quand j'essaye de l'utiliser dans une userform, il me dit pour cmdSave: "Erreur de compilation. Membre de méthode ou de donnée introuvable". (mes boutons s'appellent aussi cmdSave et cmdSaveAs , mon userform s'appelle UserFormEmidice et mon classeur SEMIDICE)

Voici mon code:

Private Sub Workbook_Open()

   If ActiveWorkbook.Name = "SEMIDICE.xls" Then
        UserFormEMIDICE.cmdSave.Enabled = False
        UserFormEMIDICE.cmdSaveAs.Enabled = True
    Else
        UserFormEMIDICE.cmdSave.Enabled = True
        UserFormEMIDICE.cmdSaveAs.Enabled = True
    End If

End Sub

J'espère ne pas trop te saouler

Merci de ton aide,

Simon

au lieu de workbook_Open, utilise UserForm_Initialize de ton Userform.

Salut Michel,

Effectivement, c'est une très bonne idée. je ne connaissais pas ce format et c'est claire que je vais l'utiliser... Merci^^

Néanmoins, il y a un hic...

Mon bouton "enregistrer sous" (celui de l'userform) déclenche une macro qui inscrit le chemin (path) actuel du fichier modèle dans "feuil1;A1", et génère automatiquement un nom de fichier (société+date) en "B2". La macro enregistre ensuite le nouveau fichier dans le dossier indiqué en "A1" et sous le nom indiqué en "B2".

Autrement dit, en cliquant sur "enregistrer sous", le fichier est automatiquement enregistrer dans le même dossier que l'original et sous le nom société+date (qui est variable bien sûre). L'utilisateur n'a donc pas la possibilité de choisir où enregistrer le fichier et ne peut pas le nommer librement. Cela empêche que les devis se retrouvent éparpillés et sous des noms sans signification...

Le problème qui se pose donc:

Avec le modèle xlt, si l'utilisateur clique sur "enregistrer", c'est "enregistrer sous" qui s'ouvre automatiquement (bon point, mon modèle ne risque pas d'être écrasé ) mais il peut choisir le chemin et le nom du fichier (ce que le début de ma macro évite ...)

Comment donc assimiler ma macro "enregistrer sous" à l'action d'enregistrement lorsqu'il s'agit du modèle et laisser la sauvegarde possible lorsque le document est un xls...

J'espère avoir été claire...

Voyez-vous une solution?

Merci d'avance,

Simon

-- 08 Avr 2010, 22:30 --

Un grand merci à tout les deux!!!

Math tu es génial, tu trouves toujours une réponse. Mes questions sont quelques fois un peut simple mais j'espère que les notions de base comme "userform intialize" à la place de "wokbook open" lorsqu'il s'agit d'une userform vont devenir des automatismes ^^

Michel, tu m'as appris quelque chose de bien utile aujourd'hui.

Je vais donc combiner vos deux techniques, c'est encore mieux que j'espérais!!!!

A bientôt pour un nouveau fil (j'ai encore plein de questions )

Merci encore,

Simon

Rechercher des sujets similaires à "changer propriete enables bouton condition"