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 :

Explication code changement de mot de passe [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Vba14
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2019
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2019
    Messages : 440
    Par défaut Explication code changement de mot de passe
    Bonjour à tous,

    J'ai trouvé un code sur le forum que je souhaite adapter à mes besoins. Cependant il y a des lignes que je ne comprends pas, auriez-vous la gentillesse de me les expliquer s'il vous plait ?
    Je vous en remercie par avance

    Voici les lignes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        With Worksheets("paramétrage"): Set Plage = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With -----> Je ne comprends pas Cells(2,1)
     
        Set Cel = Plage.Find(ComboUtil.Text, , xlValues, xlWhole) -----> Je ne comprends pas cette ligne
     
        If Cel Is Nothing Then MsgBox "Utilisateur incorrect !": Exit Sub
     
        If Cel.Offset(, 1).Value = TxtPasse.Text Then ------> Je ne comprends pas Cel.Offset(, 1)
            Cel.Offset(, 1).Value = TxtNewMP.Text '<--- remplacement
    Voici le code complet :
    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
     
    Private Sub BtnOK_Click() 
        'Noms des 4 contrôles :
        'ComboUtil
        'TxtPasse    
        'TxtNewMP
        'TxtConfNewMP
     
    Dim Plage As Range
        Dim Cel As Range
     
        If ComboUtil.Text = "" Then MsgBox "Saisir un utilisateur !": Exit Sub
        If TxtPasse.Text = "" Then MsgBox "Saisir votre mot de passe !": Exit Sub
        If TxtNewMP.Text = "" Then MsgBox "Saisir votre nouveau mot de passe  !": Exit Sub
        If TxtConfNewMP <> TxtNewMP Then MsgBox "Les mots de passe sont différents !": Exit Sub
     
        With Worksheets("paramétrage"): Set Plage = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With
     
        Set Cel = Plage.Find(ComboUtil.Text, , xlValues, xlWhole)
     
        If Cel Is Nothing Then MsgBox "Utilisateur incorrect !": Exit Sub
     
        If Cel.Offset(, 1).Value = TxtPasse.Text Then
            Cel.Offset(, 1).Value = TxtNewMP.Text '<--- remplacement
     
        End If 
    End Sub

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    With Worksheets("paramétrage")
            Set Plage = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)) ' on prend la plage de A2 jusqu'à la dernière cellule remplie en colonne A
        End With
     
        Set Cel = Plage.Find(ComboUtil.Text, , xlValues, xlWhole) ' on cherche dans la plage la cellule contenant le nom de l'utilisateur
     
        If Cel Is Nothing Then                          ' si on n'a pas trouvé l'utilisateur
            MsgBox "Utilisateur incorrect !"
            Exit Sub
        End If
     
        If Cel.Offset(, 1).Value = TxtPasse.Text Then Cel.Offset(, 1).Value = TxtNewMP.Text ' si on a trouvé l'utilisateur et que le mot de passe sur la colonne à côté est bien l'ancien, on le remplace par le nouveau

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Un conseil : quand tu ne comprends pas une fonction, une instruction, une propriété, etc. dans un code VBA, pointe sur ce mot et appuie sur la touche F1 pour accéder à l'aide le concernant.

    Perso, dans ce code, je n'approuve pas l'utilisation à outrance des séparateurs d'instructions ":" qui complique inutilement le code.

    Citation Envoyé par Vba14 Voir le message
    Je ne comprends pas Cells(2,1)
    C'est le début (coin haut gauche) de la plage Range concernée.
    https://docs.microsoft.com/fr-fr/off....range(object)

    Set Cel = Plage.Find(ComboUtil.Text, , xlValues, xlWhole)
    Find est une fonction de recherche sur une plage Range.
    https://msdn.microsoft.com/fr-fr/lib...6(v=office.15)

    Je ne comprends pas Cel.Offset(, 1)
    Offset sert à faire un décalage relatif de référence de cellule.
    https://msdn.microsoft.com/fr-fr/lib...0(v=office.15)

  4. #4
    Membre éclairé Avatar de Vba14
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2019
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2019
    Messages : 440
    Par défaut
    Bonjour joe.levrai, Bonjour Menhir,

    Menhir :
    Un conseil : quand tu ne comprends pas une fonction, une instruction, une propriété, etc. dans un code VBA, pointe sur ce mot et appuie sur la touche F1 pour accéder à l'aide le concernant.
    Tu as parfaitement raison, je ne pas ce réflexe, ce qui est idiot. Merci pour tes explications et les liens que tu m'as fournis.

    joe.levrai :
    Merci également pour tes explications, je devrais pouvoir m'en sortir avec tout ça.

    Je poursuis mon encodage.
    Encore merci à vous deux.
    Amicalement
    René

  5. #5
    Membre éclairé Avatar de Vba14
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2019
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2019
    Messages : 440
    Par défaut
    Voici mon code tel qu'il est dans mon fichier. Le remplacement du mot de passe se fait correctement.
    Par contre j'ai un soucis, il ne me mets pas de message si le mot de passe n'est pas bon. Il ne le remplace pas certes, mais pas de message d'erreur.
    J'ai dû oublier quelque chose....

    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
     
    Private Sub BtnOK_Click() 
        'Noms des 5 contrôles :
        'ComboUtil
        'TxtPasse    
        'TxtNewMP
        'TxtConfNewMP
     
    Dim Plage As Range
        Dim Cel As Range
     
        If ComboUtil.Text = "" Then MsgBox "Saisir un utilisateur !": Exit Sub
        If TxtPasse.Text = "" Then MsgBox "Saisir votre mot de passe !": Exit Sub
        If TxtNewMP.Text = "" Then MsgBox "Saisir votre nouveau mot de passe  !": Exit Sub
        If TxtConfNewMP <> TxtNewMP Then MsgBox "Les mots de passe sont différents !": Exit Sub
     
        With Worksheets("paramétrage"): Set Plage = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With
     
        Set Cel = Plage.Find(ComboUtil.Text, , xlValues, xlWhole)
     
        If Cel Is Nothing Then MsgBox "Utilisateur incorrect !": Exit Sub
     
        If Cel.Offset(, 1).Value = TxtPasse.Text Then
            Cel.Offset(, 1).Value = TxtNewMP.Text '<--- remplacement
     
        End If 
    End Sub

  6. #6
    Membre éclairé Avatar de Vba14
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2019
    Messages
    440
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2019
    Messages : 440
    Par défaut
    Re,

    J'ai trouvé mon oublie :
    Voici le code avec la ligne 24 ajoutée
    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
     
     
    Private Sub ComChangeMP_Click()
    'Noms des 5 contrôles :
        'ComboUtil
        'TxtMpasse
        'TxtNewMP
        'TxtConfNewMP
     
    Dim Plage As Range
        Dim Cel As Range
     
        If ComboUtil.Text = "" Then MsgBox "Saisir un utilisateur !": Exit Sub
        If TxtMpasse.Text = "" Then MsgBox "Saisir votre mot de passe !": Exit Sub
        If TxtNewMP.Text = "" Then MsgBox "Saisir votre nouveau mot de passe  !": Exit Sub
        If TxtConfNewMP <> TxtNewMP Then MsgBox "Les mots de passe sont différents !": Exit Sub
     
        With Worksheets("paramétrage"): Set Plage = .Range(.Cells(2, 1), .Cells(.Rows.Count, 1).End(xlUp)): End With
     
        Set Cel = Plage.Find(ComboUtil.Text, , xlValues, xlWhole)
     
        If Cel Is Nothing Then MsgBox "Utilisateur incorrect !": Exit Sub
     
        If Cel.Offset(, 1).Value <> TxtMpasse Then MsgBox "Le mot de passe n'est pas bon, recommencez !": Exit Sub
     
        If Cel.Offset(, 1).Value = TxtMpasse.Text Then
            Cel.Offset(, 1).Value = TxtNewMP.Text '<--- remplacement
     
        End If
        Me.ComboUtil = ""
        Me.TxtMpasse = ""
        Me.TxtNewMP = ""
        Me.TxtConfNewMP = ""
        Unload Me
     
    End Sub
    Merci à tous pour votre participation.
    Amicalement

  7. #7
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Je suppose que la feuille "paramétrage" qui contient les mots de passe est cachée, bloquée, protégée, etc., non ?

    Juste histoire de faire un petit test amusant pour vérifier le niveau de protection de ton processus, essaye la petite manipulation suivante.

    Dans n'importe quelle autre feuille de ton fichier (on pourrait aussi le faire dans un autre fichier), tape dans une cellule la formule :
    Copie cette cellule dans la cellule de droite.
    Copie ces deux cellules vers le bas autant que nécessaire.

    Que vois-tu apparaitre dans ces cellules...
    Amusant, non ?

    Et cette manipulation est à la portée de n'importe qui.

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

Discussions similaires

  1. [AC-2010] Code VBA changement de mot de passe
    Par Pajam dans le forum VBA Access
    Réponses: 6
    Dernier message: 13/04/2015, 10h47
  2. [Interbase] Changement de mot de Passe
    Par touhami dans le forum Bases de données
    Réponses: 2
    Dernier message: 04/12/2005, 16h37
  3. MySQL encrypt et changement de mot de passe
    Par Michaël dans le forum Requêtes
    Réponses: 6
    Dernier message: 27/11/2005, 17h37
  4. Probleme avec changement du mot de passe utilisateur
    Par Davenico dans le forum Outils
    Réponses: 2
    Dernier message: 19/12/2003, 14h42

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