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

2 réponses

michel_m
Messages postés
16574
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
3 août 2022
3 277
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
16574
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
3 août 2022
3 277
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