Bonsoir
J'ai dans mon userform 4 images que j'aimerai faire apparaitre tour a tour toutes les 5 secondes.
Quelqu'un pourrait-il me donner un coup de main.
Merci d'avance.
Bonsoir
J'ai dans mon userform 4 images que j'aimerai faire apparaitre tour a tour toutes les 5 secondes.
Quelqu'un pourrait-il me donner un coup de main.
Merci d'avance.
Bonsoir.
Je te propose ceci, dans le module associé au userFormDans un module standard
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Private Sub UserForm_Initialize() Me.Image1.Visible = True Application.OnTime Now + TimeValue("00:00:04"), "subShowPic" End SubCordialement,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 Sub subShowPic() Dim i As Integer If fUsfIsLoaded("UserForm2") Then For i = 1 To 4 If UserForm2.Controls("Image" & i).Visible Then Exit For Next i If i < 4 Then UserForm2.Controls("Image" & i).Visible = False UserForm2.Controls("Image" & i + 1).Visible = True Else UserForm2.Controls("Image4").Visible = False UserForm2.Controls("Image1").Visible = True End If Application.OnTime Now + TimeValue("00:00:05"), "subShowPic" End If End Sub Function fUsfIsLoaded(ByVal sUsfName As String) As Boolean Dim oUsf As Object For Each oUsf In VBA.UserForms If oUsf.Name = sUsfName Then Exit For Next oUsf If Not oUsf Is Nothing Then fUsfIsLoaded = True Set oUsf = Nothing End Function
PGZ

Bojour,
à rajouter dans ton UserForm
Code UserForm2 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Public Sub subShowPic() Static i As Integer Me.Controls("Image1").Visible = False Me.Controls("Image2").Visible = False Me.Controls("Image3").Visible = False Me.Controls("Image4").Visible = False i = i + 1 Me.Controls("Image" & i).Visible = True If i = 4 Then i = 0 Application.OnTime Now + TimeValue("00:00:05"), "UserForm2.subShowPic" End Sub
Merci à pgz et rdurupt pour vos réponses.
Au fait, avec la réponse de pgz, ça marchait déjà.
Si vous pouvez mettre des commentaire a coté, se serai formidable pour pourvoir comprendre ce code que jusque là je n'y ai rien compris, même si ça fonctionne. Voilà pourquoi je vais encore attendre un peu avant de valider comme "Résolu"
Merci encore.
Mon Objectif est d'atteindre mon Objectif.
RastaBomboclat

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Public Sub subShowPic() 'Je déclare un sub public dans mon formulaire pour la rendre accessible de lextérieur. Static i As Integer 'je déclare une variable static pour que la valeur reste en mémoire même quand je quitte la sub et/ou le formulaire! 'je masque toutes les images. Me.Controls("Image1").Visible = False Me.Controls("Image2").Visible = False Me.Controls("Image3").Visible = False Me.Controls("Image4").Visible = False i = i + 1 'incrément ma variable static pour quelle colle successivement aux images 1,2,3,4 Me.Controls("Image" & i).Visible = True 'je rends visible limage qui correspond à i (1,2,3,4) If i = 4 Then i = 0 'si i match sur l'image 4 je replace i à zéro pour qu'a la prochaine incrémentation il affiche l'image1 Application.OnTime Now + TimeValue("00:00:05"), "UserForm2.subShowPic" 'vue que ma sub est public j'y accède de lextérieur du formulaire! End Sub
Bonjour.
Je pensais que c'était clair. Voici qq explications.
A l'ouverture du formulaireLe formulaire a été créé avec 4 images masquées. A l'ouverture du formulaire, on rend visible la première image et on commande l'exécution de "subShowPic" 5 s plus tard.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Private Sub UserForm_Initialize() Me.Image1.Visible = True Application.OnTime Now + TimeValue("00:00:04"), "subShowPic" End SubLe code vérifie que le formulaire est toujours ouvert et si c'est le cas, regarde quelle image est visible de Image1 à Image 4. Si c'est Image 1 à 3, alors l'image visible est masquée et la suivante est rendue visible (i et i+1). Si c'est l'image 4, alors elle est masquée et c'est la 1 qui est rendue visible (4 et 1).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 Sub subShowPic() Dim i As Integer If fUsfIsLoaded("UserForm2") Then For i = 1 To 4 If UserForm2.Controls("Image" & i).Visible Then Exit For Next i If i < 4 Then UserForm2.Controls("Image" & i).Visible = False UserForm2.Controls("Image" & i + 1).Visible = True Else UserForm2.Controls("Image4").Visible = False UserForm2.Controls("Image1").Visible = True End If Application.OnTime Now + TimeValue("00:00:05"), "subShowPic" End If End Sub
Ceci fait, on programme à nouveau l'exécution de cette procédure 5 s plus tard. ET donc toutes les 5 s, l'image visible change.Cette fonction permet de s'assurer que le formulaire est ouvert. Ici on parcourt la liste des usf ouverts (= collection VBA.UserForms). SI on trouve le nôtre, on sort de la boucle et l'objet dans oUsf, c'est notre formulaire. Si on ne trouve pas, on sort de la boucle avec oUsf = Nothing.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Function fUsfIsLoaded(ByVal sUsfName As String) As Boolean Dim oUsf As Object For Each oUsf In VBA.UserForms If oUsf.Name = sUsfName Then Exit For Next oUsf If Not oUsf Is Nothing Then fUsfIsLoaded = True Set oUsf = Nothing End Function
Cordialement,
PGZ

Code Module1 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 sub Test UserForm2.subShowPic 'Lance le formulaire! end sub
Code UserForm2 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Public Sub subShowPic() 'Je déclare un sub public dans mon formulaire pour la rendre accessible de lextérieur. Static i As Integer 'je déclare une variable static pour que la valeur reste en mémoire même quand je quitte la sub et/ou le formulaire! 'je masque toutes les images. Me.Controls("Image1").Visible = False Me.Controls("Image2").Visible = False Me.Controls("Image3").Visible = False Me.Controls("Image4").Visible = False i = i + 1 'incrément ma variable static pour quelle colle successivement aux images 1,2,3,4 Me.Controls("Image" & i).Visible = True 'je rends visible limage qui correspond à i (1,2,3,4) If i = 4 Then i = 0 'si i match sur l'image 4 je replace i à zéro pour qu'a la prochaine incrémentation il affiche l'image1 Application.OnTime Now + TimeValue("00:00:05"), "UserForm2.subShowPic" 'vue que ma sub est public j'y accède de lextérieur du formulaire! me.show 'affiche le formulaire End Sub
Partager