VBA problème pour load

Résolu/Fermé
Caûpcin - 3 nov. 2010 à 18:22
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 5 nov. 2010 à 13:38
Bonjour, j'ai une erreur d'exécution "438" Propriété ou méthode non gérée par cette objet

Je suis dans Userform1 et je veux que s'affiche une autre fenêtre userform2 s'affiche quand je clique sur un bouton et que l'ancienne fenêtre (userform1) disparaise.

Private Sub CommandButton_suivant1_Click()

'Traitement du bouton suivant
Load UserForm2
UserForm2.Show
Unload UserForm1

End Sub



Et j'ai donc la ligne load UserForm2 qui est surligner lors du débogage.

Je vois pas d'où peu venir l'erreur car j'ai utiliser ce code jusqu'à ce que sa bug.
Si vous avez une idée;

12 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
3 nov. 2010 à 21:29
Bonsoir

C'est un problème de chronologie, essaie :

Private Sub CommandButton_suivant1_Click()
Unload UserForm1
Load UserForm2
UserForm2.Show
End sub

Ça devrait fonctionner.

Patrice
1
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
4 nov. 2010 à 01:01
Bonjour,

Le Load n'est pas nécessaire.

Private Sub CommandButton_suivant1_Click()
     Unload Me
     UserForm2.Show
End sub 


;o)
0
Salut aucune de vos solution ne marche et quand je vire le Load UserForm2 j'ai une erreur sur le UserForm2.show de type "424"

Je comprend pas c'est comme si il ne reconnaisse pas UserForm2
0
Régression: J'ai commenter mes lignes de code pour pouvoir travailler sur le userform2 mais lorsque je lance l'exécution du UserForm2 il me dit qu'il y a une erreur dans mes lignes commenter de mon UserForm1!!! de mieux en mieux donc.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
4 nov. 2010 à 09:18
C'est difficile de dire comme ça juste avec un bout de code. Ce qui t'a été donné fonctionne. Le problème est ailleurs.

Le mieux c'est que tu mettes ton fichier sur https://www.cjoint.com/ en enlevant les données sensibles. Tu colles ici le lien fournit par le site.

;o)
0
J'ai trouver ce qui bloque:
sur la userforme2 j'ai un multipage et je fais ceci
Private Sub UserForm_Initialize()

Multipage.pages(1).Enable = False
Multipage.pages(2).Enable = False
Multipage.pages(3).Enable = False
Multipage.pages(4).Enable = False
Multipage.pages(5).Enable = False

End Sub


J'ai 6 onglets et donc lorsque j'ai enlever ces lignes mon problème est parti avec.
Si quelqu'un sait pourquoi j'ai tel comportement de mon programme
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
4 nov. 2010 à 11:39
Es-tu sûr du nom du multipage ? ca ne serait pas plutôt Multipage1 ??

Je viens de faire un test et tout fonctionne correctement chez moi

Ôo
0
du coup je ne sais plus si j'ai fait cette erreur mais je ne crois pas.
0
Salut je test bien avec :
Multipage1.pages(1).Enable = False
Multipage1.pages(2).Enable = False
Multipage1.pages(3).Enable = False
Multipage1.pages(4).Enable = False
Multipage1.pages(5).Enable = False

Et j'ai toujours le même problème, erreur 438 sur mon UserForm1.show.
Si quelqu'un voie pourquoi.
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 4/11/2010 à 17:18
bonjour tous,
Le fait de charger un UF est implicitement en modal.. donc pas possible d'afficher un autre à partir de celui-ci en le fermant.
Deux solutions possibles...
1°) dans l'ouverture du 1er UF mettre un condition d'ouverture du 2..
exemple :
    Userform1.Show  
    If LeDrapeau = True then  
        Userorm2.Show  
    End if

Ou bien..
Userform1.show
'Et dans le UF1 mettre sur un bouton ou une condition...
    Me.hide  
   Userform2.Show

Evidemment faut adapter tout ça au contexte.
A+

L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
4 nov. 2010 à 17:53
Je suis très surpris de ton affirmation, pour moi le code fonctionne très bien avec VBA 6.3 sous Excel.

Userform1 bouton 1 :
Private Sub CommandButton1_Click()
    Unload UserForm1
    UserForm2.Show
End Sub


Userform2 bouton 1 :
Private Sub CommandButton1_Click()
    Unload UserForm2
    UserForm1.Show
End Sub

On passe de l'un à l'autre sans problème !

Patrice.
0
Salut merci pour ta réponse mais ce souci est régler, maintenant ce qui me fait une erreur c'est le multipage1 que j'ai dans mon userForm2 composer de 6 onglets

dés que je fait

Private Sub UserForm_Initialize()

'bloque les onglets
MultiPage1.Pages(2).Enable = False

End Sub


la ligne de code MultiPage1.Pages(2).Enable = False me crée clairement mon erreur vu que lorsque je la commente mon problème disparait.
Chose bizarre le débogueur me renvoie sur userform1 sur ma ligne userform2.show

Private Sub B_accepter_Click()

UserForm2.Show
UserForm1.Hide

End Sub



Donc voila ou j'en suis.
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
4 nov. 2010 à 18:35
Re,

La bonne syntaxe est :
MultiPage1.Pages(2).Enabled = False

(Enabled au lieu de Enable)

Patrice
0
Merci Patrice c'était bien une bête et méchante erreurs de syntaxe.
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
5 nov. 2010 à 13:38
De rien au plaisir de te relire sur ce forum

Cordialement
Patrice
0