VBA - Erreur 91 suite à une valeur non trouvée méthode Find

Bonjour à tous,

Je dois faire un fichier Excel avec macro pour le boulot pour reprendre une liste d'employés avec différences informations sur leur parcours professionnel au sein de l'entreprise.

J'ai donc deux feuilles, une avec la synthèse d'un employé dans une mise en forme spécifique, et une seconde feuille avec une ligne par employé qui reprend tout le monde comme une DB.

Dans mon fichier en cours de création, j'ai des macros me permettant de passer les infos d'une feuille à l'autre en retrouvant le nom et le prénom d'un employé à partir d'une liste déroulante.

Mon problème c'est la gestion des doublons.

En gros, je voudrais que si cet employé n'existe pas dans la colonne correspondante de ma feuille 'Listing' (la feuille DB), qu'il le copie à la première ligne vide disponible. Par contre si le nom existe bien, qu'il retrouve la ligne existante et écrase les données pour faire la mise à jour ou compléter ce qui est éventuellement manquant. (mon programme recopie tout y compris les cellules vides car on pourrait ajouter ou supprimer des infos)

Je ne suis pas très doué en programmation donc bon, j'ai besoin de votre aide.

Voici le code qui me donne une erreur 91 mais je ne comprend pas ce qu'est un objet... Si quelqu'un savait m'expliquer de manière simple mon soucis et que je puisse comprendre pour la suite ce serait sympa. Le but n'est pas que vous fassiez la résolution vous même mais que je pige ce que je fait comme connerie

J'ai surligné la ligne de l'erreur dans le code suivant et je comprend bien que c'est parce que ce code là ne trouve pas la valeur de la variable là ou je lui ai demandé de chercher que ça ne fonctionne pas, mais je ne sais pas comment faire pour éviter ça...

Private Sub save_Click()
Dim Ligne As Long
Dim i As Integer
Dim Name As String
Dim Lig_Ex As Long

With Sheets("Listing")

Name = Worksheets("Synthese").Range("B3")                                                                      'nom à trouver si doublon
Ligne = .Range("B" & Rows.Count).End(xlUp).Row + 1                                      'pour retrouver la première ligne vide
Lig_Ex = Worksheets("Listing").Columns("B").Find(Name, .Range("B3"), xlValues).Row      'pour retrouver la ligne correspondant au nom
    'MsgBox (Lig_Ex)

    For i = 3 To Ligne
        If Cells(i, 2).Value = Name Then

            .Range("B" & Lig_Ex) = Range("B3")
            .Range("C" & Lig_Ex) = Range("B5")
            .Range("D" & Lig_Ex) = Range("B7")

        GoTo suite

        Else
            .Range("B" & Ligne) = Range("B3")
            .Range("C" & Ligne) = Range("B5")
            .Range("D" & Ligne) = Range("B7")
       End If
    Next i

End With

suite:

With Sheets("Synthese")
        Range("B3") = ""
        Range("B5") = ""
        Range("B7") = ""
        ActiveWorkbook.save
End With
End Sub

J'ai créé un fichier simplifié avec le code ci dessus pour que vous puissiez m'aider à résoudre l'erreur.

En vous remerciant d'avance.

Ben

27test-doublons.xlsm (19.69 Ko)

En effet, s'il ne trouve pas il déclanche une erreur...

Voilà comment faire

Sub tonsub()

On error goto ici
'Ton code

Exit sub
ici:
'Ton code s'il ne trouve pas la valeur
End sub

Salut EngueEngue,

Merci d'avoir pris le temps de me répondre.

Je vais adapter mon code dans mon fichier réel dés demain car plus le temps aujourd'hui...

Je reviens dés que j'ai adapter pour voir si je peux cloture le fil ou pas

Encore merci beaucoup

Ben

Bonjour,

Comme promis je viens d'adapter mon code et ça fonctionne parfaitement!

Je comprend mieux pourquoi j'ai lu que le goto devait servir surtout pour éviter les erreurs

Un grand merci à EngueEngue!!!!

Je peux maintenant continuer à peaufiner mon code pour la suite du projet.

Bye

Rechercher des sujets similaires à "vba erreur suite valeur trouvee methode find"