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

Résolu
mod77 Messages postés 1320 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
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. mod77 Messages postés 1320 Date d'inscription   Statut Membre Dernière intervention   53
     
    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?
    0
  2. mod77 Messages postés 1320 Date d'inscription   Statut Membre Dernière intervention   53
     
    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!
    0
  3. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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
    0
    1. mod77 Messages postés 1320 Date d'inscription   Statut Membre Dernière intervention   53
       
      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
      0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      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
      
      0
    3. mod77 Messages postés 1320 Date d'inscription   Statut Membre Dernière intervention   53
       
      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
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > mod77 Messages postés 1320 Date d'inscription   Statut Membre Dernière intervention  
         
        j'avais compris, j'ai adapté le code pour éviter d'écrire num plusieurs fois.
        0