VBA Find
Résolu
dudu
-
lermite222 Messages postés 8724 Date d'inscription Statut Contributeur Dernière intervention -
lermite222 Messages postés 8724 Date d'inscription Statut Contributeur Dernière intervention -
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é)
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é)
A voir également:
- VBA Find
- Find and mount - Télécharger - Récupération de données
- Ava find - Télécharger - Divers Utilitaires
- Excel compter cellule couleur sans vba - Guide
- Fonction find vba ✓ - Forum Excel
- Fonction Find vba ✓ - Forum Excel
4 réponses
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+
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+
Bonjour,
Info
If Not (Plage.Find(ProjetRecherché) Is Nothing) Then Set Posit = Plage.Find(ProjetRecherché) Else MsgBox "Introuvable" End If Adresse = Resul.Address
Info
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