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

Autres Ouvrir et fermer des fichiers

francescofrancesco

XLDnaute Junior
Bonjour.
Si depuis Form1 j'ouvre le fichier JOBS depuis Form1, je dois le fermer depuis Form2, si je clique sur le bouton2, le fichier est ouvert et fermé à partir du même bouton.
Puisque je suis intéressé par la première solution, quel code dois-je ajouter, merci.
Excel 2003
 

Pièces jointes

  • clienti.xls
    66 KB · Affichages: 3
  • Commesse.xls
    42 KB · Affichages: 1

francescofrancesco

XLDnaute Junior
Non.
Si vous voyez le code des deux boutons ils sont identiques sauf que dans le bouton1 la fermeture et l'ouverture des formulaires sont placées avant le code de sauvegarde et de fermeture.
Quel code ajouter pour obtenir le même résultat que le bouton2.
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Votre demande n'est pas claire parce qu'il n'y a pas d'objet nommé Form1 ni Form2 ni bouton2 dans votre projet VBA.
Il y a UserForm1, UserForm2, CommandButton1 et CommandButton2
Alors si c'est de ça que vous voulez parler, pour que ce soit l'UserForm2 qui ferme le Workbook ouvert par le UserForm1 (on se demande bien pourquoi ça devrait être comme ça ?) il faut nécessairement qu'il puisse le connaître (si son nom n'est pas toujours le même de sorte qu'il ne pourrait pas simplement faire Workbooks("commesse.xls").Close). Il faut donc qu'il soit connu de lui c'est à dire soit déclaré par une Public Wbk2 As Workbook, soit transmis à une méthode du UserForm2 qui fera elle même son Me.Show avant de le fermer. Mais si la déclaration est dans UserForm1 il ne faut pas de Unload Me, sinon il est perdu. Me.Hide plutôt.
 

Dranreb

XLDnaute Barbatruc
L'Userform2 est modal contrairement au UserForm1. Il ne rend donc la main au UserForm1 qu'après le Show UserForm2. Ne serait-ce donc pas l'UserForm1 qui pourrait fermer le classeur à ce moment là ?
En parlant d'UserForm, Ouvrir et Fermer c'est vague. Parlez plutôt de Charger, Afficher, Masquer et Décharger.
 

francescofrancesco

XLDnaute Junior
Désolé, dans le fichier d'origine, les deux formulaires utilisateur sont modal.
Le classeur "jobs" est fermé par Userform1.
La séquence est donc de télécharger/fermer Userform1, charger/afficher Userform2, enregistrer et fermer les fichiers de travail.
 

Dranreb

XLDnaute Barbatruc
Il ne faut jamais décharger un UserForm qui exécute un Show d'un autre UserForm
modal, puisqu'il suspend l'exécution de son code. La séquence doit être :
Me.Hide
UserForm2.Show
Wbk.Close
Unload Me
 

Discussions similaires

Réponses
27
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…