VBA problème pour load

Résolu
Caûpcin -  
Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   -
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

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    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
  2. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

    Le Load n'est pas nécessaire.

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


    ;o)
    0
  3. Caûpcin
     
    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
  4. Caûpcin
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Polux31 Messages postés 7219 Statut Membre 1 204
     
    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
  7. Caûpcin
     
    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
    1. Polux31 Messages postés 7219 Statut Membre 1 204
       
      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
  8. Caûpcin
     
    du coup je ne sais plus si j'ai fait cette erreur mais je ne crois pas.
    0
  9. Caûpcin
     
    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
  10. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
       
      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
  11. Caûpcin
     
    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
  12. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    Re,

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

    (Enabled au lieu de Enable)

    Patrice
    0
  13. Caûpcin
     
    Merci Patrice c'était bien une bête et méchante erreurs de syntaxe.
    0
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
       
      De rien au plaisir de te relire sur ce forum

      Cordialement
      Patrice
      0