Sir Psymon
Messages postés13Date d'inscriptionsamedi 11 novembre 2000StatutMembreDernière intervention13 janvier 2008
-
11 janv. 2008 à 17:22
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 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.
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 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 ....
Sir Psymon
Messages postés13Date d'inscriptionsamedi 11 novembre 2000StatutMembreDernière intervention13 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.
Sir Psymon
Messages postés13Date d'inscriptionsamedi 11 novembre 2000StatutMembreDernière intervention13 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 :)
Sir Psymon
Messages postés13Date d'inscriptionsamedi 11 novembre 2000StatutMembreDernière intervention13 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
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 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