VBA Find

Résolu
Bonjour,

avant d'ouvrir une ligne dans une liste pour une nouvelle valeur je voudrai vérifier si elle n'existe pas dèjà dans la liste.
J'ai écrit le code suivant. Quand la valeur est absente j'ai l'erreur 91.
Pouvez-vous m'aider ?
Merci d'avance

Dim ProjetRecherché As Range
Dim Boucle1 As Long
Dim Dernièreligne As Long
Dim Posit As Range
Dim Plage As Range

Set Plage = Workbooks("V1106.xls").Sheets("Version").Range(Cells(3, 2), Cells(Dernièreligne, 2))
Set ProjetRecherché = Workbooks("PSICE-Pilotage version transverse.xls").Sheets("Donnees version").Cells(Boucle1, 9)
Posit = Plage.Find(ProjetRecherché)

4 réponses

  1. Contributeur
    Je n'ai pas ton classeur alors je sais pas tester mais tu pourrais éventuellement mettre...
        On Error Goto Fin
        Posit = Plage.Find(ProjetRecherché)
        On Error Goto 0
    Et tu ferais bien d'un peu étudier les mots clés "With" et "End With" ça te ferais un code plus lisible et surtout beaucoup plus cour.
    A+
    1. Bonjour,

          If Not (Plage.Find(ProjetRecherché) Is Nothing) Then
              Set Posit = Plage.Find(ProjetRecherché)
          Else
              MsgBox "Introuvable"
          End If
          
          Adresse = Resul.Address
      


      Info
      1. Contributeur
        Bonjour,
        Et quand la valeur existe, tu n'a pas d'erreur ? parce que d'après ton code, Boucle1 =0 ?
        L'erreur 91 n'est pas en rapport avec ce que tu dis...
        Erreur 91 = "Variable objet ou variable de bloc With non définie"
        Donc je pense que c'est bien a cause de Boucle1 qui est à 0
        A+
        1. Boucle1 est bien valorisé.
          Voilà tout le code, j'avais mis seulement un extrait.
          Lorsque la valeur cherchée est présente le code "Posit = Plage.Find(ProjetRecherché)" fonctionne, Posit prend la valeur de ProjetRecherché qui a été trouvé).
          Lorsque la valeur est absente, le code "Posit = Plage.Find(ProjetRecherché)" déclenche l'erreur 91.
          Dim ProjetRecherché As Range
          Dim Boucle1 As Long
          Dim Dernièreligne As Long
          Dim Posit As Long
          Dim Plage As Range

          Sub récupversion()

          Version = Workbooks("V1106.xls").Sheets("Paramètre").Cells(2, 2)
          Boucle1 = 4
          ligne = 2

          ' recherche de la dernière ligne de la feuille V1103.xls\version
          For ligne = 2 To 9999
          If Workbooks("V1106.xls").Sheets("Version").Cells(ligne, 1) = "" Then
          Dernièreligne = ligne - 1
          ligne = 99999
          End If
          Next

          ' enrichissement de la liste V1103.xls\version à partir de la liste PSICE-Pilotage version transverse.xls\Donnees version
          While Boucle1 < 9999

          If Workbooks("PSICE-Pilotage version transverse.xls").Sheets("Donnees version").Cells(Boucle1, 7) = Version And _
          Workbooks("PSICE-Pilotage version transverse.xls").Sheets("Donnees version").Cells(Boucle1, 13) <> "UPFC" Then
          Set Plage = Workbooks("V1106.xls").Sheets("Version").Range(Cells(3, 2), Cells(Dernièreligne, 2))
          Set ProjetRecherché = Workbooks("PSICE-Pilotage version transverse.xls").Sheets("Donnees version").Cells(Boucle1, 9)
          Posit = Plage.Find(ProjetRecherché)
          If Posit < 0 Then
          Dernièreligne = Dernièreligne + 1
          Workbooks("V1106.xls").Sheets("Version").Cells(Dernièreligne, 1) = Version
          Workbooks("V1106.xls").Sheets("Version").Cells(Dernièreligne, 2) = Workbooks("PSICE-Pilotage version transverse.xls").Sheets("Donnees version").Cells(Boucle1, 9)
          Workbooks("V1106.xls").Sheets("Version").Cells(Dernièreligne, 3) = Workbooks("PSICE-Pilotage version transverse.xls").Sheets("Donnees version").Cells(Boucle1, 2)
          Workbooks("V1106.xls").Sheets("Version").Cells(Dernièreligne, 4) = Workbooks("PSICE-Pilotage version transverse.xls").Sheets("Donnees version").Cells(Boucle1, 13)
          Workbooks("V1106.xls").Sheets("Version").Cells(Dernièreligne, 5) = Workbooks("PSICE-Pilotage version transverse.xls").Sheets("Donnees version").Cells(Boucle1, 61)
          Workbooks("V1106.xls").Sheets("Version").Cells(Dernièreligne, 6) = Workbooks("PSICE-Pilotage version transverse.xls").Sheets("Donnees version").Cells(Boucle1, 14)
          GoTo fin
          End If
          End If

          If Workbooks("PSICE-Pilotage version transverse.xls").Sheets("Donnees version").Cells(Boucle1, 7) = "" Then
          Boucle1 = 9998
          End If
          fin:
          Boucle1 = Boucle1 + 1
          Wend

          End Sub