Boostez vos compétences Excel avec notre communauté !
Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force.
Apprenez, échangez, progressez – et tout ça gratuitement !
👉 Inscrivez-vous maintenant !
A l'ouverture de mon formulaire (il a bien sa propriété ''ShowModal'' à False), le Caption affiche le décompte comme ceci : "A propos (fermeture dans x secondes)".
J'ai tenté de programmer un bout de code qui me semblait assez simple et pourtant, çà ne fonctionne pas le temps que je l'aurais souhaité (affichage pendant 10 sec. et puis fermeture automatique).
Pouvez-vous m'aider ?
Où ai-je mal codé ? Je suis en train de m'emberlificoter les pinceaux avec les quelques variables que je change une à une et franchement, je commence à clignoter comme un sapin de Noël !! HELP !!
Le fichier est joint pour illustrer l'exemple.
Merci pour toutes vos aides 🙂
Bonsoir.
J'ai cliqué sur l'image, l'UserForm s'est affiché, avec un titre montrant un décompte, puis fermé lorsqu'il celui ci est arrivé à 0.
Qu'est-ce qui ne va pas ?
Remarque: je préfère toujours programmer dedans les réactions d'un UserForm, non le piloter de l'extérieur.
Bonsoir.
J'ai cliqué sur l'image, l'UserForm s'est affiché, avec un titre montrant un décompte, puis fermé lorsqu'il celui ci est arrivé à 0.
Qu'est-ce qui ne va pas ?
Remarque: je préfère toujours programmer dedans les réactions d'un UserForm, non le piloter de l'extérieur.
ce qui ne va pas, c'est que lorsque l'UserForm arrive à : "A propos (fermeture dans 0 secondes)", il reste ENCORE affiché pendant 13 secondes... j'ai chronométré. En principe, j'aurais souhaité qu'il se ferme et non qu'il reste encore affiché pendant 13 secondes avec ce caption !?! Voilà ce que je ne comprends pas : pourquoi ne se ferme-t'il pas arrivé à 0 et reste encore affiché pendant ces 13 secondes ?
ce qui ne va pas, c'est que lorsque l'UserForm arrive à : "A propos (fermeture dans 0 secondes)", il reste ENCORE affiché pendant 13 secondes... j'ai chronométré. En principe, j'aurais souhaité qu'il se ferme et non qu'il reste encore affiché pendant 13 secondes avec ce caption !?! Voilà ce que je ne comprends pas : pourquoi ne se ferme-t'il pas arrivé à 0 et reste encore affiché pendant ces 13 secondes ?
En l'écrivant comme je l'aurais écrit ça ne se produit pas, mais je ne sais pas trop pourquoi :
VB:
Private Sub Image1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim Décompte As Integer, TPréc As Long
UserForm1.Label1.Caption = Chr(13) & " Ce fichier a été développé par ..." & _
Chr(13) & Chr(13) & " Il aura fallu pour y arriver :" & _
Chr(13) & Chr(13) & " environ 1 mois de travail (de mi-avril à fin mai 2023)," & _
Chr(13) & " + d'une dizaine de macros et formulaires," & _
Chr(13) & " + de 50 formules différentes," & _
Chr(13) & " + de 4.000 lignes de codes de programmations en VB." & _
Chr(13) & Chr(13) & " Pour toutes questions/suggestions," & _
Chr(13) & " merci d'envoyer un mail à :" & _
Chr(13) & Chr(13) & " on_verra_plus_tard@pas_demain.be"
UserForm1.Caption = "À propos": UserForm1.Show
Décompte = 10: TPréc = Int(Timer)
Do
Do: DoEvents: Loop Until Int(Timer) <> TPréc
TPréc = TPréc + 1
If Décompte = 0 Then Exit Do
UserForm1.Caption = "A propos (fermeture dans " & Décompte & " seconde" & IIf(Décompte > 1, "s", "") & ")"
Décompte = Décompte - 1: Loop
UserForm1.Hide
End Sub
Peut être que ça mettait beaucoup de finalisations en attente d'une occasion de s'exécuter, parce que l'UserForm1.Caption était modifié à chaque passage dans une petite boucle, et pas seulement quand il changeait effectivement, je ne sais pas …
En l'écrivant comme je l'aurais écrit ça ne se produit pas, mais je ne sais pas trop pourquoi :
VB:
Private Sub Image1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Dim Décompte As Integer, TPréc As Long
UserForm1.Label1.Caption = Chr(13) & " Ce fichier a été développé par ..." & _
Chr(13) & Chr(13) & " Il aura fallu pour y arriver :" & _
Chr(13) & Chr(13) & " environ 1 mois de travail (de mi-avril à fin mai 2023)," & _
Chr(13) & " + d'une dizaine de macros et formulaires," & _
Chr(13) & " + de 50 formules différentes," & _
Chr(13) & " + de 4.000 lignes de codes de programmations en VB." & _
Chr(13) & Chr(13) & " Pour toutes questions/suggestions," & _
Chr(13) & " merci d'envoyer un mail à :" & _
Chr(13) & Chr(13) & " on_verra_plus_tard@pas_demain.be"
UserForm1.Caption = "À propos": UserForm1.Show
Décompte = 10: TPréc = Int(Timer)
Do
Do: DoEvents: Loop Until Int(Timer) <> TPréc
TPréc = TPréc + 1
If Décompte = 0 Then Exit Do
UserForm1.Caption = "A propos (fermeture dans " & Décompte & " seconde" & IIf(Décompte > 1, "s", "") & ")"
Décompte = Décompte - 1: Loop
UserForm1.Hide
End Sub
Peut être que ça mettait beaucoup de finalisations en attente d'une occasion de s'exécuter, parce que l'UserForm1.Caption était modifié à chaque passage dans une petite boucle, et pas seulement quand il changeait effectivement, je ne sais pas …
et une fois de plus, vous êtes mon sauveur Dranreb !
Je viens de tester le code que vous venez de m'envoyer et il fonctionne à merveille ! 👌😁
J'étais en train de me demander : "pourquoi chez Dranreb, çà fonctionne et pas chez moi ni Sylvanu ?" C'est quoi le truc ? Un rapport avec la vitesse du processeur ? franchement, j'étais perdu !
Mais du coup, ce code-çi est nickel et fonctionne !
MERCI !!
Une piste en cherchant autour du type d'évènement utilisé.
Si on utilise l'évènement MouseUp alors tout clique sur la feuille de calcul (yc sur le ruban) ou sur le USF relance le décompte pour 10 s. La fermeture de l'USF par la croix est donc impossible.
Si on utilise l'évènement MouseDown alors aucun clique sur la feuille de calcul ni sur le USF ne relance le décompte. La fermeture de l'USF par la croix est possible.
Pour tester, cliquer sur l'image de chacune des deux feuilles.
Le code est identique pour chaque évènement (MouseDown ou MouseUp) :
VB:
Dim PauseTime, Start
UserForm1.Label1.Caption = Chr(13) & " Ce fichier a été développé par ..." & _
Chr(13) & Chr(13) & " Il aura fallu pour y arriver :" & _
Chr(13) & Chr(13) & " environ 1 mois de travail (de mi-avril à fin mai 2023)," & _
Chr(13) & " + d'une dizaine de macros et formulaires," & _
Chr(13) & " + de 50 formules différentes," & _
Chr(13) & " + de 4.000 lignes de codes de programmations en VB." & _
Chr(13) & Chr(13) & " Pour toutes questions/suggestions," & _
Chr(13) & " merci d'envoyer un mail à :" & _
Chr(13) & Chr(13) & " on_verra_plus_tard@pas_demain.be"
UserForm1.Show
PauseTime = 10: Start = Timer
Do While Timer < (Start + PauseTime)
DoEvents
UserForm1.Caption = "A propos (MouseDown) - fermeture dans " & Int((PauseTime - (Timer - Start))) & " s"
Loop
Unload UserForm1
Une piste en cherchant autour du type d'évènement utilisé.
Si on utilise l'évènement MouseUp alors tout clique sur la feuille de calcul (yc sur le ruban) ou sur le USF relance le décompte pour 10 s. La fermeture de l'USF par la croix est donc impossible.
Si on utilise l'évènement MouseDown alors aucun clique sur la feuille de calcul ni sur le USF ne relance le décompte. La fermeture de l'USF par la croix est possible.
Pour tester, cliquer sur l'image de chacune des deux feuilles.
Le code est identique pour chaque évènement (MouseDown ou MouseUp) :
VB:
Dim PauseTime, Start
UserForm1.Label1.Caption = Chr(13) & " Ce fichier a été développé par ..." & _
Chr(13) & Chr(13) & " Il aura fallu pour y arriver :" & _
Chr(13) & Chr(13) & " environ 1 mois de travail (de mi-avril à fin mai 2023)," & _
Chr(13) & " + d'une dizaine de macros et formulaires," & _
Chr(13) & " + de 50 formules différentes," & _
Chr(13) & " + de 4.000 lignes de codes de programmations en VB." & _
Chr(13) & Chr(13) & " Pour toutes questions/suggestions," & _
Chr(13) & " merci d'envoyer un mail à :" & _
Chr(13) & Chr(13) & " on_verra_plus_tard@pas_demain.be"
UserForm1.Show
PauseTime = 10: Start = Timer
Do While Timer < (Start + PauseTime)
DoEvents
UserForm1.Caption = "A propos (MouseDown) - fermeture dans " & Int((PauseTime - (Timer - Start))) & " s"
Loop
Unload UserForm1
- Navigue sans publicité - Accède à Cléa, notre assistante IA experte Excel... et pas que... - Profite de fonctionnalités exclusives Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel. Je deviens Supporter XLD