Bonjour,
Alors, après de nombreuses lectures sur les fichiers Excel en mode partagé, je fais appel à vous pour avoir des explications.
J'ai un fichier Excel qui me sert de sources d'informations (une base de donnée...). Juste pour étre clair, ce fichier n'a aucun script VBA.
D'un autre coté, j'ai un autre fichier excel avec un menu et plusieurs code VBA.
Dans celui-ci, une macro qui me permet de valider si le fichier est bien en mode partagé.
D'ailleurs en voici le code qui pourrait servir à certains :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51 Sub SHARED_DATABASE() 'On cache les classeurs qui vont s'ouvrir pour éviter les sauts d'écran 'ATTENTION, NE PAS OUBLIER DE METTRE A TRUE EN FIN DE SCRIPT Application.ScreenUpdating = False Application.DisplayAlerts = False 'On cache les classeurs qui vont s'ouvrir pour éviter les sauts d'écran 'ATTENTION, NE PAS OUBLIER DE METTRE A TRUE EN FIN DE SCRIPT Application.ScreenUpdating = False '--------- DECLARATION EMPLACEMENT FICHIER : ARCHIVES_FICHIER_EXCEL_V1.4.xlsx --------- 'On déclare le fichier source de donnée ARCHIVES Dim FILE_ARCHIVES_BACKUP As String FILE_ARCHIVES_BACKUP = "Mettre_ici_votre_chemin\ARCHIVES_FICHIER_EXCEL_V1.4.xlsx" '---------- VERIFICATION DE L'OF EXISTANT DANS ARCHIVES LIEBHERR ---------- 'On déclare la variable qui contiendra la référence du fichier ARCHIVES_FICHIER_EXCEL_V1.4.xlsx Dim WbArchive_BACKUP As Workbook 'On ouvre le fichier Archives Set WbArchive_BACKUP = Workbooks.Open(FILE_ARCHIVES_BACKUP) 'On déclare la feuille source dans le fichier ARCHIVES LIEBHERR1 Dim WcArchive As Worksheet Set WcArchive = WbArchive_BACKUP.Worksheets("ARCHIVES_MURET_FICHIER_EXCEL") If Not WbArchive_BACKUP.MultiUserEditing Then Application.DisplayAlerts = False WbArchive_BACKUP.SaveAs Filename:=WbArchive_BACKUP.FullName, accessMode:=xlShared WbArchive_BACKUP.Close SaveChanges:=True MsgBox "Votre Database est dorénavant en mode partagé !" Application.DisplayAlerts = True Else Application.DisplayAlerts = False WbArchive_BACKUP.Close SaveChanges:=False MsgBox "Votre base de donnée est déja en mode : Partagé !" Application.DisplayAlerts = True End If 'On dé-cache les classeurs nécéssaires ouvert 'ATTENTION, NE PAS OUBLIER DE METTRE A TRUE EN FIN DE SCRIPT Application.ScreenUpdating = True Application.DisplayAlerts = True End Sub
BILAN : Mon fichier est bien partagé.
Si je l'ouvre pour effectuer une modification d'une cellule, en enregistrant, j'ai une mise à jour du fichier qui se fait sans souci. Voir ci-dessous :
Je me pose la question suivante.
Sous VBa : J'enregistre arbitrairement si ce fichier a été ouvert et si des instructions ont été apportés. Voici la ligne que j'utilise :
En fait, comment dire à VBA de faire une mise à jour au lieu d'un enregistrement complet ? Je cherche en résumé à savoir comment faire un UPDATE de mon fichier Excel qui me sert de base de donnée au lieu d'un enregistrement en écrasant mon fichier.
Code : Sélectionner tout - Visualiser dans une fenêtre à part WbArchive_BACKUP.Close SaveChanges:=True
Déduction que j'ai fais car j'ai des erreurs en me disant que le fichier est en lecture seule sous VBA...
Ayant un niveau assez faible en VBA, je me suis permis de détaillé pour comprendre le contexte ainsi que mes intérrogations.
Pour info, si le fichier Excel est ouvert directement par plusieurs personnes (pas de VBA) : pas de souci.
Bref, a mon avis j'ai besoin de quelques explications...
Merci pour votre retour.
Bien à vous
EDIT :
Serait-il judicieux pour un update de mettre plutot ceci ?
Sinon si je regarde dans l'explorateurs d'objets (F2), j'ai trouvé ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 WbArchive.SaveAs Filename:=WbArchive.FullName, accessMode:=xlShared WbArchive.Close
Bon là aussi, j'ai besoin de comprendre...
Code : Sélectionner tout - Visualiser dans une fenêtre à part AutoUpdateSaveChanges








Répondre avec citation
Partager