Qu'est ce qui cloche dans le code? FOR et IF

djgreg971

XLDnaute Nouveau
Bonjour à tous.
je ne sais plus quel syntaxe essayer, j'ai besoin d'un petit coup de main.
Après avoir décortiqué plusieurs projets sur le forum et le net qui traite des mots de passe et des noms d'utilisateur je suis arrivé à ceci.

Dans la feuille ADMIN, à la colonne A j'ai mis les noms d'utilisateurs et dans la colonne B les MDP.
Il n'y a que 5 lignes.

Le code doit vérifié que les éléments entré dans deux textBox (MDP et Nom) d'un useform sont présent dans la feuille admin et par la suite ouvrir le classeur de l'utilisateur.

Le problème c'est que la condition if est tjs fausse car le else s'exécute toujours. J'ai du mal à comprendre. Pouvez vous jeter un oeuil au code et me dire ce qui cloche s'il vous plait.
MERCI d'avance.

Code:
Dim i As Integer

     For i = 1 To 5
      
      If MDP = Worksheets("ADMIN").Range(("B" & (i))) And Nom = Worksheets("ADMIN").Range(("A" & (i))) Then
      
Dim strFichier As String
Const strRepertoire = "c:\mondossier"
strFichier = Nom
Workbooks.Open (strRepertoire & "\" & strFichier & ".xls")
Else
MsgBox ("Nom d'utilisateur ou Mot de passe Incorect"), vbCritical
End If
Next i
End Sub
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Qu'est ce qui cloche dans le code? FOR et IF

Bonsoir djgreg971 et bienvenu :)

Tu parcours la boucle jusqu'à la fin même si un utilisateur a saisi un nom et MdP corrects. La boucle affiche le message à chaque fois qu'un des cinq couples (Nom, MdP) de la feuille ADMIN ne correspond pas à la saisie de l'utilisateur.

Voir code joint pour un exemple:

Si le nom et le mot de passe sont OK, on ouvre le fichier et on sort de la boucle For i =..Next i.
A la sortie de la boucle, on fait le test If I > 5:
  • si oui (en fait i vaudra 6), c'est que le nom et MdP saisi sont erronés et on affiche le message.
  • si non, cela signifie qu'on est sorti de la boucle avant la fin (i<=5), donc que le nom et Mdp ont été trouvés et on n'affiche aucun message.

VB:
Sub VerifIdent()
Dim i As Integer, Nom As String, MdP As String
Const strRepertoire = "c:\mondossier"

Nom = InputBox("Nom?")
MdP = InputBox("MdP?")

For i = 1 To 5
  If MdP = Worksheets("ADMIN").Range("B" & i) And Nom = Worksheets("ADMIN").Range("A" & i) Then
    Workbooks.Open strRepertoire & "\" & Nom & ".xls"
    Exit For
  End If
Next i
If i > 5 Then MsgBox ("Nom d'utilisateur ou Mot de passe Incorect"), vbCritical
End Sub

nb: joindre un fichier exemple aurait été sympathique.
 
Dernière édition:

djgreg971

XLDnaute Nouveau
Re : Qu'est ce qui cloche dans le code? FOR et IF

Bonsoir et merci beaucoup pour l'accueil.
Effectivement un fichier attaché aurait été plus simple.:eek:
j'ai refais les modifs avec le code que tu m'as donné. mais je n'ai toujours rien.
Mon Classeur qui porte le nom de "toto" ne s'ouvre pas.:confused: :(
 

Pièces jointes

  • test01.xls
    48.5 KB · Affichages: 45
  • test01.xls
    48.5 KB · Affichages: 43
  • test01.xls
    48.5 KB · Affichages: 40

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Qu'est ce qui cloche dans le code? FOR et IF

Bonsoir djgreg971,

[...] j'ai refais les modifs avec le code que tu m'as donné. mais je n'ai toujours rien.
Mon Classeur qui porte le nom de "toto" ne s'ouvre pas [...]

J'ai réussi à le faire fonctionner en supprimant les deux Textbox puis en les recréant(fichier vérolé ?)

J'en ai profité pour fermer le classeur si le nom et le MdP sont corrects et après avoir ouvert le fichier. Si le fichier n'existe pas, on avertit l'utilisateur et on referme aussi le fichier.

Quand on referme le userform en cliquant sur la croix en haut à droite, on affichait le fichier et par conséquent les noms d'utilisateurs et leurs mots de passe étaient visibles. J'en ai profité pour refermer le fichier dans ce cas.
 

Pièces jointes

  • Fermeture classeur v2.xls
    36 KB · Affichages: 12

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 942
Membres
101 849
dernier inscrit
florentMIG