Vba - fonction pour rechercher la valeur d'une cellule dasn un tablea

Bonjour,

Je signale que je n’ai jamais fait de VBA et que ca fait longtemps ue je n’ai plus fait de code.
J’essaie de faire un petit programme facilepour gérer des emplacements et je bloque j’ai besoin de votre aide

j’ai sur une feuille1 excel un tableau avec 2000 lignes et 100 colonnes.
Sur la première colonne j’ai des produits et sur les colonnes suivantes des emplacements.
sur un 2eme tableau en feuille2, j’ai un tableau à 2 colonnes. En 1ere la liste des emplacements et sur la seconde, je voudrais mettre une fonction qui me dit pour chaque emplacement si je le retrouve sur mon tableau de la feuille1
j’ai fait uen fonction qui ne fonctionne pas du tout;
je sais que la faàon de sortir de mon For n’est pas élégante masi je voulais juste d’abord avoir un résultat pour pouvoir faire les choses proprement ensuite…
[i]
'fonction qui permet de chercher si une chainre de caractere presente dasn une cellule est aussi dans le tableau
'celcher est la cellule à rechercher entrée en parametre
'cellules1 le tableau dans lequel je recherche
Function RechercheTab(celcher As Double, ParamArray cellules1()) As Integer
Dim i As Integer
Dim j As Integer

'parcours les lignes
For i = 0 To UBound(cellules1, 1)
'parcours les colonnes
    For j = 0 To UBound(cellules1, 2)
    'si le contenu de la cellule que j'ai mis en param est dans la cellule du tableau que je compare alor 0 sinon 1
    If celcher = cellules(i, j) Then RechercheTab = 0
    Else: RechercheTab = 1
    Next j
Next i

End Function
[/i]
Merci d’avance pour votre aide

Tu as essayé avec une fonction personnalisée ?
Dans un module, tu écris ta fonction

Function existe(valeur As String)
Set c = Sheets(“Feuil1”).Range("$A$1:$D$100").Find(valeur, LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
existe = 1
Else
existe = 0
End If
End Function

Que tu utilises ensuite dans chaque cellule colonne B de ta feuille 2
=existe(A1)

Tu as juste à adapter la plage (Range A1:D100) dans l’exemple).
Le plus simple est sans doute de la nommer

Bonjour,

Pourquoi utiliser une macro ? Un simple NB.SI ne suffit-il pas ?

Par exemple, en B2 de Feuil2 : =NB.SI(Feuil1!$B$1:$CW$2000;A1)

En fait, ça répond à la question posée :

Pour moi, fonction = VBA.
Et d’après le code donné, j’en étais arrivé à la conclusion que le résultat devait être 0 ou 1.
Avec nb.si, tu vas avoir le nombre d?occurrences, non ?
C’est vrai que ce n’est pas trop difficile ensuite à transformer en 0/1.

Pardon gcc, je posais en fait la question par rapport au post initial qui demande à utiliser une fonction personnalisée. :wink:

Si on veut absolument soit 0 soit 1 comme résultat, on peut utiliser par exemple ceci :
=MIN(1;NB.SI(Feuil1!$B$1:$CW$2000;A1))

Pas mal le coup du MIN !
Nettement plus élégant que le Si … > 0

:jap: :wink: