IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Gestion MultiUtilisateur sur une Base de donnee


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2012
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 39
    Points : 28
    Points
    28
    Par défaut Gestion MultiUtilisateur sur une Base de donnee
    Bonjour tout le monde,

    j'ai un fichier qui va lire/enregistrer des infos dnas un autre fichier excel

    et qui pour cela fait des appels vers ce fichier.

    Pour l'instant aucun probleme,car je suis le seul utilisateur mais quand il sera deploye, on sera 4/5 dessus et donc il risque d'y avoir le moment ou le fichier sera deja entrain d'etre utilise par une autre personne;

    quel genre de boucle faut il pour faire patienter la 2eme personne qui veut ouvrir le fichier? eviter qu'elle soit en read only par exemple quand elle veut enregistrer par exemple

    Merci par avance...

  2. #2
    Membre émérite

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Points : 2 523
    Points
    2 523
    Billets dans le blog
    1
    Par défaut
    regardes le partage de classeur . mais je ne peut pas te renseigner plus j'ai toujours éviter de m'en servir .
    ce que je fait sur les BD commune ( par exemple un fichier d'adresse commune) c'est ouvrir le fichier télécharger le tableau en mémoire et fermer le fichier. en cas de modification l'enregistrement rouvre le classeur et le referme aussitôt.
    ceci est valable pour un fichier qui ne doit pas être lu en continu.
    il s'agit dans les faits d'un créateur de bon d’échantillons . chacun à un éditeur de bon et les données sont stockées dans divers classeurs. Adresse , références, BP . chaque classeur de sauvegarde est ouvert et refermé aussitôt. ce principe est bon pour ce type de fonctionnement ; dans ton cas j'ignore ce que tu veux faire

  3. #3
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour,

    Pour vérifier si un classeur est déjà utilisé et éviter de l'ouvrir en lecture seule, tu peux tester ceci :
    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
    Sub test()
    Dim FichNum As Integer, ErrNum As Integer, FichNom As String
     
    FichNom = "C:\temp\toto.xls" '<-- chemin complet et nom du classeur à tester
    On Error Resume Next
    FichNum = FreeFile()
    Open FichNom For Input Lock Read As #FichNum
    Close FichNum
    ErrNum = Err
    On Error GoTo 0
    Select Case ErrNum
        Case 0: Workbooks.Open FichNom '<-- le classeur n'est pas utilisé
        Case 70: MsgBox "Le classeur est déjà ouvert par un autre utilisateur, veuillez réessayer plus tard"
    End Select
     
    End Sub

  4. #4
    Nouveau membre du Club
    Inscrit en
    Mai 2012
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 39
    Points : 28
    Points
    28
    Par défaut
    Daranc c'est un peu le meme systeme que ton principe de bon
    a part que definitivement je peux pas les stocker en archive trop de donnees

    ca va chercher une page contact
    une page produit
    enregistre dans un histo l'affiche dans le fichier excel par personne (je leur demande juste de cliker pour actualiser la liste)

    on doit pouvoir voir les produits que les autres fonts..

    est ce que tu as deja eu des problemes d'enregistrement simultanes et autres?

    MERCI fring pour la verif lecture seule; comment juste la faire boucler pour quil attende que le fichier soit de nouveau libre pour quil enregistre

    sinon comment faire pour ouvrir le fichier en lecture seule juste pour aller recuprerer des donnees merci par avance

  5. #5
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Citation Envoyé par AmauryLondon Voir le message
    comment juste la faire boucler pour quil attende que le fichier soit de nouveau libre
    Tu peux faire comme ceci, dans cet exemple il va tester le fichier toutes les 5 secondes
    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
    Sub Ouverture_Fichier()
    Dim FichNum As Integer, ErrNum As Integer, FichNom As String
     
    FichNom = "D:\temp\test.xls" '<-- chemin complet et nom du classeur à tester
    On Error Resume Next
    FichNum = FreeFile()
    Open FichNom For Input Lock Read As #FichNum
    Close FichNum
    ErrNum = Err
    On Error GoTo 0
    Select Case ErrNum
        Case 0: Workbooks.Open FichNom '<-- le classeur n'est pas utilisé
        Case 70: Application.OnTime Now + TimeValue("00:00:05"), "Reco"
    End Select
     
    End Sub
     
    Sub reco()
    Ouverture_Fichier
    End Sub
    Citation Envoyé par AmauryLondon Voir le message
    sinon comment faire pour ouvrir le fichier en lecture seule juste pour aller recuprerer des donnees
    Là je ne comprend pas la question, dans ce cas il suffit d'ouvrir le fichier et il sera en lecture seule ou non selon qu'il est déjà utilisé ou pas.

  6. #6
    Nouveau membre du Club
    Inscrit en
    Mai 2012
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 39
    Points : 28
    Points
    28
    Par défaut
    merci pour la boucle ; et il ya moyen de boucler mais sans lancer un autre sub;

    merci

    sinon ma question que tu comprends pas est: Comment forcer l'ouverture dun fichier en lecture seul (meme si il serait dispo en ecriture) comme ca si quelqun lit le fichier et que quelquun veut ecrire ca passe sans probleme

    merci

  7. #7
    Membre émérite

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Points : 2 523
    Points
    2 523
    Billets dans le blog
    1
    Par défaut
    jamais eu de problème du à une double utilisation
    mais les bons d'échantillonnage ne se font pas non plus à longueur de temps

    chez nous ça fonctionne comme ceci
    pour l'adresse (les contacts) le fichier contact est ouvert le tableau des adresses est chargé en memoire et le fichier est fermé le tableau en mémoire est utilisé pour choisir le contact et écrire les données sur le BP letableau d'adresse est viré de la memoire
    l'interface échantillon est active on construit la référence et on valide
    le classeur référence est ouvert on charge l'ensemble des référence on referme le fichier et on test la validité de la référence entrée .
    une déclinaison de gamme est possible ( une même référence pouvant avoir plusieurs options l’opération appelle le même classeur et vérifie toute les références
    lorsque que le bon est prêt il est m@illé au service de préparation et l'ensemble de ses données sont stocké dans un classeur archive . la ligne correspondant au numéro du bon préparé.
    Pour faire un nouveau BP un autre classeur est appelé selon le même principe et la cellule A1 de ce classeur est incrémenté de 1 après avoir été copiée sur le BP ( le numéro du BP)
    pour ceci ça tourne plutôt bien ( je n'ai pas de retour de dysfonctionnement)
    7 personnes ont à disposition des versions bridées ( il ne peuvent pas valider l'envoi des échantillons)..les macro qui font ceci ne sont activées que sur deux PC : le préparateur qui édite les BP et envoie les échantillons
    et le deuxième c'est le mien ...privilège que je me suis auto accordé pour mettre le programme au point)

  8. #8
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Citation Envoyé par AmauryLondon Voir le message
    merci pour la boucle ; et il ya moyen de boucler mais sans lancer un autre sub
    En quoi ça pose problème ?

    Citation Envoyé par AmauryLondon Voir le message
    Comment forcer l'ouverture dun fichier en lecture seu
    Comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks.Open Filename:="D:\temp\test.xls", ReadOnly:=True

  9. #9
    Nouveau membre du Club
    Inscrit en
    Mai 2012
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Mai 2012
    Messages : 39
    Points : 28
    Points
    28
    Par défaut
    Fring, cest juste que pour la clarete de la sub; jevite au maximum de relancer des sous-sub.

    sinon merci pour l'ouverture seule.

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/06/2011, 11h52
  2. Envoyer sur une base de donnee
    Par didi74 dans le forum C++/CLI
    Réponses: 10
    Dernier message: 21/04/2010, 18h07
  3. IMPORTANT : Récupérer des données sur une base de donnee externe
    Par _cece dans le forum Développement de jobs
    Réponses: 0
    Dernier message: 17/10/2008, 16h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo