Microsoft 365 Lecture/écriture base de données externe VBA Excel

barry white

XLDnaute Junior
Bonjour à tous,

Je suis en train de créer une application VBA/XLS pour mon entreprise. J'hésite entre deux modes de fonctionnement.

J'ai un fichier XLS/VBA installé sur chaque poste utilisateur (exemple sur le bureau, c'est le même fichier pour tout le monde). Un paramétrage de ce fichier est fait lors de la 1ere exécution de celui-ci.

Cette macro doit accéder à des données externe et la j'hésite entre deux modes de fonctionnement :
  1. "Taper" dans un fichier XLS partagé où il y aurait aucune macro
  2. "Taper" dans un fichier de type .ini (pourquoi INI? je sais utilisé sous vba) où les informations seront stockées).
Les utilisateurs (environ 40 utilisateurs utiliseront cette appli) peuvent utiliser en même temps le fichier local et donc lire/écrire en même temps sur le fichier externe. Ma crainte d'utiliser un fichier xls partagé, c'est :

  1. De perdre du temps à ouvrir le fichier de lire/écrire enregistrer et ensuite de le refermer (A moins qu'il existe un moyen d’écrire/lire dans un fichier xls sans l'ouvrir!)
  2. Que deux utilisateurs utilisent (comme pas hasard à la même seconde...) en même temps le fichier.

Quel moyen utiliseriez vous?

Merci beaucoup pour votre aide.
 

patricktoulon

XLDnaute Barbatruc
Bonjour
écrire dans une fichiers xl fermé il y a la méthode ADO même avec un text(.ini ou autre)
mais l'utilisation d'un fichier commun représente des risques si les utilisateur modifient les même lignes la synchronisation et la seule chose ingérable
en effet si deux utilisateur modifient le fichier a 1 seconde d’intervalle l'un peut annuler la modif de l'autre
le mieux c'est que chacun ai leur propre fichier (ini,xl ou autre) et qu'un utilisateur maître condense dans un fichier ini maître les données des autres a intervalles régulier tout au long de la journée
cela peux se faire automatiquement bien sur
cela dit ce genre d’opération n'est jamais simple alors avec 40 utilisateurs pffffff!! tu a interet a que ce soit béton
Bon courage ;)
 

dysorthographie

XLDnaute Accro
Bonjour,
40 utisateurs ça commence à faire !
Pour une base de données Access Microsoft préconise pas plus de 25 par exemple !

Utiliser Excel pour ce genre de traitement c'est se tirer une balle dans le pied !

Je te suggère d'utiliser SQL serveur version gratuite !
 

barry white

XLDnaute Junior
Bonjour,

merci pour ton retour. Pour l instant nous sommes en état de POC. je ne peux faire plus et nous sommes vraiment brider techniquement parlant (pas de ME SI pour l instant sur le projet et on ne peut pas installer un serveur sur le réseau sans de ME SI)

je vais nuancer. 40 utilisateurs mais en direct live 3 ou 5 personnes grand maximum.

Mais je suis d accord avec toi, il faudrait une vraie SGBD pour bien faire. Mais nous devons prouver ce projet avec le mimimum de ressources pour avoir plus après.
 

CHALET53

XLDnaute Barbatruc
Bonjour,
Pour répondre à un problème un peu similaire (4/5 utilisateurs), j'avais réalisé l'approche suivante :
1 L'utilisateur ouvre son fichier : par une procédure, il appelle l'ouverture du fichier partagé
Cette procédure d'appel du fichier partagé ouvre un fichier log dans lequel on met une info concernant le fichier à partager (Utilisé ou non utilisé)
S'il est utilisé (présence de l'info positive) : message revenez plus tard et fermeture du fichier log
S'il n'est pas utilisé (présence de l'info négative) : rendre l'info positive dans le fichier log, le fermer pour le laisser disponible en lecture pour un intervenant ultérieur et ouverture du fichier partagé

2 L'intervenant peut faire ses mises à jour
Tant qu'il n'aura pas refermé le fichier, les tentatives des intervenants suivants échoueront sur le contrôle fait dans le fichier log
3) L'intervenant en cours ferme le fichier partagé : ouverture du fichier log et mise de l'info à négative.
Le fichier partagé redevient disponible pour l'intervenant suivant.

