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 :

[VBA-E] Utilisation d'un tableau en réseau (multi-utilisateurs)


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 43
    Par défaut [VBA-E] Utilisation d'un tableau en réseau (multi-utilisateurs)
    Bonjour à tous,

    Je cherche à partager un tableau en réseau, et je suis confronter à plusieurs pbs. Je ne sais pas si je pose ma question sur le bon forum. Veuillez d'avance m'en excuser...

    Je souhaite donner l'accès en modification de certaines cellules à certains utilisateurs.
    Je souhaite aussi cacher certaines cellules en fonction de l'utilisateur.

    Le fichier sera sur un serveur, en réseau.

    En bricolant avec les protections d'Excel, j'arrive seulement à bloquer l'accès à certaines cellules. Mais je ne masque RIEN....

    Si vous avez des solutions en VBA, je suis prenneur bien evidemment !J'espère q mes explications auront été suffisantes. N'hésite pas à me poser des questions pr éclaircir les zones d'ombres.

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Peins les caratères en blanc selon les utilisateurs et empêche leur sélection
    A+

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Un peu de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        ActiveSheet.Unprotect
        If Not Range("A6").FormulaHidden Then Range("A6").FormulaHidden = True
        Range("A6").Font.ColorIndex = 2
        ActiveSheet.Protect
    Le contenue de la cellule est invisible et la sélection ne permet pas de voir ce qu'il y a dedans
    A+

  4. #4
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 43
    Par défaut
    Citation Envoyé par ouskel'n'or
    Un peu de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        ActiveSheet.Unprotect
        If Not Range("A6").FormulaHidden Then Range("A6").FormulaHidden = True
        Range("A6").Font.ColorIndex = 2
        ActiveSheet.Protect
    Le contenue de la cellule est invisible et la sélection ne permet pas de voir ce qu'il y a dedans
    A+
    ok pour la 1! Merci !!

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 52
    Par défaut
    Salut

    Sauf erreur, en mode partagé le verrouillage des cellules est statique. Si une feuille est protégée, il n'est pas possible d'annuler la proctection une fois que le classeur est partagé.

    Une piste: utiliser les evênements du type Worksheet_SelectionChange.

  6. #6
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 43
    Par défaut
    Citation Envoyé par ouskel'n'or
    Peins les caratères en blanc selon les utilisateurs et empêche leur sélection
    A+
    Merci pour ta réponse.

    Ok, pr les caractères en blanc, mais j'ai encore 3 questions :
    1/ Comment masquer la formule ?
    2/ Comment choisir les colonnes à peindre en blanc en fonction de l'utilisateur ? est-ce une commande à insérer dans ma macro ?
    3/ A chq modification de cellule, Excel demande à l'utilisateur un mot de passe; Ne peut-il pas se loguer une fois et avoir ensuite accès aux zones qui lui sont dédiées ?

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Le code que je t'ai passé empêche l'affichage lors de la sélection.
    Pour l'utilisateur,
    If not Application.username = "Toto" then
    mais tu peux aussi vérifier les variables d'environnement, le domaine
    Debug.Print Environ(27)
    'ou l'utilisateur
    Debug.Print Environ(28)
    Pour une boucle sur les cellules à masquer, tu crées un tableaux des cellules
    Vite fait, pas testé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub MasquerUneCelluleEtEmpêcherAffichage()
    Dim tableau
    tableau = array(cells(1, 3).address, cells(12, 4).address)
    If Environ(28) <> "MACHIN" then
        ActiveSheet.Unprotect
        for i = 0 To ubound(tableau)
               If not range(tableau(i)).FormulaHidden Then range(tableau(i)).FormulaHidden = True
               Range(tableau(i)).Font.ColorIndex = 2
        next
        ActiveSheet.Protect
    end If
    End Sub
    Tu dis
    A+

  8. #8
    Membre éclairé Avatar de doringen
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    73
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 73
    Par défaut
    le problème est que l´utilisateur peut entrer sans activer les macros et là, il est libre de te poutrer toutes les cellules qu íl souhaite...
    Dans une longue pratique de paranoia en ce qui concerne mes tableaux en partage sur le réseau, je masque l´onglet concerné en veryhidden et je demande à l´utilisateur de se logger pour que l´onglet apparaisse. Ensuite, il suffit d´associer à chaque nom d´utilisateur les champs auxquels il ne peut pas accéder...
    Mais comme je le disais, cela tient de la grosse paranoia

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    J'ai 2 mn, donc, plus propre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub MasquerUneCelluleEtEmpêcherAffichageC()
    Dim F1 As Worksheet
    Dim Plage
    Set F1 = Worksheets("Feuil1") 'feuille à protéger
    Set Plage = F1.Range("A1:G1,H1:N1,M1:S1")
        If Environ(28) <> "MACHIN" Then
            ActiveSheet.Unprotect
            For Each Cel In Plage
                   If Not Cel.FormulaHidden Then Cel.FormulaHidden = True
                   Cel.Font.ColorIndex = 2
            Next
            ActiveSheet.Protect
        End If
    End Sub
    Testé et tout
    A+

    Meu non, ce n'est pas un pb.
    Pour empêcher le mauvais user de désactiver les macros :
    Au départ, tu masques toutes les feuilles et les verrouilles
    A l'ouverture, dans Auto_Exec, tu les affiches et tu lances ta macro qui teste le User. Epicétou.
    A l'ouverture du fichier, macros désactivées, tout reste masqué.
    Faudra juste lui interdire Ctrl + Pause. Mais là, je me souviens plus si je sais faire
    A+

    Une astuce pour récupérer sans peine les adresses des cellules à "opérer"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim r As Range
      Set r = Application.InputBox("Sélectionner les cellules en appuyant sur la touche ctrl", Type:=8)
      Cells(1, 1).Value = r.Address
    et tu récupères ce qu'il y a dans "A1"
    Juste parce que je te sens réticent
    A+

    Tiens, grâce à Bidou, j'ai retrouvé comment neutraliser les touches d'arrêt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.EnableCancelKey = xlDisabled
    Attends le dernier moment pour le mettre en place : une boucle mal faite et tu n'en sors qu'avec le gestionnaire des tâches...
    A+

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Décembre 2003
    Messages : 52
    Par défaut
    Sans trop vouloir insister , si au final le classeur est en mode partagé les méthodes protect et unprotect ne fonctionneront pas. C'est cruel mais c'est comme ça !

Discussions similaires

  1. [VBA]xl*-Utiliser F1...F12 dans un form
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 40
    Dernier message: 27/01/2006, 11h34
  2. [VBA Excel] Utilisation de Mid(), InStrRev() etc.
    Par annedeblois dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/12/2005, 20h21
  3. VBA/xl97 - Utilisation boîtes dialogs intégrées
    Par ouskel'n'or dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 07/11/2005, 16h39
  4. [vba excel] Utilisation de .borders
    Par steps5ive dans le forum Access
    Réponses: 3
    Dernier message: 22/09/2005, 15h02
  5. [C#] Utilisation d'un exe en réseau
    Par Troopers dans le forum Windows Forms
    Réponses: 4
    Dernier message: 27/01/2005, 18h12

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