Ouvrir un classeur excel a partir d'une boite de dialogue

benjamin -  
 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

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
    0
  2. benjamin
     
    Merci
    Je vais exécuter la syntaxe et te répondre par la suite
    Cordialement
    0