Améliorer gestion image animée gif dans formulaire
Résolu/Fermé
A voir également:
- Améliorer gestion image animée gif dans formulaire
- Carte de voeux virtuelle animée et musicale gratuite - Guide
- Image iso - Guide
- Formulaire de réclamation facebook - Guide
- Acronis true image - Télécharger - Sauvegarde
- Logiciel gestion photo gratuit - Guide
11 réponses
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
19 oct. 2013 à 14:10
19 oct. 2013 à 14:10
Bonjour,
Employer le Webrowser uniquement pour afficher un gif me parais bien disproportionner.
Ce serait beaucoup plus rapide avec des images décomposées.
1°) décomposer ton gif (il y a des logiciel gratuit qui font ça, voir les téléchargement.
2°) Mettre autant d'images (cachées) que de poses.
3°) un timer qui affiche les images dans une PictureBox l'une après l'autre.
A+
Employer le Webrowser uniquement pour afficher un gif me parais bien disproportionner.
Ce serait beaucoup plus rapide avec des images décomposées.
1°) décomposer ton gif (il y a des logiciel gratuit qui font ça, voir les téléchargement.
2°) Mettre autant d'images (cachées) que de poses.
3°) un timer qui affiche les images dans une PictureBox l'une après l'autre.
A+
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
19 oct. 2013 à 17:43
19 oct. 2013 à 17:43
Bonsoir lermitte !
Merci d'avoir pris le temps de regarder ma demande et pour tes suggestions.
Webbrowser est simple à paramétrer et fonctionne bien. C'est très rapide s'il n'y a que le GIF qui tourne.
J'ai testé, partiellement, ta solution. Mon résultat n'est pas encore satisfaisant. Pas eu beaucoup de temps pour cela. Je ferai d'autres tests en début de semaine pour esayer de réduire le temps de traitement avec deux tâches en // avant de clore cette discussion.
Pour décomposer les GIFS, j'ai trouvé un décodeur qui permet de le faire en ligne
http://www.bancreator.com/decoder.html
Encore merci de tes idées,
Bonne soirée
Jean
Merci d'avoir pris le temps de regarder ma demande et pour tes suggestions.
Webbrowser est simple à paramétrer et fonctionne bien. C'est très rapide s'il n'y a que le GIF qui tourne.
J'ai testé, partiellement, ta solution. Mon résultat n'est pas encore satisfaisant. Pas eu beaucoup de temps pour cela. Je ferai d'autres tests en début de semaine pour esayer de réduire le temps de traitement avec deux tâches en // avant de clore cette discussion.
Pour décomposer les GIFS, j'ai trouvé un décodeur qui permet de le faire en ligne
http://www.bancreator.com/decoder.html
Encore merci de tes idées,
Bonne soirée
Jean
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
19 oct. 2013 à 20:08
19 oct. 2013 à 20:08
J'ai testé, partiellement, ta solution.
Comprend pas, y a juste à cliquer sur le bouton ?
Comprend pas, y a juste à cliquer sur le bouton ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
J'ai testé la décomposition du gif et son intégration dans un UF. ça, c'est bon. L'avantage de ta solution, c'est qu'on peut modifier la couleur du fond ou travailler en transparence.
Ce que je dois faire maintenant, c'est appliquer cette solution dans mon application, voir si cela tourne plus rapidement, ou tout au moins assez rapidement pour la valider. Et même si j'y arrive, j'ai encore un peu de mal avec les boucles imbriquées (do while, doevents...)
C'est ce que je voulais dire par 'partiellement'
Bonne journée
J'ai testé la décomposition du gif et son intégration dans un UF. ça, c'est bon. L'avantage de ta solution, c'est qu'on peut modifier la couleur du fond ou travailler en transparence.
Ce que je dois faire maintenant, c'est appliquer cette solution dans mon application, voir si cela tourne plus rapidement, ou tout au moins assez rapidement pour la valider. Et même si j'y arrive, j'ai encore un peu de mal avec les boucles imbriquées (do while, doevents...)
C'est ce que je voulais dire par 'partiellement'
Bonne journée
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
21 oct. 2013 à 13:22
21 oct. 2013 à 13:22
Re,
Je ne vois pas l'utilité de mettre une image pour faire patienter ? l'initialisation de la liste est immédiate ! +- un 10e de seconde ?
avec ce code...
A+
Je ne vois pas l'utilité de mettre une image pour faire patienter ? l'initialisation de la liste est immédiate ! +- un 10e de seconde ?
avec ce code...
Option ExplicitSi plus de procédures à actualiser tu dis, je te montrerais comment procéder pour inclure l'animation.
Private Sub A_Fermer1_Click()
Unload Me
End Sub
Private Sub A_Initialiser_Click()
Unload Me
UserForm1.Show
End Sub
Private Sub UserForm_Initialize()
Dim Derligne As Long, G As Long
With Sheets("Donnees")
Derligne = .Cells(Rows.Count, 1).End(xlUp).Row
For G = 1 To Derligne
ListBox1.AddItem .Cells(G, "A")
Next G
End With
'Me.StartUpPosition = 1
End Sub
A+
Bonjour,
J'ai effectivement quelques soucis...
J'utilise presque la même procédure que toi pour l'affichage de la liste, un peu différente car j'ai plusieurs données à afficher sur la même ligne. Dans mon fichier actuel, j'ai environ 500 lignes et cela prend entre 2 et 3 secondes pour l'affichage. Donc, là, effectivement, je n'ai pas vraiment besoin d'une animation. Un simple message suffit. Je voulais la mettre dans une procédure de mise à jour de données plus complexe, pas vraiment parce que c'est utile mais parce que j'aime bien apprendre de nouvelles choses sous VBA (je serai mort que je n'en aurai pas vu le quart de la moitié...). Je voulais faire quelque chose de différent de la progress bar. Cela semble rallonger le temps de traitement par 3 ou 4. Je pense que je vais laisser tomber. Si tu penses aussi que cela rallonge logiquement le temps de traitement, laisses tomber aussi. Si, par contre, tu penses que le temps de traitement ne devrait pas être impacté par l'animation, j'apprécierai ton aide. Voici mon code, qui ne fonctionne pas vraiment : l'affichage de la liste tourne en boucle, i.e. repart à 1 après avoir fini... et l'animation est très très lente.
Dim x As Integer
Dim MyTimer As Double
x = 10
MyTimer = Timer
Do
On Error Resume Next
Me.Image1.Picture = LoadPicture("D:\Mes documents\Mes images\Animees\Anim" & x & ".Gif")
On Error GoTo 0
Do
Loop While Timer - MyTimer < 0.2 '0.07
If x = 17 Then
x = 10
Else
x = x + 1
End If
MyTimer = Timer
DoEvents
With Sheets("Donnees")
Me.ListBox1.AddItem
derligne = .Cells(Rows.Count, 1).End(xlUp).Row
For G = 1 To 100 'derligne
Me.ListBox1.AddItem
Me.ListBox1.List(infos, 0) = .Cells(G, "A") 'j utilise cette méthode car plusieurs données à ajouter sur chaque ligne
infos = infos + 1
DoEvents
Next G
End With
Loop While Running
Running = False
Merci par avance de ton aide
Bonne journée
Jean
J'ai effectivement quelques soucis...
J'utilise presque la même procédure que toi pour l'affichage de la liste, un peu différente car j'ai plusieurs données à afficher sur la même ligne. Dans mon fichier actuel, j'ai environ 500 lignes et cela prend entre 2 et 3 secondes pour l'affichage. Donc, là, effectivement, je n'ai pas vraiment besoin d'une animation. Un simple message suffit. Je voulais la mettre dans une procédure de mise à jour de données plus complexe, pas vraiment parce que c'est utile mais parce que j'aime bien apprendre de nouvelles choses sous VBA (je serai mort que je n'en aurai pas vu le quart de la moitié...). Je voulais faire quelque chose de différent de la progress bar. Cela semble rallonger le temps de traitement par 3 ou 4. Je pense que je vais laisser tomber. Si tu penses aussi que cela rallonge logiquement le temps de traitement, laisses tomber aussi. Si, par contre, tu penses que le temps de traitement ne devrait pas être impacté par l'animation, j'apprécierai ton aide. Voici mon code, qui ne fonctionne pas vraiment : l'affichage de la liste tourne en boucle, i.e. repart à 1 après avoir fini... et l'animation est très très lente.
Dim x As Integer
Dim MyTimer As Double
x = 10
MyTimer = Timer
Do
On Error Resume Next
Me.Image1.Picture = LoadPicture("D:\Mes documents\Mes images\Animees\Anim" & x & ".Gif")
On Error GoTo 0
Do
Loop While Timer - MyTimer < 0.2 '0.07
If x = 17 Then
x = 10
Else
x = x + 1
End If
MyTimer = Timer
DoEvents
With Sheets("Donnees")
Me.ListBox1.AddItem
derligne = .Cells(Rows.Count, 1).End(xlUp).Row
For G = 1 To 100 'derligne
Me.ListBox1.AddItem
Me.ListBox1.List(infos, 0) = .Cells(G, "A") 'j utilise cette méthode car plusieurs données à ajouter sur chaque ligne
infos = infos + 1
DoEvents
Next G
End With
Loop While Running
Running = False
Merci par avance de ton aide
Bonne journée
Jean
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
22 oct. 2013 à 10:37
22 oct. 2013 à 10:37
utilise cette méthode car plusieurs données à ajouter sur chaque ligne
Je ne vois vraiment pas où tu ajoute plusieurs données ???
L'animation tel que je t'ai montrer ne prend pratiquement aucun temps mesurable, le timer travail dans un autre thread.
explique pour plusieurs données à ajouter et je verrais pour l'ajouter dans mon code avec l'animation en plus.
Je ne vois vraiment pas où tu ajoute plusieurs données ???
L'animation tel que je t'ai montrer ne prend pratiquement aucun temps mesurable, le timer travail dans un autre thread.
explique pour plusieurs données à ajouter et je verrais pour l'ajouter dans mon code avec l'animation en plus.
Pardon si je me suis mal exprimé. Par plusieurs données à ajouter, j'entends les données à ajouter dans chaque colonne de la listbox. Voici un exemple :
For G = 10 To derligne
Me.ListBox1.AddItem
Me.ListBox1.List(infos, 0) = .Cells(G, "B")
Me.ListBox1.List(infos, 1) = .Cells(G, "C")
Me.ListBox1.List(infos, 2) = .Cells(G, "D")
Me.ListBox1.List(infos, 3) = .Cells(G, "E")
Me.ListBox1.List(infos, 4) = .Cells(G, "F")
Me.ListBox1.List(infos, 5) = .Cells(G, "G")
infos = infos + 1
Next G
A+
Jean
For G = 10 To derligne
Me.ListBox1.AddItem
Me.ListBox1.List(infos, 0) = .Cells(G, "B")
Me.ListBox1.List(infos, 1) = .Cells(G, "C")
Me.ListBox1.List(infos, 2) = .Cells(G, "D")
Me.ListBox1.List(infos, 3) = .Cells(G, "E")
Me.ListBox1.List(infos, 4) = .Cells(G, "F")
Me.ListBox1.List(infos, 5) = .Cells(G, "G")
infos = infos + 1
Next G
A+
Jean
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 190
22 oct. 2013 à 13:48
22 oct. 2013 à 13:48
Bon, beh y faut VRAIMENT pas d'animation.
Met ce code dans l'initialise
A+
Met ce code dans l'initialise
Private Sub UserForm_Initialize()Tu dis..
Dim Derligne As Long
Derligne = Sheets("Donnees").Cells(Rows.Count, 1).End(xlUp).Row
ListBox1.RowSource = "Donnees!A10:E" & Derligne
End Sub
A+
Trop fort !
Effectivement, la liste apparaît instantanément et il n'est nul besoin d'animation ! Merci beaucoup. Je vais devoir revoir beaucoup de listbox !
Je suppose que la méthode for to est intéressante quand on veut filtrer les données à afficher, mais pas pour une liste complète.
Avant de clôturer cette discussion, je vais faire un test pour inclure une animation dans un traitement un peu long, pour ma culture personnelle. Si j'ai un souci, je me permettrais de revenir vers toi. Pas avant une semaine, parce que trop d'autres choses à faire.
Bon après-midi.
Jean
Effectivement, la liste apparaît instantanément et il n'est nul besoin d'animation ! Merci beaucoup. Je vais devoir revoir beaucoup de listbox !
Je suppose que la méthode for to est intéressante quand on veut filtrer les données à afficher, mais pas pour une liste complète.
Avant de clôturer cette discussion, je vais faire un test pour inclure une animation dans un traitement un peu long, pour ma culture personnelle. Si j'ai un souci, je me permettrais de revenir vers toi. Pas avant une semaine, parce que trop d'autres choses à faire.
Bon après-midi.
Jean
Bonjour,
Avec la technique que tu m'as montrée pour l'affichage des listes, je n'ai plus besoin d'animation puisque mes temps d'affichage, même avec plusieurs opérations en cascade, sont quasi instantanés.
Je garde cependant la technique pour la décomposition d'un GIF. Cela me sera certainement utile.
Merci pour ton temps et tes explications.
Cordialement,
Jean
Avec la technique que tu m'as montrée pour l'affichage des listes, je n'ai plus besoin d'animation puisque mes temps d'affichage, même avec plusieurs opérations en cascade, sont quasi instantanés.
Je garde cependant la technique pour la décomposition d'un GIF. Cela me sera certainement utile.
Merci pour ton temps et tes explications.
Cordialement,
Jean