Erreur d'exécution userform3 et userform4

Bonjour à tous,

Je me demande pourquoi à chaque fois que je crée un (ou une) userform, il (ou elle) ne se lance pas...

J'ai créé un userform, que je lance via une image associée à une macro : UserForm1.Show VbModeless. Cela fonctionne impec.

J'ai créé un autre userform de la même manière qui lui ne se lançait pas. J'ai réussi à le faire fonctionner mais ne me demandait pas comment.

J'en ai créé un troisième. Même souci et j'ai réussi de nouveau à le faire fonctionner (je ne sais toujours pas comment).

Là, j'en ai créé un quatrième et je me retrouve avec l'userform3 et l'userform4 qui ne veulent pas se lancer.

L'userform3 me dit : erreur d'exécution 2147352571 (80020005). Le type ne correspond pas.

L'userform4 me dit : erreur d'exécution 2147024909 (80070057). Objet spécifié introuvable.

J'ai vérifié les noms des userform, ce sont les mêmes que notés dans les macros.

Après des heures à bidouiller ou chercher avec mon ami Google, je sèche complet. Votre aide serait la bienvenue...

Bonjour,

Ajoute une pièce jointe pour que l'on puisse cerner le problème

Bon ben là je cherche comment joindre mon fichier...

Je l'avais fait mais apparemment cela n'a pas fonctionné non plus...

Peut être par ce qu'il est en zip

Re,

si ton fichier fait plus de 300 Ko il faut passer par un hébergeur

Mon fichier était trop gros même en zip.

Je vous l'envoie en précisant une chose :

Pour alléger un peu mon fichier j'ai supprimé les images en mettant des boutons à la place et la MIRACLE, mon userform3 fonctionne !

Mais toujours pas l'userform4....


Euh excusez moi, mon fichier étant un peu bordélique, les boutons se trouvent dans l'onglet client pour l'userform 1 et 2 et dans l'onglet stock pour l'userform 3 et 4. Merci

Bonsoir,

Si un Userform ne s'ouvre pas, c'est que la méthode Show échoue. Il faut donc commencer par passer au crible la procédure Initialize (s'il y en a une bien sûr), qui intervient avant ouverture pour voir ce qui pourrait être susceptible de coincer.

Cordialement.

Merci pour ta réponse. Oui il y en a une pour des listes déroulantes mais je ne te cache pas que je n'ai pratiquement aucune idée de ce que je fais donc s'il y a une erreur je sais pas où.

Je vais sur internet chercher un code que je comprend à moitié, je fais des copier coller et j'essae d'adapter. Et quand je m'en sors pas je vais chercher sur google. Et si je trouve vraiment pas, ben je viens vous voir.

Le code n'étant pas bien grand et ressemblant aux autres code initialize des autres userform, je ne vois pas où peut être l'erreur.

En regardant l'Initialize du 4, on constate que tu rends visible à 4 reprises tes TextBox (ils le seront !! d'autant qu'ils devraient être visibles par défaut si tu n'a pas eu le vice de les masquer à la conception pour le seul plaisir de les rendre à nouveau visible à l'initialisation).

Enfin les TextBox à TextBox11, sauf qu'il y en a un qui n'existe pas et peut donc difficilement devenir visible.

Tu invalides les 4 lignes relatives aux TextBox et ton Userform4 s'ouvrira.

Cordialement.

Alors je pense en théorie avoir compris ce que tu m'as dit et je pense également mieux comprendre pourquoi quand je supprimer des textbox des userform ça ne fonctionner plus. (Je les ai d'ailleurs gardées en les camouflant).

En revanche côté pratique, je ne sais pas comment on fait pour les invalidées... Je pense que c'est sur la ligne

For I = 1 To 11

Me.Controls("TextBox" & I).Visible = True

Mais voilà, je ne fais que penser...

Re,

Part du bon principe, tes "TEXTBOX" renomme-les avec l'indication la mieux appropriée et tu veras comme c'est beaucoup plus simple de s'y retrouver dans un code

J'ai pas osé le faire. Je vais tester. En attendant merci beaucoup.

Tu peux dans l'immédiat supprimer 4 fois les 3 lignes incluant la boucle qui sont censées rendre tes TextBox visibles.

Ce qui ne t'empêche pas de suivre le conseil de M12 et renommer tes TextBox de façon à en avoir une série continue utilisables dans une boucle (en veillant toutefois à vérifier les procédures les appelant sous leur nom actuel s'il en existe...)

Oh merci MFerrand, j'ai supprimé les 4 For I... et mon userform se lance ! Mais du coup ça sert à rien ces lignes, pourquoi ils les mettent alors ?

Et merci à toi aussi M12, c'est clair que je m'y retrouve mieux avec des noms beaucoup plus parlants.

Merci merci.

De façon générale, tu définis dans la fenêtre de propriétés les propriétés des contrôles tels que tu veux les avoir à l'ouverture, ce qui évite d'encombrer l'initialisation avec toutes les propriétés que tu peux définir par défaut... Cela sert par contre si ton Userform a plusieurs usages : dans ce cas, tu définis les propriétés par défaut pour l'usage principal. Mais lorsqu'une autre utilisation intervient, on peut alors être amené à masquer ou rendre visibles certains contrôles.

Ce qu'il faut savoir aussi, c'est que la procédure Initialize ne s'exécute qu'une fois au chargement du Userform avant sa première ouverture. Si en cours d'utilisation, si tu dois réinitialiser le Userform, il faudra le faire par d'autres procédures (soit au niveau des contrôles eux-mêmes, soit la procédure Activate qui, elle intervient à chaque réapparition du Userform non déchargé mais simplement masqué).

Cordialement.

Ah d'accord je comprends un peu mieux maintenant car oui, effectivement, à la base on pouvait créer et modifier les données grâce à l'userform.

Encore merci pour tous vos conseils et votre aide.

Bonne journée.

Rechercher des sujets similaires à "erreur execution userform3 userform4"