Label_click automatisé

Sir Psymon Messages postés 13 Date d'inscription samedi 11 novembre 2000 Statut Membre Dernière intervention 13 janvier 2008 - 11 janv. 2008 à 17:22
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 - 13 janv. 2008 à 19:55
Bonjour à tous !

Je bosse sur un projet Excel VBA pour mes cours.
Dans le cadre de la programmation d'un login, j'affiche des informations à l'écran dans une étiquette/label.
Lorsque l'utilisateur est déconnecté, un message apparait. Lorsqu'il est connecté, son prénom s'affiche dans ce label.

Pour le moment, le message s'actualise lorsque l'on clique dessus. Je souhaiterais qu'il s'actualise automatiquement, lorsque l'on se log ou délog, ou lorsque l'on n'est pas connecté.
J'utilise un userform accueil et un userform login, l'étiquette est sur l'userform accueil.
Dans l'userform login j'ai un bouton ok et annuler.

Que dois-je faire ? Comment donner l'odre de cliquer sur cette étiquette à partir d'un bouton qui se situe dans un autre userform ?

J'ai modifié le code du userform Accueil pour qu'il effectue le click sur l'étiquette à chaque mouvement de souris, mais cela m'affiche un sablier moche pendant le déplacement de la souris.

Je sollicite votre aide et remercie d'avance ceux qui prendront la peine de m'aider.

8 réponses

FRatvks Messages postés 52 Date d'inscription mercredi 12 mars 2003 Statut Membre Dernière intervention 2 octobre 2009
11 janv. 2008 à 18:00
Utilise un timer a N seconde (les valeurs sont en milliseconde)
et dans ton timer tu met bouton_click
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
11 janv. 2008 à 18:11
"Utilise un timer a N seconde (les valeurs sont en milliseconde)
et dans ton timer tu met bouton_click"
Tiens ! Ca va être simple, sous VBA, sans utiliser l'Api de Windows ....
0
Sir Psymon Messages postés 13 Date d'inscription samedi 11 novembre 2000 Statut Membre Dernière intervention 13 janvier 2008
11 janv. 2008 à 20:38
Effectivement, j'ai quelques difficultés à utiliser cette fonction Timer.

J'ai une autre idée. Pouvez-vous me dire comment programmer le click sur mon label à partir d'un userform différent.

J'ai essayé naivement, la code suivant que je souhaite insérer dans le bouton ok de l'userform login. Je vous rappelle que le label/étiquette se situe dans l'userform Accueil.

Accueil.label2_click
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
11 janv. 2008 à 22:12
"Effectivement, j'ai quelques difficultés à utiliser cette fonction Timer"....


Et tu mesures là l'intérêt de ne pas se tromper de section ....

- La fonction Timer existe bien sous VBA et sous VB, avec la même fonctionnalité .

- un contrôle Timer (ce dont te parlait FRatvks) est tout autre chose que la fonction Timer et existe sous VB mais pas sous VBA !!!

J'attendrai, en ce qui me concerne, que ce sujet "passe" dans la section dans laquelle il aurait bien évidemment dû être "posté"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Sir Psymon Messages postés 13 Date d'inscription samedi 11 novembre 2000 Statut Membre Dernière intervention 13 janvier 2008
11 janv. 2008 à 22:21
Comme je le dis dans mon dernier poste, je pourrais me passer de cette fonction timer, si je savais lancer le click de mon label à partir d'un userform différent. Si tu peux me répondre à ce sujet, tu me ferais gagner un temps précieux.
Merci d'avoir répondu aussi vite en tout cas :)
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
12 janv. 2008 à 15:11
Dans la procédure Click() de ton Label, il y a du code... c'est déjà ça

Mets ce code dans un Module dans une procédure Public de ton choix, disons
Public Sub MonClick(()

Dans la procédure Click de ton Label, appelle seulement cette Sub
Call MonClick

Et dans ton UserForm ou ailleurs lorsque tu veux appeler cette procédure utilise encore
Call MonClick

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
Sir Psymon Messages postés 13 Date d'inscription samedi 11 novembre 2000 Statut Membre Dernière intervention 13 janvier 2008
12 janv. 2008 à 17:51
Merci de ta réponse. J'ai bien compris les étapes que tu m'as décrit, mais cela ne fonctionne pas.

Mon label s'intitule Label2_click
Lorsque je tape label2_click dans le code d'un bouton qui se trouve même userform que le label, il execute le click sur le label sans aucun problème.
Ce que je souhaiterai un code qui me dise, va chercher  tel userform et execute le label2_click qui se trouve dedans.

Si le module ne fonctionne pas c'est sûrement parce que le userform n'est pas précisé dans mon code, le voici :

Private Sub Label2_click()

Sheets("login").Select
Range("A2").Select

If ActiveCell.Value = "" Then
Label2 = "Vous n'êtes pas identifié"
End If

If ActiveCell.Value <> "" Then

Sheets("Utilisateur").Select
Range("B2").Select

Do While ActiveCell.Value <> ActiveWorkbook.Worksheets("Login").Range("A2")
ActiveCell.Offset(1, 0).Select
If ActiveCell.Value = "fin de liste" Then
MsgBox "Erreur"
ok = True
GoTo Erreur
End If
Loop

Label2 = ActiveCell.Offset(0, 2).Value + ", vous êtes connecté."
End If

Erreur:

End Sub
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
13 janv. 2008 à 19:55
Je ne suis pas certain que tu aies bien saisi ce que je disais (?)

'Dans ton UserForm ou ailleurs
Private Sub Label2_click()
    'Appel de la procédure avec le UserForm en paramètre
    MaProcédure Me
End Sub

'Dans un Module
Public Sub MaProcédure(USF As UserForm)
    If Sheets("login").Range("A2").Value = "" Then
        Label2 = "Vous n'êtes pas identifié"
    Else
        i = 2
        Do While Sheets("Utilisateur").Range("B" & i) <> Sheets("Login").Range("A2")
            If Sheets("Utilisateur").Range("B" & i).Value = "fin de liste" Then
                MsgBox "Erreur"
                ok = True
                Exit Sub
            End If
            i = i + 1
        Loop

        Label2 = Range("D" & i).Value & ", vous êtes connecté."
    End If

End Sub

Bon, là j'ai ajouté le UserForm en paramètre au cas où il aurait à être utilisé (commande venant de plusieurs UserForms...), mais il ne sert à rien ici, dans le code que tu fournis et que j'ai modifié.

Évite d'utiliser les Select lorsque ce n'est pas nécessaire. Ça ralentit le processus pour rien.

Pour le Label2, je n'ai rien mis devant, mais il faudrait que tu ajoutes le nom de la feuille ou du UserForm où il se trouve...(?)
ex:
USF.Label2 = Range("D" & i).Value & ", vous êtes connecté."
ou
Sheets("Login").Label2 = Range("D" & i).Value & ", vous êtes connecté."

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
Rejoignez-nous