Griser bouton VBA

Résolu
Bonjour,
je veux griser un bouton une fois que l'utilisateur s'en est servi. J'ai déjà cherché sur le site et trouvé de nombreuses réopnses, mais cela ne marche pas avec mon code.
Etant débutant je ne comprend pas pourquoi.
Si quelqu'un peut m'aider se serait parfait.

Ci-dessous mon code :

Sub Bouton60_QuandClic()

Call Tri

Bouton61.SetFocus
Bouton60.Enabled = False

End Sub

Bouton61 étant un autre bouton présent sur la page ou se trouve la bouton60.

PS : problème, VBA me dit : objet requis

merci d'avance
Configuration: Windows XP Internet Explorer 8.0

18 réponses

  1. Modérateur
    Salut,

    pourquoi tu donnes le focus à un autre bouton avant ?
    1. j'ai lu sur les différent forum qu'il fallait mettre le focus sur un autre bouton pour pouvoir désactiver le premier.
      Mais même sans mettre le focus sur un autre bouton cela ne marche pas...
  2. Modérateur
    voui, t'as raison, on ne peut pas modifier le contrôle actif.

    Je te propose ça (testé chez moi) :

    Me.Commande1.SetFocus
    Me.Commande0.Enabled = False

    'Me' fait référence à l'objet courant contenant le contrôle.
    1. Salut,

      malheureusement j'ai déjà éssayé cette solution... mais ça ne marche toujours pas...

      Sub Bouton60_QuandClic()

      Call Tri

      Me.Bouton61.SetFocus
      Me.Bouton60.Enabled = False

      End Sub

      le message d'erreur qui apparait est le suivant :

      Erreur de compilation : utilisation incorrect du mot clé Me

      je ne sais pas si c'est le problème mais cela vient peut être de la création même de mon bouton...
      j'ai vu sur les forums que certains utilisent des "privatesub". je ne sais pas vraiment quelle est la différence avec une "sub" normal mais c'est peut être ça ?

      en tout cas merci d'avoir essayé...
      1. Modérateur
        Tu as une version française ou anglaise ?

        parce qu'en principe, on devrait avoir Sub Bouton60_Click()
        1. Je pense avoir une version française parce que ça marche avec le "Sub Bouton60_QuandClic()".
          1. Bonjour,

            Désolé de m'incruster...

            Qu'y a-t-il dans ta procédure Tri ? Le problème vient peut de là, et non des boutons.

            ;o)
            1. Salut,

              "Tri" est une procédure qui me permet de classer des données selon différents critères.
              La procédure marche très bien toute seule et ne fait appel à aucunes variables extèrieures. Je ne pense pas que le problème vienne de là mais je vais vérifier quand même.

              Et pas de problème d'incruste, toute les idées sont bonnes à prendre.
              1. Modérateur
                tu peux tenter un me.bouton61.visible = false ?

                ton erreur du début "objet requis", elle est sur quelle ligne ?
                1. l'erreur est sur la ligne :
                  Me.Bouton61.SetFocus

                  je vais tenter le "visible"...
                  1. Modérateur
                    Il existe ton bouton61 ?
                2. Bon...
                  ça me fait les mêmes problèmes qu'avec "enabled" :

                  si je ne met pas de "Me", j'ai une erreur "objet requis"
                  si je met Me.bouton61.visible = false , j'ai une "Erreur de compilation : utilisation incorrect du mot clé Me"
                  1. Modérateur
                    J'ai cru que c'était avec ACCESS, si c'est pour EXCEL, "me" ne marche pas...
                3. Oui le bouton éxiste.
                  en tout cas il apparait sur la feuille de calcul et quand j'appui dessus il fait bien la procédure "tri" avant de planter...
                  1. Ton bouton est un outil "Formulaire" pour lancer une macro et non un contrôle de la boîte à outils, tu ne peux pas passer le focus sur ce type bouton.
                    1. Il faut afficher la barre outil Visual Basic (menu Afficher -> cocher Visual Basic)

                      Tu ouvres la boîte à outils, tu as différents contrôles, dont le bouton. Tu le colles sur ta feuille. Tu double-cliques dessus, tu es dans l'éditeur VB de la feuille et tu peux faire directement :

                      Private Sub CommandButton1_Click()
                          Me.CommandButton1.Enabled = False
                      End Sub


                      ;o)
                      1. De rien

                        Tu peux peut être mettre le sujet en "résolu". Merci

                        Bonne continuation.

                        ;o)