1 pièce(s) jointe(s)
BDD Fichier EXCEL en mode partagé
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:
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 :
Pièce jointe 664505
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 :
Code:
WbArchive_BACKUP.Close SaveChanges:=True
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.
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 ?
Code:
1 2
| WbArchive.SaveAs Filename:=WbArchive.FullName, accessMode:=xlShared
WbArchive.Close |
Sinon si je regarde dans l'explorateurs d'objets (F2), j'ai trouvé ceci :
Code:
AutoUpdateSaveChanges
Bon là aussi, j'ai besoin de comprendre...