Ouverture / Mise à jour fichier log / Fermeture : une fraction de seconde

Autre piste : regarder le partage de fichier sous OneDrive (il me semble qu'on puisse partagé un fichier en mise à jour )

a+
 

barry white

XLDnaute Junior
Bonjour
écrire dans une fichiers xl fermé il y a la méthode ADO même avec un text(.ini ou autre)
mais l'utilisation d'un fichier commun représente des risques si les utilisateur modifient les même lignes la synchronisation et la seule chose ingérable
en effet si deux utilisateur modifient le fichier a 1 seconde d’intervalle l'un peut annuler la modif de l'autre
le mieux c'est que chacun ai leur propre fichier (ini,xl ou autre) et qu'un utilisateur maître condense dans un fichier ini maître les données des autres a intervalles régulier tout au long de la journée
cela peux se faire automatiquement bien sur
cela dit ce genre d’opération n'est jamais simple alors avec 40 utilisateurs pffffff!! tu a interet a que ce soit béton
Bon courage ;)

Bonjour,

Désolés je n'avais pas vu ton message, j'avais lu à partir de mon iPhone ce matin. :)

Comme dit auparavant, j'aurai 3 à 5 utilisateurs max qui va exécuter le fichier local. De plus, quand la macro local va être exécutée, le fichier externe est ouvert très rapidement pour consulter les informations (voir mise à jour) et fermeture derrière. Grand maximum 3secs. Mais c'est vraiment pas bête de contrôler l'ouverture, "comme un feu rouge". je pense qu'il faut dans le fichier local une procédure de controle d'ouverture. Merci pour l'idée. je vais me renseigner de suite pour la methode ADO! ;)
 

barry white

XLDnaute Junior
Bonjour,
Pour répondre à un problème un peu similaire (4/5 utilisateurs), j'avais réalisé l'approche suivante :
1 L'utilisateur ouvre son fichier : par une procédure, il appelle l'ouverture du fichier partagé
Cette procédure d'appel du fichier partagé ouvre un fichier log dans lequel on met une info concernant le fichier à partager (Utilisé ou non utilisé)
S'il est utilisé (présence de l'info positive) : message revenez plus tard et fermeture du fichier log
S'il n'est pas utilisé (présence de l'info négative) : rendre l'info positive dans le fichier log, le fermer pour le laisser disponible en lecture pour un intervenant ultérieur et ouverture du fichier partagé

2 L'intervenant peut faire ses mises à jour
Tant qu'il n'aura pas refermé le fichier, les tentatives des intervenants suivants échoueront sur le contrôle fait dans le fichier log
3) L'intervenant en cours ferme le fichier partagé : ouverture du fichier log et mise de l'info à négative.
Le fichier partagé redevient disponible pour l'intervenant suivant.

Ouverture / Mise à jour fichier log / Fermeture : une fraction de seconde

Autre piste : regarder le partage de fichier sous OneDrive (il me semble qu'on puisse partagé un fichier en mise à jour )

a+

Bonjour à toi,

Pas bête comme idée, utilisait un fichier log comme "un feu rouge". tu avais utilisé quel type de fichier log? un INI? Tu l'exploitais comment le fichier log?

Pour l'instant pas de onedrive au bouot qui va arriver dans quelques mois.

Merci encore ;)
 

Discussions similaires

Réponses
7
Affichages
317

Statistiques des forums

Discussions
312 083
Messages
2 085 188
Membres
102 809
dernier inscrit
Sandrine83