Microsoft 365 Trouver une valeur dans une colonne

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

mikeduff

XLDnaute Nouveau
Bonjour à tous,
Voilà bien longtemps que je ne suis plus venu, mais quand un problème qui me parait stupide me bloque ... je reviens...

Le problème (j'ai évidemment extrait et illustré le problème d'un projet beaucoup plus gros) :
Le titre dit tout et parait très simple (rencontré tant de fois), et pourtant...
Je sèche sur cette question simple.
Le problème:
- Une liste 1 de 51 données (string) dans la colonne N
- Une autre liste 2 contenant ces 51 données + quelques autres
- Le but: trouver (et stocker/traiter/...) les données de la liste 2 qui sont absentes dans la liste 1

En annexe, petit classeur Excel qui illustre mon problème (après exécution de la macro).
Ci-dessous la macro:
Code:
Sub Chercher()
Dim TROUVE As Integer
Dim LIGNE_A, LIGNE_D, LIGNE_F, LIGNE_FIN As Integer

Range("F1:F100").ClearContents

LIGNE_A = 3
LIGNE_F = 3
LIGNE_FIN = Range("D1:D1000").Find("FIN").Row
For LIGNE_D = 3 To LIGNE_FIN - 1
    ISIN = Cells(LIGNE_D, 4).Value
    TROUVE = Range("A1:A100").Find(ISIN).Row
           
    If TROUVE > 0 Then
        Cells(LIGNE_F, 6) = "Trouvé ligne" + Str(TROUVE)
    Else
        Cells(LIGNE_F, 6) = ISIN
    End If
    LIGNE_F = LIGNE_F + 1
Next
End Sub

Que constate-t-on ? Tout va très bien pour les 10 premiers éléments, et blocage-erreur au 11ème: l'élément "IE00B0M62Q58" de la liste_F n'est pas présent dans la liste_A et blocage: erreur: "Erreur 91: Variable objet ou variable de bloc With non définie" par l'instruction " TROUVE = Range("A1:A100").Find(ISIN).Row"

L'instruction Find est le problème

Quelqu'un verrait-il une solution?
Merci d'avance pour toute aide

Très cordialement,
 

Pièces jointes

Bonjour @mikeduff

normalement, comme ceci
VB:
Sub Chercher()
  Dim TROUVE As Integer
  Dim LIGNE_A, LIGNE_D, LIGNE_F, LIGNE_FIN As Integer
  Range("F1:F100").ClearContents
  LIGNE_A = 3
  LIGNE_F = 3
  LIGNE_FIN = Range("D1:D1000").Find("FIN").Row
  For LIGNE_D = 3 To LIGNE_FIN - 1
    ISIN = Cells(LIGNE_D, 4).Value
    On Error Resume Next
    TROUVE = 0:   TROUVE = Range("A1:A100").Find(ISIN).Row
    On Error GoTo 0
    Err.Clear
           
    If TROUVE > 0 Then
      Cells(LIGNE_F, 6) = "Trouvé ligne" + Str(TROUVE)
    Else
      Cells(LIGNE_F, 6) = ISIN
    End If
    LIGNE_F = LIGNE_F + 1
  Next
End Sub

A+
 
... et pour ceux qui ne disposent pas de Filtre :
VB:
Sub Chercher()
    Dim Formule$, PlageF
    Range("F1:F100").ClearContents
    Set PlageF = Range("F3:F" & Cells(Cells.Rows.Count, "D").End(xlUp).Row - 1)
    Formule = "=IF(COUNTIF(A:A,D3)>0,""Trouvé en ligne "" & MATCH(D3,A:A,0),D3)"
    PlageF.Formula = Formule
End Sub
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
XL 2019 Erreur '9'
Réponses
2
Affichages
1 K
Retour