Ouvrir un txt pour chercher une valeur et

Bonjour!

J'ai un petit problème de conception/programmation.

J'ai un fichier, ici "ListeNIP.txt" qui est crypter à l'aide d'un petit algorithme bien simple.

À l'aide d'un bouton sur ma page excel, je demande à l'utilisateur d'entrer son NIP pour vérifier qu'il a accès à l'aide d'une InputBox. La macro doit aller comparer le NIP entré avec une liste "Utilisateur,NIP" déjà entrés dans le fichier txt. Lorsqu'il le trouve, il envoie une MsgBox pour lui demander si c'est bien l'utilisateur qui est devant l'écran (confirmation).

En somme, le fichier ListeNIP.txt ressemble à:

Utilisateur1, nip1
Utilisateur2, nip2
Utilisateur3, nip3
Utilisateur4, nip4
Utilisateur5, nip5
Utilisateur6, nip6
Utilisateur7, nip7

Voici le code que j'ai entré...

Sub CheckNIP()

Dim FindVar As Variant
Dim FilePath As String
Dim Username As String, Password As Integer

FilePath = "ListeNIP.txt"
FindVar = InputBox("Veuillez entrer votre NIP:", "NIP")     'Search value
Decrypter

Open FilePath For Input As #1

Do Until EOF(1)
Input #1, Username, Password
'Ici j'indique quoi pour qui recherche
'la variable FindVar dans la colonne "Password"
'et qu'il retourne la valeur de Username
'attachée??
'Merci!
Close #1

Crypter

End Sub

J'ai besoin d'une lumière en VBA! MercI!

Voici ma proposition :

Sub test()
Dim FindVar As Variant
Dim FilePath As String
Dim Username As String, Password As String
Dim Trouve As Boolean
FilePath = "c:\ListeNIP.txt"
FindVar = InputBox("Veuillez entrer votre NIP:", "NIP")     'Search value

Open FilePath For Input As #1

 Do Until EOF(1) Or Trouve
  Input #1, Username, Password
  If Password = FindVar Then Trouve = True
 Loop

Close #1

MsgBox "Nom de l'utilisateur : " & Username

End Sub

Ouah! Je ne savais pas que je pouvais intégrer "Or" !!!

Un grand merci!

Bon, j'ai d'autres problèmes. J'essai de gérer les différents événements que pourrais survenir à l'utilisteur

Voici mon code:

On Error GoTo Error

Dim FindVar As Variant
Dim FilePath As String
Dim Username As String, Password As String
Dim Trouve As Boolean
Dim i As Integer

NIP:
Decrypter
FilePath = "ListeNIP.txt"
Open FilePath For Input As #1
FindVar = ""
Username = ""
Password = ""

FindVar = InputBox("Veuillez entrer votre NIP:", "NIP")     'Search value

 Do Until EOF(1) Or Trouve
  Input #1, Username, Password
  If Password = FindVar Then Trouve = True
 Loop

Close #1

Crypter

i = MsgBox("Êtes-vous bien " & Username, vbYesNoCancel + vbQuestion, "Confirmation")

If i = 6 Then
    MsgBox "Votre signature a été apposée dans le rapport", vbInformation, "Terminé"
    Crypter
    'Instruction pour ajouter l'image
    Exit sub
        ElseIf i = 7 Then
        Crypter
            GoTo NIP
Else
    MsgBox "Opération annulée"
    Crypter
    Exit Sub
End If

Exit Sub

Error:
ERREUR

End Sub

Ce qui se produit:

  • L'utilisateur entre son nip
  • La boîte de confirmation avec son nom s'affiche. Il peut appuyer sur Oui, Non ou Annuler.
  • Lorsqu'il appuie sur non, je veux qu'il retourne à l'input box.
  • Il entre de nouveau son NIP (nip différent de la première fois.
  • La boîte de confirmation s'affiche à nouveau mais c'était comme s'il avait garder en mémoire le premier NIP.

J'ai de la misère à figurer comment VBA gère les variables... quand il les vident etc. De plus, je voudrais que lorsqu'il parcourt tout le document et qu'il n'a pas trouvé le NIP, la boîte InputBox revienne pour choisir à nouveau son NIP.

Merci!

-- Mar Juin 07, 2011 5:39 pm --

Up! Quelqu'un a quelque chose à proposer?

Bonjour,

Peut-être comme cela :

Sub sécurité()
    Dim FindVar As Variant
    Dim FilePath As String
    Dim Username As String, Password As String
    Dim Trouve As Boolean, Sortie As Boolean
    Dim i As Integer
    FilePath = "c:\ListeNIP.txt"

NIP:
    Decrypter
    FindVar = ""
    Username = ""
    Password = ""
    Sortie = False
    Do
     FindVar = InputBox("Veuillez entrer votre NIP:", "NIP")     'Search value
     If FindVar = "" Then
       Sortie = True
      Else
       Open FilePath For Input As #1
        Trouve = False
        Do Until EOF(1) Or Trouve
         Input #1, Username, Password
         If Password = FindVar Then Trouve = True
        Loop
       Close #1
     End If
    Loop Until Trouve Or Sortie
    If Sortie Then
      i = 2
     Else
      Crypter
      i = MsgBox("Êtes-vous bien " & Username, vbYesNoCancel + vbQuestion, "Confirmation")
    End If
    Select Case i
     Case 6:
           MsgBox "Votre signature a été apposée dans le rapport", vbInformation, "Terminé"
           Crypter
          'Instruction pour ajouter l'image
           Exit Sub

     Case 7:
           Crypter
           GoTo NIP

     Case Else:
           MsgBox "Opération annulée"
           Crypter
           Exit Sub

    End Select

Error:
    erreur

End Sub
Rechercher des sujets similaires à "ouvrir txt chercher valeur"