Ouvrir un classeur excel a partir d'une boite de dialogue [Fermé]

Signaler
-
 benjamin -
Bonjour,



Bonjour les amis!
Sans vous faire des éloges, vous êtes mes experts en programmation VBA. C'est la raison qui m'anime à me diriger vers vous pour solutionner mon problème.
En effet, j'ouvre un classeur Excel à partir d'une boite de dialogue. Je désire améliorer ce programme de sorte que :
1er cas
Si le classeur que je désire ouvrir est déjà ouvert, une boite de dialogue s'affiche et m'informe comme suit : Le classeur est déjà ouvert, voulez-vous le fermer avant de l'ouvrir ?
-Si Non, il appelle les deux procédures de cette façon :
Call Filtrer_Ministere
Call boucl_ministere(min)

-Si Oui, il ferme le classeur, l'ouvre à nouveau et exécute le programme d'ouverture et procède à l'appel des deux procédures comme indiqué:
Call Filtrer_Ministere
Call boucl_ministere(min)



2eme cas
Si le classeur sélectionné n'est pas ouvert, qu'il exécute le programme d'ouverture et procède à l'appel des deux procédures comme indiqué:
Call Filtrer_Ministere
Call boucl_ministere(min)

AIDEZ-MOI À INSERER CE PROGRAMME DANS CELUI QUE J'AI PREALABLEMENT ECRIT (voir ci-dessous).


Private Sub ministere_Click()
Application.ScreenUpdating = False
Dim OuvrirAnnexe As Variant
Dim min As Workbook
ChDir ("C:\Users\HP PROBOOK\Desktop\DN BUDGET\DOSSIER DE TRAVAIL")

OuvrirAnnexe_min = Application.GetOpenFilename _
(filefilter:="Classeur Microsoft Excel (*.xls),*.xls,Feuille de Calcul Excel,*.xlsx, PageWeb (*.htm; *.html), *.htm;*.html", _
FilterIndex:=2, _
Title:="BOITE DE DIALOGUE POUR CHOISIR FICHIER", MultiSelect:=False)
If OuvrirAnnexe_min = False Then Exit Sub
Set min = Workbooks.Open(OuvrirAnnexe_min)
Call Filtrer_Ministere
Call boucl_ministere(min)
Application.ScreenUpdating = True
End Sub

2 réponses

Messages postés
15763
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
11 mai 2021
1 488
Bonjour,

une facon de faire: se posera un probleme si le fichier deja ouvert n'est pas le meme que vous choisirez !!!!

Private Sub ministere_Click()
Dim OuvrirAnnexe As Variant
Dim min As Workbook
Dim wb As Workbook
Dim Clas_Ouv

Application.ScreenUpdating = False
ChDir ("C:\Users\HP PROBOOK\Desktop\DN BUDGET\DOSSIER DE TRAVAIL")

'lister fichier(s) ouvert(s): si plusieurs fichiers ouverts faudra faire petites modifs
'boucle recherche classeur ouvert
For Each wb In Workbooks
If wb.Name <> ThisWorkbook.Name Then
Clas_Ouv = wb.Name
End If
Next wb

'choix fichier
OuvrirAnnexe_min = Application.GetOpenFilename _
(filefilter:="Classeur Microsoft Excel (*.xls),*.xls,Feuille de Calcul Excel,*.xlsx, PageWeb (*.htm; *.html), *.htm;*.html", _
FilterIndex:=2, Title:="BOITE DE DIALOGUE POUR CHOISIR FICHIER", MultiSelect:=False)
'pas de fichier
If OuvrirAnnexe_min = False Then Exit Sub
'un classeur ouvert
If Clas_Ouv <> "" Then
'meme classeur ???
If InStr(OuvrirAnnexe_min, Clas_Ouv) Then
resultat = MsgBox("Le classeur est déjà ouvert, voulez-vous le fermer avant de l'ouvrir ?", vbYesNo)
If resultat = vbYes Then
'fermeture classeur
Workbooks(Clas_Ouv).Close False
'ouverture classeur
Set min = Workbooks.Open(OuvrirAnnexe_min)
End If
Else
Set min = Workbooks.Open(OuvrirAnnexe_min)
End If
Else
Set min = Workbooks.Open(OuvrirAnnexe_min)
End If

Call Filtrer_Ministere
Call boucl_ministere(min)

Application.ScreenUpdating = True
End Sub
Merci
Je vais exécuter la syntaxe et te répondre par la suite
Cordialement