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

Conception Discussion :

Plusieurs nofitication à l'ouverture [XL-2007]


Sujet :

Conception

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 275
    Points : 152
    Points
    152
    Par défaut Plusieurs nofitication à l'ouverture
    Bonsoir tout le monde,

    Je reviens vers vous.

    Je souhaiterais savoir comment ce passe si:

    1 personne ouvre le fichier.
    2ème personne ouvre le fichier et à soit le choix de la lecture seul ou de cliquer sur notifier donc clic sur notifier.
    et la 3ème personne clic aussi sur notifier comment sa va se passer quand la première personne va fermer le fichier?

    Est-ce qu'il y a une file d'attente? Ou juste une personne peut avoir notifier?

    Je ne trouve rien sur le net à ce sujet et ne pouvant pas faire le test. je suis une seul personne. (hé oui!!)

    Merci d'avance pour vos réponses.

    Cordialement,

    Vincent.

  2. #2
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Bonjour.

    Je ne suis pas expert en la matière mais si ça peux t'aider :

    1) Soit tu est limité au réseau local et donc tu :
    - utilise excel en mode révision
    - utilise un répertoire partagé sur le réseau local (ou un rsync aussi)

    Ca permettra de travailler et de se synchroniser avec le travail des autres mais tu ne verra pas les modifications en temps réel lorsque tu aura ton fichier d'ouvert. En gros faudra à chaque fois se synchroniser (le répertoire partagé, ou rsync se chargeront de ça) et ré-ouvrir ton fichier pour récupérer les modifs des autres je pense. En ré-ouvrant ton fichier, tu aura toutefois les révisions : donc pouvoir faire des diff un peu à la manière de SVN.

    2) Soit tu est prêt à travailler avec une solution cloud. Je ne vais pas te recommander Google doc / Google drive si tu souhaites rester sur du fichier excel mais tu as par exemple : One drive gratuit jusqu'à 30 GO. Avec cette solution tu peux déposer tes fichiers de ton disque sur un répertoire synchronisé avec One drive (comme dropbox ou google drive) et tu peux les manipuler via une interface web très proche de celle d'office 2010. Et là via l'interface web, tu pourra voir ce qu'écrivent tes collaborateurs en temps réel, sans conflit et sans avoir besoin de se synchroniser. Et bien entendu, tu peux à tout moment récupérer ton fichier xls ou xlsx en local sur une vraie interface excel.

    Cordialement,
    Idriss

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 275
    Points : 152
    Points
    152
    Par défaut
    Merci ok.Idriss pour tes réponses.

    A savoir, il n'y a pas d'accès au web sur les postes. Le fichier est sur un disque dur en réseau.

    Je vais expliquer mieux ma problématique, J'ai un formulaire de saisie qu'y incrémente une feuille. Si je le met en mode partager l'incrémentation ne se fait pas bien car si deux personnes valident leurs saisie, elle vont se rajouter sur la même ligne soit la première ligne vide.

    Si je met le fichier en mode exclusif, c'est pareil si la personne clic sur notifier et qu'elle fait la saisie quand le fichier est accessible et va valider sa saisie sa se mettra pas à la première ligne vide et écrasera les lignes déjà rempli par l'utilisateur d'avant.

    Soit si possible à l'ouverture du fichier empêcher la lecture seul et la les utilisateurs cliqueront au hasard pour voir si le fichier est disponible. plus de 40 utilisateurs. donc il vont se battre.

    Soit si possible faire une liste d'attente avec sa position d'attente et quand le fichier est au tour de l'utilisateur il peut faire ses saisies.

    Je bloque sur cette choses. J'espère avoir été plus clair.

    Cordialement,

    Vincent.

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 275
    Points : 152
    Points
    152
    Par défaut
    Re bonjour,

    J'ai trouver ceci qu'y pourrait être peut-être intéressant, mais comment l'intégrer:

    Voici le code : (à mettre dans un module standard du perso.xls)
    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
    Function IsFileOpen(filename As String)
     Dim filenum As Integer, errnum As Integer
     
     On Error Resume Next
     filenum = FreeFile()
     Open filename For Input Lock Read As #filenum
     Close filenum
     errnum = Err
     On Error GoTo 0
     Select Case errnum
     Case 0
     IsFileOpen = False
     Case 70
     IsFileOpen = True
     Case Else
     Error errnum
     End Select
     End Function
    sub CallDemands()
     Dim Msg, Style, Title
     If IsFileOpen("P:\Developments\Demand.xls") Then
     MsgBox "Fichier ouvert par un autre utilisateur" & Chr(13) & "Merci d'essayer plus tard"
     Else
     Workbooks.Open "P:\Developments\Demand.xls"
     End If
     end sub

  5. #5
    Membre habitué
    Inscrit en
    Décembre 2008
    Messages
    115
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 115
    Points : 180
    Points
    180
    Par défaut
    Bonjour

    Gérer des accès concurrenciels de 40 personnes avec Excel
    Le problème d'Excel est qu'il ne sait travailler que pour une personne à la fois.
    Le mode partagé (surtout avec 40 personnes) va générer des conflits en quantité. La mieux est d'utiliser une base Accesss (pourquoi pas pilotée pas Excel)

    Sinon, avec seulement Excel, une solution est que chaque utilisateur pose un fichier issu du formulaire dans un répertoire commun et une macro l'intègre à la fin du fichier
    Avec une tempo si le fichier est déjà ouvert (puisqu'Excel est mono utilisateur) par une autre macro.
    On a donc 2 fichier. Un sur chaque poste avec le formulaire et la macro de mise à jour et un commun, jamais ouvert directement par les utilisateurs.

    Sur http://www.developpez.com/ il y a toute la littérature sur l'écriture dans un fichier Excel fermé (avec ses limitations):http://silkyroad.developpez.com/VBA/ClasseursFermes/
    Et aussi le pilotage d'Access par Excel.

    Cordialement

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 275
    Points : 152
    Points
    152
    Par défaut
    Bonjour piotr76,

    Merci pour tes réponses. Du coup j'ai bloquer le fichier à un utilisateur. Et un message pour dire si le fichier est disponible ou pas.

    Encore merci.

    Cordialement,

    Vincent

  7. #7
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Points : 1 562
    Points
    1 562
    Par défaut
    Bonjour,

    je pense que vous pouvez vous en sortir quand même avec quelques compromis, sans passer par Access ....

    1. Fichier en mode partagé avec une feuille par user (attention, de mémoire, le mode partagé n'autorise pas une modification de la structure du classeur, donc, si vous voulez que tous les utilisateurs puissent entrer des données, il convient de le prévoir .... avant (autant de feuilles que d'utilisateurs, avec aiguillage par ordre d'entrée ou par Application.UserName)


    2. Prévoir un mode 'passage en mode exclusif' .... Je n'ai jamais testé un formulaire sur un fichier partagé

    3. Quelques pistes:

    - Liste des users (mode partagé)

    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
     
    Function get_wbk_user(wbk As Workbook) As Variant
    '=============================================================================
    ' List the users sharing the workbook
     
        Subname = "Func: get_wbk_user"
     
        Dim Shartyp As String, cnt_usr As Integer, rownum As Integer
        Dim usr_status() As Variant, users As Variant
     
    ' Get the users informations
     
        users = wbk.UserStatus
        ReDim usr_status(UBound(users, 1), 3)
     
        usr_status(0, 0) = "User name"
        usr_status(0, 1) = "Date"
     
        For cnt_usr = 1 To UBound(users, 1)
            Select Case users(cnt_usr, 3)
                Case 1
                    Shartyp = "Exclusive"
                Case 2
                    Shartyp = "Shared"
            End Select
     
                ' Assign to the array for the return
            usr_status(cnt_usr, 0) = users(cnt_usr, 1)
            usr_status(cnt_usr, 1) = DateValue(users(cnt_usr, 2))
            usr_status(cnt_usr, 2) = TimeValue(users(cnt_usr, 2))
            usr_status(cnt_usr, 3) = Shartyp
     
        Next cnt_usr
     
        get_wbk_user = usr_status
     
    End Function
    - Remettre le fichier en mode exclusif
    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
     
    Sub set_wbk_exclusiv()
    '=============================================================================
    ' Set the workbook in exclusive mode, whatever the shared option (sheet 'Usr_setting')
     
        Subname = "set_wbk_exclusiv"
     
        Dim Displ_info As Boolean
        Dim Msgprompt As String, Msganswer As String, Msgwarning As String
        Dim usr_status As Variant, cnt_usr As Integer, colnum As Integer
     
        ThisWorkbook.Activate
        Application.DisplayAlerts = False
     
    ' INIT, EXIT if already EXCLUSIVE
        If Not (ThisWorkbook.MultiUserEditing) Then Exit Sub
        usr_status = get_wbk_user(ThisWorkbook)
     
    'IF SHARED and multi-users, confirm to remove the users
        If ThisWorkbook.MultiUserEditing And UBound(usr_status, 1) > 1 Then
     
            Msgwarning = "User name" & vbTab & "Date" & vbTab & vbTab & "Time" & vbTab & vbTab & "Share type" & vbCrLf
     
            For cnt_usr = 1 To UBound(usr_status, 1)
     
                    ' Report the others users
                If usr_status(cnt_usr, 0) <> Application.UserName Then
                    For colnum = 0 To 3
                        Msgwarning = Msgwarning & usr_status(cnt_usr, colnum) & vbTab
                    Next colnum
                    Msgwarning = Msgwarning & vbCrLf
                End If
            Next cnt_usr
     
                ' Confirmation!
            Msgwarning = "The following users will be removed from this file:" & vbCrLf & vbCrLf & Msgwarning
            Msgwarning = Msgwarning & vbCrLf & _
                "They will not be able to save their change, if any!" & vbCrLf & _
                ". OK to continue" & vbCrLf & ". Cancel to ABORT"
            Msganswer = MsgBox(Msgwarning, vbCritical + vbOKCancel, "WARNING: " & Subname)
     
            If Msganswer <> vbOK Then Exit Sub
     
        End If
     
        ThisWorkbook.ExclusiveAccess
     
    End Sub
    Bon partage
    "Idéalement nous sommes ce que nous pensons. Dans la réalité, nous sommes ce que nous accomplissons." A.Senna
    et n'oubliez-pas de développer des .... sourires ^_^

  8. #8
    Membre habitué
    Homme Profil pro
    Inscrit en
    Juillet 2012
    Messages
    275
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 275
    Points : 152
    Points
    152
    Par défaut
    Bonsoir vinc_bilb ,

    Merci beaucoup pour ton aide. Je vais garder ce que tu as fait. Et l'analyser.

    J'ai fait autrement avec le planificateur de tache et vbscript.

    Cordialement,

    Vincent

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Gestion de plusieurs fenêtres à l'ouverture
    Par Go'Gaule dans le forum Débuter
    Réponses: 28
    Dernier message: 15/09/2011, 18h03
  2. [AC-2003] Plusieurs conditions à l'ouverture d'un formulaire
    Par minot83 dans le forum VBA Access
    Réponses: 7
    Dernier message: 13/01/2011, 15h55
  3. Macro avec plusieurs conditions pour ouverture formulaire
    Par Jacques-Henri dans le forum IHM
    Réponses: 2
    Dernier message: 05/08/2008, 22h44
  4. Mettre plusieurs conditions pour ouverture d'un état
    Par L'Oracle dans le forum Access
    Réponses: 2
    Dernier message: 01/07/2006, 15h33
  5. Plusieurs SELECT dans l'ouverture d'une connection
    Par pmboutteau dans le forum ASP
    Réponses: 6
    Dernier message: 01/04/2005, 11h09

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