Erreur définie par l'application ou l'objet

Bonjour!

J'ai un petite base de données en Excel dans laquelle j'ai une liste de personnes identifiées chacune par un code. J'ai fait un UserForm pour la modification des information de cette liste de personnes. La liste des codes est récupérée dans un comboBox du UserForm. Une fois le code choisi, un bouton permet de filtrer la table et de récupérer la personne concernée, les informations initialement saisies sont renseignées dans les autres TexteBox du Userform.

Le problème c'est que le code marche seulement quand la feuille qui contient la liste est active, sinon je reçois l’erreur "Erreur définie par l'application ou l'objet"

Voici mon code (code du bouton) :

Private Sub CommandButton_OK_Click()
    critereCode = ComboBox_Code.Value
    If critereCode <> "" Then
        ThisWorkbook.Worksheets("listepersonnes").Range("A1").AutoFilter Field:=1, Criteria1:=critereCode
    End If

    no_ligne = ThisWorkbook.Worksheets("listepersonnes").Range("A2", Cells(Rows.Count, "A").End(xlUp)).SpecialCells(xlCellTypeVisible).Cells(1, 1).Row

    TextBox_CodeP = Sheets("listepersonnes").Cells(no_ligne, 1).Value
    TextBox_Nom = Sheets("listepersonnes").Cells(no_ligne, 2).Value
    TextBox_Prenom = Sheets("listepersonnes").Cells(no_ligne, 3).Value
    TextBox_Age = Sheets("listepersonnes").Cells(no_ligne, 4).Value
    TextBox_Fonction = Sheets("listepersonnes").Cells(no_ligne, 5).Value
    TextBox_Sexe = Sheets("listepersonnes").Cells(no_ligne, 6).Value

End Sub

Puis-je avoir de l'aide pour corriger l'erreur?

Bonjour,

A priori l'erreur ne vient pas de cette macro, puisque la feuille est systématiquement précisée. D'ailleurs, l'utilisation de With...End With serait bienvenue pour éviter les répétitions.

Il faudrait transmettre l'intégralité des codes impliqués dans l'UserForm qui pose problème.

Bonjour Pedro22

Merci pour la réponse ! J'ai pris en compte le conseil et en cherchant davantage sur d'autres forum j'ai ceci qui marche bien

Private Sub CommandButton_OK_Click()
    FeuilleCourante = ActiveSheet.Name  ' Mémorise la feuille courante
    Application.ScreenUpdating = False
    With Worksheets("listepersonnes")  ' Le With évite de répéter sans cesse le nom de la feuille,
         .Select  ' Sélectionne la feuille "listepersonnes"
        critereCode = ComboBox_Code.Value
        If critereCode <> "" Then
            .Range("A1").AutoFilter Field:=1, Criteria1:=critereCode
        End If
        no_ligne = .Range("A2", Cells(Rows.Count, "A").End(xlUp)).SpecialCells(xlCellTypeVisible).Cells(1, 1).Row
        TextBox_CodeP = .Cells(no_ligne, 1).Value
        TextBox_Nom = .Cells(no_ligne, 2).Value
        TextBox_Prenom = .Cells(no_ligne, 3).Value
        TextBox_Age = .Cells(no_ligne, 4).Value
        TextBox_Fonction = .Cells(no_ligne, 5).Value
        TextBox_Sexe = .Cells(no_ligne, 6).Value
    End With
    Sheets(FeuilleCourante).Select      ' Retourne sur la feuille initiale
    Application.ScreenUpdating = True
End Sub

Merci pour l'assistance

Rechercher des sujets similaires à "erreur definie application objet"