Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 Userform imbriquée

julien1982

XLDnaute Occasionnel
Bsr a tous,
je suis en train de créer un fichier me permettant de gérer la création de bordereaux d'envoi pour mes différents clients et j'aurai besoin de votre aide pour la réalisation de ce fichier.

1- le plus important pour moi, dans la userform "accueil" quand je clique sur nouvelle affaire cela ouvre une autre userform "FrmSaisie" qui me permet de remplir l'onglet "Liste Affaires", le seul problème c'est que je ne sais pas comment faire pour dans les 2 txtbox "TxtChemAffaire" et "TxtChemPCE" je puisses récupérer le chemin ou sera enregistrer l'affaire (chemin affaire) et également le chemin d'un fichier spécifique (chemin PCE) en allant pointer un dossier pour la premiere et un fichier pour la seconde.

2- j'aimerai qu'à l'ouverture de mon fichier celui s'ouvre puis affiche la Userform "Accueil" en masquant le fichier Excel, j'arrive à le lancer et ouvrir la userform mais pas cacher le fichier...

3- J'aimerai egalement creer un bouton "retour Excel" me permettant de revenir sur le fichier si besoin...

En espérant etr assez clair.

Merci bp pour votre aide par avance.

Julien
 

Pièces jointes

  • Creation Bordereau.xlsm
    47.3 KB · Affichages: 15

Dudu2

XLDnaute Barbatruc
C'est peut-être une erreur de contexte pas encore bien installé si tu as un gros fichier.
Essaie:
VB:
Option Explicit

Public ExcelWindow As Window

Private Sub Workbook_Open()
    On Error Resume Next
    Do
        Err.Clear
        DoEvents
        Set ExcelWindow = ActiveWindow
        ExcelWindow.Visible = False
    Loop While Err
    On Error GoTo 0

    FrmAccueil.Show vbModal 'vbModeless
End Sub
Selon que tu veux ton UserForm Modal ou pas utilise vbModal ou vbModeless.
Ce sont des valeurs entières et False est impropre.
 

Pièces jointes

  • Classeur1b.xlsm
    16.6 KB · Affichages: 5
Dernière édition:

julien1982

XLDnaute Occasionnel
Je suis sur le téléphone pr répondre c'est pr cela que je ne peux pas transmettre le fichier. la. Ton fichier classeur1b fonctionne chez moi je l'ai essayé qd tu la posté.
Bonjour Dudu2, ci joint mon fichier.
Pour ce qui est de ton fichier dan le post #5 fonctionne parfaitement, c'est en inserant ce code dans mon fichier que cela bloque....
 

Pièces jointes

  • Creation Bordereau.xlsm
    47.3 KB · Affichages: 14

Dudu2

XLDnaute Barbatruc
Bonjour,

Je ne peux strictement rien faire avec ton fichier.
Il n'y a aucun plantage.
Aucun UserForm ne s'affiche et la fenêtre est grisée, aucune action n'est possible et évidemment aucun accès au code.
En fait je pense que c'est parce que l'option d'activer le code n'est pas disponible.
 

Dudu2

XLDnaute Barbatruc
Je n'ai pas trouvé l'erreur.
Il y a quelque chose de spécial dans ton fichier et je sais pas quoi.
De plus à nouveau je ne peux rien en faire. Pas d'erreur, pas d'accès au VBA. Ce n'est pas normal.
Je l'ai recréé de toutes pièces avec le même code lorsque j'y avais accès et ça fonctionne.
 

Pièces jointes

  • Creation Bordereau New.xlsm
    28.5 KB · Affichages: 2

Dudu2

XLDnaute Barbatruc
Tu as enregistré ces fichiers avec la fenêtre masquée.
Manuellement il faut aller dans Affichage / Afficher (la fenêtre).
C'est pour ça que je n'y vois rien et c'est pour ça que ça plante car dans l'ouverture du classeur on récupère l'ActiveWindow qui n'existe pas (Nothing).
 

Dudu2

XLDnaute Barbatruc
Ou alternativement faire ça:
Code:
Option Explicit

Public ExcelWindow As Window

Private Sub Workbook_Open()
    Me.Windows(1).Visible = True
    Set ExcelWindow = ActiveWindow
    ExcelWindow.Visible = False
    FrmAccueil.Show False
End Sub
 

Dudu2

XLDnaute Barbatruc
Bonjour @ChTi160,
Oui il n'affiche rien parce que les modifs et le VBA ne sont pas activés.
Mais tu ne le vois pas parce que la fenêtre est masquée et que le fichier a été enregistré comme ça.
Il faut aller dans Affichage / Afficher pour voir la fenêtre et agir.

C'est pour ça que dans le Sub Workbook_Open() je commence maintenant par un Me.Windows(1).Visible = True pour afficher la fenêtre et ne pas récupérer un ActiveWindow à Nothing (qui provoque l'erreur).
 

Dudu2

XLDnaute Barbatruc
Ceci dit je peux faire directement:
VB:
Option Explicit

Public ExcelWindow As Window

Private Sub Workbook_Open()
    Set ExcelWindow = Me.Windows(1)
    ExcelWindow.Visible = False

    UserForm1.Show vbModal
End Sub
sans chercher l'ActiveWindow.

Ci-joint le classeur modèle ainsi codé.
 

Pièces jointes

  • Classeur1b.xlsm
    16.6 KB · Affichages: 2

julien1982

XLDnaute Occasionnel
Celui marche chez moi aussi, je vais reprendre mon classeur entierement pour refaire un classeur propre car effectivement il a peut etre (surement même) un problème.
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…