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 !
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
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
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
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
Eh bien, vous avez été rapides !
Merci beaucoup à tous de vos suggestions. Il y a parmi elles quelques notions que je ne connais pas.
Je vais examiner çà en détail
- 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