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

Résolu/Fermé
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 - 13 juin 2017 à 12:35
yg_be Messages postés 23328 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 novembre 2024 - 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?


3 réponses

mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
13 juin 2017 à 12:44
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
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
Modifié le 13 juin 2017 à 23:16
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
yg_be Messages postés 23328 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 novembre 2024 Ambassadeur 1 551
14 juin 2017 à 18:06
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
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
Modifié le 14 juin 2017 à 22:28
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
yg_be Messages postés 23328 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 novembre 2024 1 551
Modifié le 14 juin 2017 à 23:33
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
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
Modifié le 15 juin 2017 à 00:35
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
yg_be Messages postés 23328 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 17 novembre 2024 1 551 > mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024
15 juin 2017 à 14:21
j'avais compris, j'ai adapté le code pour éviter d'écrire num plusieurs fois.
0