Bonjour,
je rencontre un problème tout mais j'ai beau chercher que ça soit sur internet ou en test je trouve pas.
J'ai 2 workbooks, et avec la fonction range.find je cherche si la valeur de la case d'un workbook se trouve dans une colonne du deuxième workbook et pour finir si oui je supprime la ligne.
J'ai une erreur sur le find de mon code ici :
For i = ws.UsedRange.Rows.count To 1 Step -1
If Not (ws_cat.Range(col_1 & ":" & col_1 ).Find(ws.Range(col_2 & i).value, LookIn:=xlValues)) Is Nothing Then
ws.Rows(i & ":" & i).EntireRow.delete xlShiftUp
End If
next i
ws est une worksheet du deuxième Excel, ws_cat est une worksheet du premier Excel les valeurs "col_1 , col_2 " sont des colonnes (calculées avant)
Exemple : si vous voulez tester, j'ai quelque chose qui ressemble légèrement à cela avant la boucle for posant problème
Public Const col_1 = "L"
Public Const col_2 = "AL"
Dim ws, ws_cat As Worksheet
Dim a As Variant
Dim date_time as Date
Dim wb As Workbook
Set ws_cat = ThisWorkbook.Worksheets(1)
a = Application.GetOpenFilename
If VarType(a) = vbBoolean Then
MsgBox "Opération annulée"
Else
date_time = FileDateTime(a)
Set wb = Workbooks.Open(Filename:=a)
End If
For i = 1 To wb.Worksheets.count
If wb.Worksheets(i).name = "test" Then
Set ws = wb.Worksheets(i)
Exit For
End If
Next i
Savez vous simplement d'ou vient mon problème ?
J'ai cru comprendre que lorsqu'on utilise Range.find Il faut enregistrer la cellule de départ pour faire une boucle jusqu'à retomber sur cette cellule sinon elle fait une boucle infini, mais j'ai essayé avec une condition de fin et le code ne se lance pas avant de rentrer dans une boucle infini donc l'erreur ne doit pas venir de la.
Merci pour toutes aides quelles qu'elles soient.