Sélection par default d'un bouton de commande activX [Résolu]

mod77 1237 Messages postés vendredi 10 juillet 2009Date d'inscription 7 novembre 2017 Dernière intervention - 13 juin 2017 à 12:35 - Dernière réponse : yg_be 4193 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 18 décembre 2017 Dernière intervention
- 15 juin 2017 à 14:21
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?


Afficher la suite 

7 réponses

Répondre au sujet
mod77 1237 Messages postés vendredi 10 juillet 2009Date d'inscription 7 novembre 2017 Dernière intervention - 13 juin 2017 à 12:44
0
Utile
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?
Commenter la réponse de mod77
mod77 1237 Messages postés vendredi 10 juillet 2009Date d'inscription 7 novembre 2017 Dernière intervention - Modifié par mod77 le 13/06/2017 à 23:16
0
Utile
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!
Commenter la réponse de mod77
yg_be 4193 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 18 décembre 2017 Dernière intervention - 14 juin 2017 à 18:06
0
Utile
4
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
mod77 1237 Messages postés vendredi 10 juillet 2009Date d'inscription 7 novembre 2017 Dernière intervention - 14 juin 2017 à 22:27
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
yg_be 4193 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 18 décembre 2017 Dernière intervention - 14 juin 2017 à 22:56
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
mod77 1237 Messages postés vendredi 10 juillet 2009Date d'inscription 7 novembre 2017 Dernière intervention - 14 juin 2017 à 23:57
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
yg_be 4193 Messages postés lundi 9 juin 2008Date d'inscriptionContributeurStatut 18 décembre 2017 Dernière intervention > mod77 1237 Messages postés vendredi 10 juillet 2009Date d'inscription 7 novembre 2017 Dernière intervention - 15 juin 2017 à 14:21
j'avais compris, j'ai adapté le code pour éviter d'écrire num plusieurs fois.
Commenter la réponse de yg_be