code VB pour enregistrer un fichier qui sera ouvert par la macro

chroberto

XLDnaute Nouveau
Bonjour le Forum :)
Je fignole ma 1ère macro mais pour ce faire j'aurais besoin d'un pti coup de pouce avant de crier "VICTOIRE"...
Voici ma situation:
dans mon code macro que je réalise, je fais ouvrir un fichier "X" pour lui extraire des données, sauf que ce fichier "X" sera utilisé tout les jours et qu'il se pourrait qu'on lance l'autre fichier "Y" avec la macro sans avoir enregistré auparavant les nouvelles données saisie dans le fichier "X".

Ma question:
lorsque je fais appel à ce fichier "X" dans ma macro:
Workbooks.Open Filename:="C:\ adresse fichier "X".xls"
comment puis-je lui dire que s'il est déjà ouvert, enregistre le, plutot que de le laisser me dire :( le fichier est déjà ouvert, si vous l'ouvrez à nouveau, vos modif seront perdu!!

j'ai une solution qui est tout simplement de l'enregistrer avant de lancer la macro...(tout bêtement), mais le hic c'est que ce n'est pas moi qui utilisera ces fichiers par la suite.

Merci par avance pour les idées que vous pourrez m'apporter.
 

jp14

XLDnaute Barbatruc
Re : code VB pour enregistrer un fichier qui sera ouvert par la macro

Bonjour

Une fonction qui permet de vérifier si le fichier est ouvert

Code:
Private Function fichouvert(£nomfich As String) As Boolean
Dim £Wkb As Workbook
fichouvert = False
For Each £Wkb In Workbooks
    If £Wkb.Name = £nomfich Then
        fichouvert = True
        Exit For
    End If
Next £Wkb
Si le fichier est ouvert on réalise une sauvegarde avec save.

A tester

JP
 

chroberto

XLDnaute Nouveau
Re : code VB pour enregistrer un fichier qui sera ouvert par la macro

merci JP pour ta rapidité mais je ne sais pas à quel endroit dans tes lignes de code, je dois renseigner le nom de mon fichier?
est-ce que c'est à la place de £nomfich?
a ce moment là qu'est ce que veut dire £Wkb?
de plus je n'ai qu'1 seul fichier à vérifier s'il est ouvert ou pas, alors pourquoi une boucle 'FOr...NEXT"?

C'est ma première macro alors je pige pas tout out encore.

merci de m'éclairer et encore merci pour ta réactivité.
 

jp14

XLDnaute Barbatruc
Re : code VB pour enregistrer un fichier qui sera ouvert par la macro

Bonsoir

C'est une fonction qui vérifie si un classeur est ouvert.
Le code peut se traduire par

pour tous les classeurs ouverts
Si le nom du classeur est égal au classeur cherché
alors
la fonction renvoie la valeur vrai
on quitte la fonction
On passe au classeur suivant

Pour l'utiliser

If fichouvert("X".xls) = true then ' si le fichier existe
"X".xls. save ' on le sauvegarde
else ' sinon
Workbooks.Open Filename:="C:\ adresse fichier "X".xls" ' on l'ouvre
end if

A tester

JP
 

Discussions similaires

Statistiques des forums

Discussions
312 492
Messages
2 088 938
Membres
103 988
dernier inscrit
Feonix