VBA plage " d'une variable à la dernière du tableau" avec .Find

Salut à tous,

je reviens vous voir car je bloque sur un problème de formulation, je vous explique:

J'ai une liste de données "mises sous forme de tableau" (pour pouvoir les trier simplement, mais je me rends compte que c'est peut être plus de soucis qu'autre chose, si vous avez un avis sur la question je suis preneur).

J'ai une macro (addnew) me permettant d'ajouter en bas de cette liste le contenu d'une plage (sur une super base de ddetp88, merci à lui!) avec des conditions (que certaines cases soient renseignées, sinon la case se colore et un message d'erreur apparait)

j'aimerais, pour éviter les doublons, y ajouter une conditions : que le contenu d'une case (ref fabricant) ne soit pas présent dans la liste.

j'ai donc fait une macro test (doublon) avant de l'inclure à addnew.

La première partie de la macro recherche (avec .Find) dans une plage donnée (les catégorie dans ma liste) la case (variable FoundCat) contenant la valeur "ref fabricant"(variable LookOutCat). jusqu'ici tout va bien.

la deuxième partie cherche dans la colonne correspondante la valeur saisie pour "ref fabricant". ça marche quand je définit moi même la plage de recherche. Mais, même si je sais trouver le numéro de la dernière ligne du tableau, je n'arrive pas à formuler la plage comme étant "de FoundCat jusqu'à la dernière case de la liste dans la colonne de Foundcat"

Je me doute que c'est sans doute pas compliqué, mais je bloque , si quelqu'un à la solution ce serait génial.

Merci d'avance !

Sub doublon()

'PARTIE 1 on commence par chercher la case contenant l'intitulé/ le critère/ la colonne dans lequel on cherche un doublon

'on declare LookOutcat (la catégorie recherchée) comme texte, FoundCat comme plage(contenant la categorie recherchée)
Dim FoundCat As Range, LookOutCat As String
'on definit LookOutCat, le nom de la categorie recherchee
LookOutCat = "ref fabricant"
'on definit FoundCat comme la premiere cellule dans la ligne 10 contenant Lookoutcat
Set FoundCat = Sheets("pool").Range("10:10").Find(LookOutCat, LookIn:=xlValues, lookat:=xlPart)

'Si Foundcat n'est pas definit (donc qu'il n'a pas ete trouve dans la recherche) alors message d'erreur
If FoundCat Is Nothing Then MsgBox (LookOutCat & " n'est pas une categorie dans pool")

'PARTIE 2 Une fois qu'on à la case de la categorie dans pool, on peut rechercher dans sa colonne

'declare LookOut (valeur recherchée), definit LookOut = valeur de la case B3, par decalage à partir de foundcat
'declare found comme plage, definit found comme la première cellule de valeur 3, dans la colonne B jusqu'a lastrow
Dim found As Range, LookOut As String

FoundCat.Select
Selection.Offset(-7, 0).Select
LookOut = Selection.Value
MsgBox (LookOut)
MsgBox (FoundCat.Address)

Dim lastrow As Integer
lastrow = Range("b" & Rows.Count).End(xlUp).Row

Set found = Sheets("pool").Range("F11:F30").Find(LookOut, LookIn:=xlValues, lookat:=xlPart)

'si found est definit (donc que la veleur a ete trouvee), alors on selectionne la plage found
If Not found Is Nothing Then
    MsgBox (LookOut & " déjà présente dans la pool")
    found.Select
Else: MsgBox (LookOut & " n'est pas dans la pool")

End If

    'redefinit found commme nul pour les prochaines recherches
    Set found = Nothing

End Sub
1exemple-migul.xlsm (36.77 Ko)
Rechercher des sujets similaires à "vba plage variable derniere tableau find"