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 :

Solution alternative partage [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 533
    Par défaut Solution alternative partage
    Bonjour,

    Après avoir tenté par tous les moyens d'associer partage et protection je rend les armes. J'essaie maintenant de créer une macro et j'ai besoin d'un petit peu d'aide...

    J'ai deux groupes de cellule :
    - Labo
    - Prod

    J'aimerai en fonction de l'utilisateur de session Windows que je récupère via la fonction OSUserName :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function OSUserName() As String 'extrait d'un code trouvé sur : http://forum.rue-montgallet.com/ruemontgallet/Programmation/vb-vba/resolu-recuperation-windows-sujet_22341_1.htm
     
    Dim Buffer As String * 256
    Dim BuffLen As Long
    BuffLen = 256
        If GetUserName(Buffer, BuffLen) Then _
            OSUserName = Left(Buffer, BuffLen - 1)
    End Function
    Si le UserName = "STAG3"
    Si l'utilisateur sélectionne une cellule dans la zone Labo déplacer la sélection en dehors de la zone ...
    Si le UserName = "Autres"
    Si l'utilisateur sélectionne une cellule dans la zone Prod déplacer la sélection en dehors de la zone...

    Un peu comme ouskel'n'or dans cette discussion.

    Code ouskel'n'or :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim Plage()
    Plage = Array("$C$14", "$D$13", "$E$12", "$F$11", "$G$15", "$F$19") 'cellules interdites
        For i = 0 To UBound(Plage)
            If Target.Address = Plage(i) Then
                Cells(Target.Row + 1, Target.Column).Select
                Exit For
            End If
        Next
    End Sub
    Cependant, je débute en vba et j'ai du mal à écrire ce code, j'ai commencé et fais différents tests mais j'ai du mal ...

    J'ai testé un truc dans le genre :

    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
    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
     
    Dim Plage As Range
    Dim Cel As Range
     
    'Si utilisateur est STAG3 il ne doit pas accéder au groupe de cellules Labo ...
    If OSUserName = "STAG3" Then
        If Not Intersect(Target, Range("Labo")) Is Nothing Then
            For Each Cel In Target
                If Not Intersect(Cel, Range("Labo")) Is Nothing Then
                        Set Plage = Cel.Offset(1, 0)
                End If
            Next Cel
        End If
    End If
    End Sub
    Merci d'avance

    Oh et meilleurs voeux à tous

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2010
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 533
    Par défaut
    Je me suis un peu compliqué la vie dans les posts précédents... je n'étais pas loin mais bon voici le code correct :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
     
    Dim Plage As Range
    Dim Cel As Range
     
    'Si utilisateur est STAG3 il ne doit pas accéder au groupe de cellules Labo ...
    If OSUserName = "STAG3" Then
        If Not Intersect(Target, Range("Labo")) Is Nothing Then
            Selection.Offset(0, 1).Select
        End If
    End If
    End Sub
    Je ne supprime pas le post cela peut peut être aidé ceux qui ont des problèmes avec partage et protection

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/05/2010, 09h27
  2. Solution alternative de recherche de fichier windows
    Par Anevada dans le forum C++Builder
    Réponses: 2
    Dernier message: 02/11/2009, 09h29
  3. [JavaFx] Avantage / Inconvénients (/solutions alternatives ?)
    Par Ar3s. dans le forum Eclipse Platform
    Réponses: 0
    Dernier message: 28/07/2009, 12h11
  4. Réponses: 6
    Dernier message: 11/03/2009, 11h26
  5. Quelle solution pour partager des données entre Linux ?
    Par herzleid dans le forum Administration système
    Réponses: 5
    Dernier message: 03/04/2006, 16h19

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