Erreur d'exécution 91 pour une unique occurence

Bonjour à tous,

Dans le cadre d'un projet VBA, je demande par userform un Nom, puis un code personnel. Voici mon code :

Private Sub OKID_Click()
If Professeur.Value <> "" Then          'si la Combobox1 n'est pas vide, alors on continue la procédure
     Else                               'sinon
MsgBox "Veuillez renseigner votre identifiant (nom et prénom)"   'affichage de ce Msgbox
     Exit Sub                           'on sort de la procédure, donc on inscrit rien
     End If                             'fin de la condition
     If Code.Value <> "" Then
     Else
MsgBox "Veuillez renseigner votre Code personnel"
     Exit Sub
     End If
Dim Plage As Range
Dim Cel As Range
       'la plage est définie en colonne B de la feuille "Listes" à partir de B2
   With Worksheets("Listes"): Set Plage = .Range(.Cells(2, 2), .Cells(.Rows.Count, 1).End(xlUp)): End With

    'effectue la recherche exacte
   Set Cel = Plage.Find(Professeur.Text, , xlValues, xlWhole)

    'si pas trouvé, message et fin
   'If Cel Is Nothing Then MsgBox "Identifiant mal orthographié ou inexistant !", vbExclamation: Exit Sub

    'si trouvé mais que le code situé en colonne B sur la même ligne est faux, message et fin
   If Cel.Offset(, 1).Value <> Code.Text Then
   MsgBox "Le code saisi ne correspond pas à l'identifiant !": Exit Sub
   End If
   If Cel.Offset(0, 1).Value = Code.Text Then
    Données.Label8.Caption = Professeur.Text
    Données.Show
   End If
End Sub

Seulement, selon la liste des noms et des codes répertoriée dans une feuille excel, ça fonctionne pour toutes les occurrences sauf une seule malgré qu'ils soient bien renseignés. Quelqu'un pourrait-il m'expliquer pourquoi, s'il vous plaît ? Je reçois un message : "Erreur dexécution 91 variable objet ou variable de bloc with non définie".

Merci.

Xav.

Bonjour,,

à la simple lecture et sans fichier exemple...;

quand on écrit un IF on fait "Enter" et on insère ensuite les lignes, idem pour les autre type de boucles comme ton "with" orphelin

P.

Bonjour,

très probablement il ne trouve pas le nom demandé. vérifie bien le contenu de tes cellules et enlève le commentaire dans cette instruction ce qui devrait confirmer ce que je pense.

'If Cel Is Nothing Then MsgBox "Identifiant mal orthographié ou inexistant !", vbExclamation: Exit Sub

Salut Patrick,

Le With a bien un end with.

With Worksheets("Listes"): Set Plage = .Range(.Cells(2, 2), .Cells(.Rows.Count, 1).End(xlUp)): End With

Salut h2so4,

J'ai enlevé le commentaire inutile, en effet.

Et dans excel la liste qui est la source du combobox a : "=DECALER(Listes!$B$2;0;0;NBVAL(Listes!$B:$B)-1)" comme référence, et les noms sont bien dans la feuille "Listes" à partir de la case B2 pour les noms et C2 pour les codes.

bonjour,

et as-tu le message "identifiant mal ortographié ou inexistant" ?

sinon mets-nous ton fichier.

Je joins le projet pour toute fin utile :

bonjour,

1) code vba protégé par mot de passe

2) quelle est la séquence des actions à faire pour obtenir le message d'erreur ?

Salut h2so4,

J'ai supprimé le mot de passe.

Merci.

Bonsoir,

With Worksheets("Listes"): Set Plage = .Range(.Cells(2, 2), .Cells(.Rows.Count, 1).End(xlUp)): End With

Plage = A2:B10 avec ce code... !

Cordialement.

Salut Mferrand,

Plage = A2:B10 avec ce code... !

C'est effectivement cela le problème ! Comment je rectifie cela pour que plage soit la colonne entière B et exécute pour code une recherche dans la colonne C ?

Je ne suis pas encore assez exercé au code dur VBA.

Merci.

Bonsoir,

Quelqu'un pourrait-il m'aider à rectifier ce code

Dim Plage As Range
Dim Cel As Range
       'la plage est définie en colonne B de la feuille "Listes" à partir de B2
   With Worksheets("Listes"): Set Plage = .Range(.Cells(2, 2), .Cells(.Rows.Count, 1).End(xlUp)): End With
   

pour que "Plage" soit égal à la colonne B, à partir de B2 à la fin, s'il vous plaît.

Merci.

bonjour,

remplace le 1 par 2

Merci h2so4,

Merci beaucoup mon problème est résolu

tout l'honneur revient à Mferrand. dit oeil de lynx ;o)

Tu remplaces le 1 que j'ai surligné par 2... c'est ce 1 qui provoque la bascule sur A...

Rechercher des sujets similaires à "erreur execution unique occurence"