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 :

Protection et lancement de macros


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
    Juin 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 15
    Par défaut Protection et lancement de macros
    Bonjour,

    j'aimerais savoir s'il est possible :

    1. d'une part que le lancement d'une macro nécessite la saisie d'un mot de passe

    2. d'autre part qu'une macro se lance automatiquement à l'ouverture d'un fichier

    J'ai une base de données avec des macros associées à des objets sur lesquels l'utilisateur clic, j'aimerais que certaines macros ne puisse être utiliser que par des managers d'où l'idée de demander un mot de passe lors avant l'exécution de la macro.

    je précise que je ne connais rien au langage VBA, si vous pouviez m'indiquer avec précision les manipulations et les codes à insérer.

    Par avance merci.

  2. #2
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    Par défaut bonsoir Oliv420, le forum,
    Oui et Oui...

    Exemple de macro nécessitant un mot de passe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub MacroTraitementAdministrateur
       '--- Code à ajouter à toutes les macro existantes
        dim R as string
        R = InputBox ("Votre code d'accès administrateur SVP", "Saisie mot du passe")
        if R<> "BonCode" then Exit Sub           'Ici le mote de passe est BonCode
       '--- Fin du code à ajouter
     
       'Code normal existant
     
    End Sub
    A force, c'est très pénible pour l'administrateur.


    Pour qu'une macro s'éxécute automatiquement, il faut qu'elle se trouve dans "ThisWorkbook" et qu'elle se nomme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_Open()
           'Ici le code à lancer au démarrage
    End Sub
    Attention, il faut que les macro-commandes soient autorisées au démarrage sinon aucunes macro.

    Pour autoriser une macro, il est préférable de demander (INPUTBOX) au démarrage le mot de passe dans "Workbook_Open" puis de placer le jeton (autorisation) dans une variable public. Il suffit de faire le test dans chaque macro. Mais chaque utilisateur (surtout administrateur) doit refermer le fichier.

    ESVBA

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Par défaut
    Tu peux aussi récupérer le nom de l'utilisateur courant :
    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
    Public Declare Function GetUserName Lib "advapi32.dll" _
    Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
     
     
    Sub info()
        MsgBox ReturnDommainUserName & " - " & ReturnUserName
    End Sub
     
    Function ReturnDommainUserName() As String
    ' Récupération du User Name
    Dim rString As String * 255, sLen As Long, tString As String
        tString = ""
        On Error Resume Next
        sLen = GetUserName(rString, 255)
        sLen = InStr(1, rString, Chr(0))
        If sLen > 0 Then
            tString = Left(rString, sLen - 1)
        Else
            tString = rString
        End If
        On Error GoTo 0
        ReturnDommainUserName = UCase(Trim(tString))
    End Function
     
    Function ReturnUserName() As String
    ' Récupération de l'application UserName
        ReturnUserName = Application.UserName
    End Function
    La suite dépend de la configuration du système informatique

    PPz

  4. #4
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    Par défaut
    bonjour ppz78,

    je précise à OLIV420 se présentant comme un néophyte en VBA que ta solution est plus performante. Mais qu'il faut au minimum un compte Windows pour Administrateur et Autres utilisateurs.

    De plus, il faut obliger la fermeture du compte au lancement de l'économiseur d'écran. Option que l'administrateur peut changer (cas limité dans le cas d'une écriture directe de la clé dans le registre lors de l'identification de l'administrateur)

    Le fichier est sur réseau ? Il y a encore des utilisations mono compte sur de vieilles machines.


    ESVBA

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Par défaut
    OK

    La solution que je propose est destinée aux grosses structures.
    Dans ma boite il y a plus de 3000 utilisateurs potentiels !!!

    A+

  6. #6
    Membre averti
    Inscrit en
    Juin 2010
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 15
    Par défaut
    Bonjour,

    merci pour vos réponses, j'ai testé les exmples donnés par ESVBA qui me conviennent.

    En effet le fichier est en réseau et utilise les fonctions de partage.

    Par contre j'ai un autre soucis avec une autre macro. Je vous explique, le fichier contient quatre feuilles, les informations renseignées sur la première sont reprises dans les autres. Il s'agit de dossier client. Je voudrais créer une macro pour supprimer un dossier client. Mon idée était de se placer sur le nom du dossier dans la première feuille dans la colonne A et de lancer la macro qui suprimait la ligne sélectionnée et les mêmes numéros de ligne sur les 3 autres feuilles. j'ai créé la macro suivante mais ça ne fonctionne pas, pouvez cous m'aider? merci:

    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
    Sub suppressionligne()
    '
    ' suppressionligne Macro
    '
     
    '
        ActiveCell.Rows("1:1").EntireRow.Select
        Selection.Delete Shift:=xlUp
        Sheets("Feuille 1").Select
        ActiveCell.Offset(-15, 0).Rows("1:1").EntireRow.Select
        ActiveCell.Offset(-15, -1).Range("A1").Activate
        Selection.Delete Shift:=xlUp
        Sheets("Feuille 2").Select
        ActiveCell.Offset(4, 0).Rows("1:1").EntireRow.Select
        Selection.Delete Shift:=xlUp
        Sheets("feuille 3").Select
        ActiveCell.Offset(4, 0).Rows("1:1").EntireRow.Select
        Selection.Delete Shift:=xlUp
        Sheets("feuille 4").Select
        ActiveCell.Rows("1:1").EntireRow.Select
        Selection.Delete Shift:=xlUp
        Sheets("Feuille 1").Select
        ActiveCell.Offset(-1, 0).Range("A1").Select
    End Sub

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    592
    Détails du profil
    Informations personnelles :
    Âge : 75
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 592
    Par défaut
    Bonsoir,

    Comme il s'agit d'une autre question, il est préférable d'ouvrir un autre fil de discussion.

    A+

Discussions similaires

  1. [Jacob / Excel] Lancement de macros sous Excel
    Par Sygrael dans le forum Documents
    Réponses: 3
    Dernier message: 13/07/2015, 16h55
  2. Lancement accéléré macro pas à pas F8
    Par Djohn dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/12/2007, 10h39
  3. [VBA-Word] lancement de macro à la fermeture de fichier
    Par perophron dans le forum VBA Word
    Réponses: 2
    Dernier message: 22/06/2007, 15h32
  4. lancement de macro dans excel
    Par jm_force dans le forum Access
    Réponses: 2
    Dernier message: 24/07/2006, 17h27
  5. [VBA-E]Lancement de macro à l'ouverture du fichier
    Par bastien62200 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/02/2006, 23h20

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