Unload sur paint, combobox, hscrollbar, vscrollbar, picture box...

5/5 (6 avis)

Snippet vu 4 234 fois - Téléchargée 31 fois

Contenu du snippet

J'avais besoin de réaliser un unload sur une ComboBox et voici l'erreur donnée par MSDN:

Dans certains cas, vous ne pouvez pas décharger une feuille ou un contrôle situé sur une feuille. Les causes de cette erreur et les solutions pour la corriger sont les suivantes :

Il y a une instruction Unload dans l'événement Paint correspondant à la feuille ou à un contrôle de la feuille possédant cet événement.
Supprimez l'instruction Unload de l'événement Paint.

Il y a une instruction Unload dans l'événement Change, Click ou DropDown d'un contrôle ComboBox.
Supprimez l'instruction Unload de l'événement.

Il y a une instruction Unload dans l'événement Scroll d'un contrôle HScrollBar ou VScrollBar.
Supprimez l'instruction Unload de l'événement.

Il y a une instruction Unload dans l'événement Resize d'un contrôle Data, Form, MDIForm ou PictureBox.
Supprimez l'instruction Unload de l'événement.

Il y a une instruction Unload dans l'événement Resize d'un contrôle MDIForm qui tente de décharger une feuille fille MDI.
Supprimez l'instruction Unload de l'événement.

Il y a une instruction Unload dans l'événement RePosition ou Validate d'un contrôle Data.
Supprimez l'instruction Unload de l'événement.

Il y a une instruction Unload dans l'événement ObjectMove d'un contrôle OLE Container.
Supprimez l'instruction Unload de l'événement.

Voici l'astuce que j'ai trouvé et qui marche:
Je place un timer sur ma Form. Je mets comme interval 1 et je mets Enabled=false

Source / Exemple :


Private Sub ComboBox_Click()
Timer1.Enabled = True
End Sub

Private Sub Timer1_Timer()
Timer1.Enabled = False
'là je met le code
'........
End Sub

Conclusion :


Comme je n’avais rien trouvé pour répondre à mon problème, et que de nombreux posts sont sans réponse, je mets ce bout de code pour ceux qui en auraient besoin.

Vos commentaires sont les bienvenus.

JUJECO

Ils ne savaient pas que c'était impossible alors ils l'ont fait.
Ajouter un commentaire Commentaires
Zblo
Messages postés
13
Date d'inscription
mercredi 8 septembre 2004
Statut
Membre
Dernière intervention
3 novembre 2010

3 nov. 2010 à 17:50
Un grand merci 6 ans après ^^
Ca m'a bien aidé en tout cas !
cs_Talere
Messages postés
102
Date d'inscription
vendredi 29 mars 2002
Statut
Membre
Dernière intervention
14 février 2013

12 avril 2006 à 16:44
Ca marche très bien sous vb6 :

Initialisation de timer1 :
Timer1.Enabled=false
Timer1.Interval=1
le reste est sans importance ...

Au lieu d'écrire :
Private Sub Combo1_Click()
Unload Text1(1)
End

il faut écrire
Private Sub Combo1_Click()
Timer1.enabled=true
End

Private Sub Timer1_Timer()
Timer1.enabled=false
Unload Text1(1)
end sub
cs_JLN
Messages postés
371
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
17 juin 2013

10 nov. 2004 à 08:49
marche pas (sous vb6)
celiphane
Messages postés
466
Date d'inscription
samedi 16 février 2002
Statut
Membre
Dernière intervention
20 avril 2007

5 mai 2004 à 16:14
J'ai compris ! ;)

Oui c'est clair que c'est bon savoir, c'est en même temps aberrant !
J'ai rien trouvé d'autre moi non plus... :(


@+
Celiphane
bubble44
Messages postés
200
Date d'inscription
lundi 10 mars 2003
Statut
Membre
Dernière intervention
3 août 2004

5 mai 2004 à 15:55
Et en bouclant sur l'erreur, avec un Doevents, tant que c'est pas ok ?

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (cs_jujeco)