En macro vba controle d'ouverture et de sauvegarde

Résolu/Fermé
arc1947 Messages postés 4 Date d'inscription dimanche 20 mars 2016 Statut Membre Dernière intervention 21 mars 2016 - Modifié par arc1947 le 21/03/2016 à 08:51
arc1947 Messages postés 4 Date d'inscription dimanche 20 mars 2016 Statut Membre Dernière intervention 21 mars 2016 - 21 mars 2016 à 14:47
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
A voir également:

2 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 21/03/2016 à 09:28
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
arc1947 Messages postés 4 Date d'inscription dimanche 20 mars 2016 Statut Membre Dernière intervention 21 mars 2016
21 mars 2016 à 09:43
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
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
21 mars 2016 à 09:54
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
arc1947 Messages postés 4 Date d'inscription dimanche 20 mars 2016 Statut Membre Dernière intervention 21 mars 2016
21 mars 2016 à 10:04
parfait merci et bonne journée
0
arc1947 Messages postés 4 Date d'inscription dimanche 20 mars 2016 Statut Membre Dernière intervention 21 mars 2016
Modifié par arc1947 le 21/03/2016 à 14:50
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