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 :

Reservation vehicule par Boutton Macro Lock et macro Unlock sur la ligne spécifiée


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2017
    Messages : 17
    Par défaut Reservation vehicule par Boutton Macro Lock et macro Unlock sur la ligne spécifiée
    Bonjour

    Je suis novice mais j'avance même si je trébuche...

    Je suis sur le point de finaliser mon fichier de réservation de véhicule de l'association. J'ai utilisé deux boutons qui appellent chacun une fonction spécifique (lock et Unlock) qui se base sur le groupe qui fait la réservation dans la colonne H5 par l'attribution d'un mot de passe propre à ce dit groupe.

    Le bouton VALIDATION RESA 1 verrouille la ligne B5 à H5 par un mot de passe attribué en fonction de la valeur de la cellule en H5 : le groupe SEES AC1 fait la réservation, son MDP est 7273 ( lui seul le connait)

    Le bouton CORRIGER OU LIBERER LA RESA 1 déverrouille par le même mot de passe la ligne B5 à H5.

    En fait chaque Groupe à un mot de passe attribué pour bloquer ou débloquer la réservation. Mais j'ai 14 mdp a attribué car j'ai 14 groupes. Et je dois le faire pour 8 véhicule qui peuvent donner 2 réservations par jour soit au total 16.

    Il faut je fasse 2 macros ( verrouillage / déverrouillage) pour chaque groupe pour chaque vehicule soit 16 lignes ex B5:H5 , B7:H7, etc....

    N'y aurait-il pas un raccourci VBA pour faciliter la saisie ?

    RESERVATION VEHICULE ASSOCIATION.xlsmRESERVATION VEHICULE ASSOCIATION.xlsm
    MERCI POUR VOTRE INTERET ET AIDES

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Bonjour.

    Je n'ai pas regardé ton code (pas le droit aux téléchargements) mais à priori tu dois pouvoir passer les cellules à protéger/déprotéger en paramètre.

    Personnellement je ferai probablement une feuille où j'indiquerai pour chaque groupe et chaque voiture les cellules concernées, ou mieux je me débrouillerai pour pouvoir les déduire de la position des cellules dans la feuille de saisie ou du numéro du groupe.
    Mais supposons que tu y aille avec la feuille de paramétrage, ici une idée :
    Groupe Mode De Passe Addresse Cellule Voiture
    Groupe 1 123 B5:H5;B6:H6
    ...
    Groupe 14 456 B19:H19;B20:H20

    Quand l'utilisateur.trice appuit sur le bouton, tu vas voir dans la feuille si le mot de passe correspond et tu récupères l'adresse des zones concernées et tu les passes à ta fonction de verrouillage.

    Cela pourrait être un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public sub VerrouilleDeverrouille(pstrAdresseZone as string, pblnVerrouille as bolean)
     
      dim rng as range: set rng=thisworkbook.range(pstrAdresseZone)
     
      if pblnVerrouille  then
         'code pour verrouiller rng
      else
         'Code pour déverouiller rng
      end if
     
      set rng=nothing
    end if
    Évidement il faut que ta feuille qui contient les mots de passe soit rendue invisible, en la définissant VerryHidden en production et si tu as vraiment besoin de sécurité que tes mots de passe soient codés et au minimum que ton code VBA soit protégé par un mot de passe. Attention de communiquer ce mot de passe à une personne de confiance afin de ne pas être le seul dépositaire de cette information.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je n'ouvre pas les classeurs proposés au téléchargement

    En VBA il est parfaitement possible d'écrire dans des cellules d'une feuille protégée sans passer par un Lock/Unlock en utilisant la propriété UserInterfaceOnly

    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub t()
      Dim sht As Worksheet
      Set sht = ThisWorkbook.Worksheets("Data")
      With sht
      .Protect UserInterfaceOnly:=True, Password:="Toto"
      .Range("I2").Value = "Mon Test"
      End With
      Set sht = Nothing
    End Sub
    Tutoriel
    A lire éventuellement pour en savoir plus sur les méthodes et propriétés d'une feuille : Description de l'objet Feuille de calcul dans Excel
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #4
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2017
    Messages : 17
    Par défaut Ci-joint le code VBA
    Merci...et excusez moi de ce retard...rentrée scolaire.

    Pour palier au téléchargement je vous propose le code VBA suivant et ma question : existe-t-il un codage pour simplifier la procédure LOCK et UNLOCK en fonction du nom du groupe qui est selectionnez dans la cellule H5.

    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
    Sub Macro1() 
     
        Select Case Range("H5")
            Case Is = "SEES ACC 1"
     
                Call V1P "appel des macros en fonction de la valeur de la cellule H5 = groupe "
     
    Case Is = "SIPFP "
                Call V2P
     
     
         ' "il faut que je fasse cela pour les 9 services" 
     
     
        Case Else
            MsgBox "Required account not found"
        End Select
     
    End Sub
    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 V1P() ' " "Boutton LOCK" "il faut que je fasse cela pour les 9 services"
     
        Dim PassProtect As Variant
    Range("B5:H5").Select
     
        If pblnEnteredPassword Then GoTo DoStuff
     
        PassProtect = InputBox(Prompt:="Validez votre RESA par mot de passe" & vbCrLf & "(MDP attribué à votre groupe)", Title:="Control Panel")
     
          If PassProtect = vbNullString Then Exit Sub
     
        If PassProtect = "7273" Then
            pblnEnteredPassword = True
            GoTo DoStuff
        Else
            MsgBox Prompt:="Mot de passe inccorect. Essayez à nouveau", Buttons:=vbOKOnly
            Exit Sub
        End If
     
    DoStuff:
        Selection.Locked = True
    Selection.FormulaHidden = True
    ActiveSheet.Protect Password:="7273"
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Macro2() 
     
        Select Case Range("H5")
            Case Is = "SEES ACC 1"
                Call V1UNP
            Case Is = "SIPFP "
                Call V2UNP
     
        Case Else
            MsgBox "Required account not found"
        End Select
     
    End Sub
    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
    Sub V1UNP() ' "boutton UNLOCK" "il faut que je fasse cela pour les 9 services"
     
        Dim PassProtect As Variant
    Range("B5:H5").Select
     
        If pblnEnteredPassword Then GoTo DoStuff
     
        PassProtect = InputBox(Prompt:="Validez votre RESA par mot de passe" & vbCrLf & "(MDP attribué à votre groupe)", Title:="Control Panel")
     
          If PassProtect = vbNullString Then Exit Sub
     
        If PassProtect = "7273" Then
            pblnEnteredPassword = True
            GoTo DoStuff
        Else
            MsgBox Prompt:="Mot de passe inccorect. Essayez à nouveau.", Buttons:=vbOKOnly
            Exit Sub
        End If
     
    DoStuff:
    ActiveSheet.Unprotect Password:="7273"
    End Sub

  5. #5
    Membre averti
    Homme Profil pro
    Enseignant
    Inscrit en
    Mars 2017
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2017
    Messages : 17
    Par défaut EXEMPLE à télécharger ???
    Citation Envoyé par marot_r Voir le message
    Bonjour.

    Je n'ai pas regardé ton code (pas le droit aux téléchargements) mais à priori tu dois pouvoir passer les cellules à protéger/déprotéger en paramètre.

    Personnellement je ferai probablement une feuille où j'indiquerai pour chaque groupe et chaque voiture les cellules concernées, ou mieux je me débrouillerai pour pouvoir les déduire de la position des cellules dans la feuille de saisie ou du numéro du groupe.
    Mais supposons que tu y aille avec la feuille de paramétrage, ici une idée :
    Groupe Mode De Passe Addresse Cellule Voiture
    Groupe 1 123 B5:H5;B6:H6
    ...
    Groupe 14 456 B19:H19;B20:H20

    Quand l'utilisateur.trice appuit sur le bouton, tu vas voir dans la feuille si le mot de passe correspond et tu récupères l'adresse des zones concernées et tu les passes à ta fonction de verrouillage.

    Cela pourrait être un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public sub VerrouilleDeverrouille(pstrAdresseZone as string, pblnVerrouille as bolean)
     
      dim rng as range: set rng=thisworkbook.range(pstrAdresseZone)
     
      if pblnVerrouille  then
         'code pour verrouiller rng
      else
         'Code pour déverouiller rng
      end if
     
      set rng=nothing
    end if
    Évidement il faut que ta feuille qui contient les mots de passe soit rendue invisible, en la définissant VerryHidden en production et si tu as vraiment besoin de sécurité que tes mots de passe soient codés et au minimum que ton code VBA soit protégé par un mot de passe. Attention de communiquer ce mot de passe à une personne de confiance afin de ne pas être le seul dépositaire de cette information.

    A+

    Bonjour

    Pourriez-vous m'envoyer un exemple ?

    Cordialement.

Discussions similaires

  1. [Google Sheets] macro: coller sur première ligne vide
    Par gege404 dans le forum APIs Google
    Réponses: 4
    Dernier message: 31/08/2019, 10h18
  2. [XL-2007] Macro Copier sur premiere ligne vide
    Par Kernoz dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 04/02/2010, 14h24
  3. Une macro à faire sur une ligne précise
    Par JPDU92 dans le forum VBA Word
    Réponses: 5
    Dernier message: 31/01/2008, 12h13
  4. Réponses: 3
    Dernier message: 27/01/2006, 15h48
  5. [Excel] Utiliser une application externe par une macro
    Par thierry2.dlp dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/08/2005, 22h07

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