En macro vba controle d'ouverture et de sauvegarde

Résolu
arc1947 Messages postés 4 Statut Membre -  
arc1947 Messages postés 4 Statut Membre -
Bonjour,
je veux controler si chaque fichier que j'ai a ouvrir sont ouverts et modifiés ou non pour les sauvegarder ou non (sans message)

s'ils ne sont pas ouverts les ouvrir

dans une macro
le "nomfichier" en variable
Dim nomfichier As ???

nomfichier="x:\chemin\nomfichier.xls"

je souhaite tester si un "x:\chemin\nomfichier.xls" est dejà ouvert
s'il a besoin d'être sauvegarder car modifié le sauvegarder sans mise a jour des liens et sans message

s'il n'a pas ete modifié terminer

s'il n'est pas ouvert l'ouvrir sans message de mise a jour des liens et sans message

car après de nombreuses recherches je n'arrive pas a créer une macro vba qui fonctionne correctement sur des fonctions qui me semble de base pour une ouverture de chaque fichier
merci a tous

2 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour

    fich: chemin complet du classeur par ex: "d/docus/classeur1.xlsx"

    Function FichOuvert(Fichier As String) As Boolean
    Dim Wk As Workbook
    On Error Resume Next
    Set Wk = Workbooks(Fichier)
    On Error GoTo 0
    FichOuvert = Not Wk Is Nothing
    End Function


    dans la procédure principale:
    If FichOuvert(fich) Then
    With Workbooks(fich)
    If Not .Saved Then
    .Save
    End If
    .Close 'si on veut refermer le classeur
    End With
    End If


     Michel
    1
    1. arc1947 Messages postés 4 Statut Membre
       
      bonjour michel_m

      merci infiniment de la réponse et de la réponse très rapide
      je vais tester mais ne doute pas de la qualité de la solution
      si dans le programme principale j'annonce simplement le dim "nom du fichier " et un
      Application.Run "ficheouvert" pour aller vers la macro sub fichouvert au lieu d'utilier function.
      un avantage de l'usage de fonction? afin de tester plusieurs ouvertures dans des macros diverses.
      merci encore
      0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Un des doucis de tout bidouilleur est de ne pas réinventer la science à chaque nouvelle application:
    l'intérêt des fonctions est donc de se constituer une bibliothèque de procédures "doliprane"
    0
    1. arc1947 Messages postés 4 Statut Membre
       
      parfait merci et bonne journée
      0
    2. arc1947 Messages postés 4 Statut Membre
       
      j'ai testé mais je ne comprends pas comment et ou dans la macro principale s'actionne la fonction "fichouvert" (fichier doit il etre le nom du fichier a tester) comment l'integrer si on le defini par une variable dans dim et wk doit correspondre a quoi

      et le With Workbooks génére une erreur
      pardon voilà beaucoup de questions je suis désolé
      je suis sous excel 2007


      Function FichOuvert(fichier As String) As Boolean
      Dim Wk As Workbook
      On Error Resume Next
      Set Wk = Workbooks(fichier)
      On Error GoTo 0
      FichOuvert = Not Wk Is Nothing
      End Function

      Sub a_999_test()

      If FichOuvert("x:\1_money\1__xxp\fich_.xls") Then
      With Workbooks("x:\1_money\1__xxp\fich_.xls", UpdateLinks:=0)
      If Not .Saved Then
      .Save
      End If
      .Close 'si on veut refermer le classeur
      End With
      End If
      End Sub
      0