Sélection par default d'un bouton de commande activX

Résolu
Bonjour,

J'ai un bouton de commande activX qui me permet d'entrer une valeur par "inputbox".
Une fois la valeur entrée, je vérifie que ce n'est pas un doublon dans une boucle for "each worksheets".
Si ça l'est alors j'efface ma cellule "03", j'invite a entrer une nouvelle valeur et je quitte ma boucle "for each worksheets".

J'aimerais qu'une fois sorti, mon bouton de commande soit pré-sélectionné, pour taper directement "enter" pour l'activer, plutôt que chercher la souris pour cliquer MAIS seulement dans ce cas.

Comment puis-je faire svp?



--
Savoir dire NON est un devoir et une force! N'ayez pas peur! L'union fait la force!

Passez en résolu si ça l'est!

3 réponses

  1. Eh bien finalement j'ai juste rappelé sa fonction par :
    Call cbLire_Click

    Mais je ne sais pas si le code "exit" après l'appel est nécessaire?
    1. Voici le code de mon bouton cbLireVote_Click():


      'Demande du numéro
      num = InputBox("Entrer un numéro:", "Vote ", "0")

      'Controle si numéro de feuil "Réso XX" existe déjà dans une feuille

      For Each WS In Worksheets
      If Left(WS.Name, 5) = "Réso " Then 'si Nomfeuil = "Réso "
      If Mid(WS.Name, 6) = num Then
      MsgBox (" Numéro déjà existant! Entrer un nouveau numéro svp!")
      Sheets("Votes").Range("O3") = ""
      Call cbLireVote_Click
      Exit For
      'si num existe déjà on sort de la boucle
      Else
      'si num n'existe pas, écrit le numéro en "O3"
      Worksheets("Votes").Range("O3") = num
      End If
      Else 'si Nomfeuil différent de "Réso "
      'Ecrit le numéro en "O3"
      Worksheets("Votes").Range("O3") = num
      End If 'Nom feuille
      Next WS


      Mais les lignes en gras m'inquiète car j'appelle dans la procédure cette même procédure.

      Est-ce que je fais bien, svp? ou y a-t-il une façon plus sereine de le faire svp?

      Savoir dire NON est un devoir et une force! N'ayez pas peur! L'union fait la force!

      Passez en résolu si ça l'est!
      1. Contributeur
        plus serein, vite fait et pas très élégant:
         'Demande du numéro
           debut:
              num = InputBox("Entrer un numéro:", "Vote ", "0")
        
            'Controle si numéro de feuil "Réso XX" existe déjà dans une feuille
        
            For Each WS In Worksheets
              If Left(WS.Name, 5) = "Réso " Then    'si Nomfeuil = "Réso "
                If Mid(WS.Name, 6) = num Then       
                    MsgBox (" Numéro déjà existant! Entrer un nouveau numéro svp!")
                    Sheets("Votes").Range("O3") = ""
                     goto debut
                Else
                    'si num n'existe pas, écrit le numéro en "O3"
                    Worksheets("Votes").Range("O3") = num
                End If
              Else  'si Nomfeuil différent de "Réso "
                'Ecrit le numéro en "O3"
                Worksheets("Votes").Range("O3") = num
              End If    'Nom feuille
            Next WS
        1. Merci yg_be,

          Je ne sais pas si tu as remarqué mais au 2e Else je vais écrire autant de fois qu'il y a de feuille qui ne commence pas par "Réso ".

          Y a -t-il un moyen d'éviter cela même si j'ai que 4 feuilles de nom différent?

          Merci pour le "Goto" je ne connaissais pas
        2. Contributeur
          je ne suis pas certain d'avoir compris ce que tu voulais faire, et je suggère:
          Option Explicit
          Sub test()
          Dim unique As Boolean
          Dim num As String
          
          unique = False
          Do
              num = InputBox("Entrer un numéro:", "Vote ", "0")
              If existe(num) Then
                  MsgBox (" Numéro déjà existant! Entrer un nouveau numéro svp!")
              Else
                  unique = True
              End If
          Loop While Not unique
          Worksheets("Votes").Range("O3") = num
          End Sub
          
          Function existe(num As String) As Boolean
          Dim ws As Worksheet
          
          For Each ws In Worksheets
                If Left(ws.Name, 6) = "Réso " & num Then
                  existe = True
                  Exit Function
              End If
          Next ws
          existe = False
          End Function
          
        3. Je pense que je me suis mal exprimé.

          Ce que je veux indiquer c'est qu'il n'est pas nécessaire de réécrire plusieurs fois "num".
          On peut peut-être l'éviter.

          En fait, je n'avais pas précisé que je nomme les feuilles selon la valeur de "num".
          C'est pour cela, qu'avant de la créer, je dois vérifier qu'une feuille ne porte pas déjà ce nom et numéro (Réso1, Réso2...) parmi les feuilles existantes.
          Mais ton code est bon ça marche très bien!

          Merci
        4. Contributeur
          @mod77j'avais compris, j'ai adapté le code pour éviter d'écrire num plusieurs fois.