H
heriss
Guest
Bonjour,
Mon but est de créer une fonction qui ferai un test pour identifier si les libellés d'articles (1 colonne => data) contiennent le nom d'une série de marques (contenue dans une autre colonne => brand) et donnerai un vecteur résultat d'une seule colonne (contenant des 0 et des 1) en fonction du résultat du test.
Voici la fonction que j'ai créé
Function multicherche(cherche, donnee As Variant)
Dim vecteur_cherche(), vecteur_donnee(), vecteur_resultat() As String
Dim i, j, max_i, max_j, valeur As Integer
Dim cel As Range
'intialise les variables
i = 0
j = 0
max_i = 0
max_j = 0
valeur = 0
'compte le nombre de valeurs à chercher
For Each cel In cherche.Cells
max_i = max_i + 1
Next cel
'donne la dimension de la zone de données
For Each cel In donnee.Cells
max_j = max_j + 1
Next cel
'on dimensionne les tableaux
ReDim vecteur_cherche(max_i)
ReDim vecteur_donnee(max_j)
ReDim vecteur_resultat(max_j)
'on remplit le tableau vecteur_cherche avec les valeurs de la zone cherche
For i = 1 To max_i
vecteur_cherche(i) = cherche.cel.Offset(i - 1)
Next i
'on remplit le tableau vecteur_données avec les valeurs de la zone donnée
For j = 1 To max_j
vecteur_donnee(j) = donnee.cel.Offset(j - 1)
Next j
'teste si la valeur cherchée est dans la zone de données (alors +1) et attribue la valeur au vecteur résultat
For j = 1 To max_j
For i = 1 To max_i
If InStr(vecteur_donnee(j), vecteur_cherche(i)) > 0 Then valeur = 1
'teste si le texte de la ligne i du vecteur recherche est contenu dans le texte de la ligne j du vecteur résultat
Next i
vecteur_resultat(j) = valeur
'réinitialise le compteur et passe à la ligne suivante du vecteur résultat
valeur = 0
Next j
multicherche = vecteur_resultat
End Function
Bien sûr je ne suis pas bon en VBA et du coup ma formule multicherche plante et j'ai #VALEUR! en résultat.
Si vous pouviez me dire ou je me trompe et m'aider à finir vous seriez bien sympa.
Merci d'avance et bonne journée,
Heriss
Mon but est de créer une fonction qui ferai un test pour identifier si les libellés d'articles (1 colonne => data) contiennent le nom d'une série de marques (contenue dans une autre colonne => brand) et donnerai un vecteur résultat d'une seule colonne (contenant des 0 et des 1) en fonction du résultat du test.
Voici la fonction que j'ai créé
Function multicherche(cherche, donnee As Variant)
Dim vecteur_cherche(), vecteur_donnee(), vecteur_resultat() As String
Dim i, j, max_i, max_j, valeur As Integer
Dim cel As Range
'intialise les variables
i = 0
j = 0
max_i = 0
max_j = 0
valeur = 0
'compte le nombre de valeurs à chercher
For Each cel In cherche.Cells
max_i = max_i + 1
Next cel
'donne la dimension de la zone de données
For Each cel In donnee.Cells
max_j = max_j + 1
Next cel
'on dimensionne les tableaux
ReDim vecteur_cherche(max_i)
ReDim vecteur_donnee(max_j)
ReDim vecteur_resultat(max_j)
'on remplit le tableau vecteur_cherche avec les valeurs de la zone cherche
For i = 1 To max_i
vecteur_cherche(i) = cherche.cel.Offset(i - 1)
Next i
'on remplit le tableau vecteur_données avec les valeurs de la zone donnée
For j = 1 To max_j
vecteur_donnee(j) = donnee.cel.Offset(j - 1)
Next j
'teste si la valeur cherchée est dans la zone de données (alors +1) et attribue la valeur au vecteur résultat
For j = 1 To max_j
For i = 1 To max_i
If InStr(vecteur_donnee(j), vecteur_cherche(i)) > 0 Then valeur = 1
'teste si le texte de la ligne i du vecteur recherche est contenu dans le texte de la ligne j du vecteur résultat
Next i
vecteur_resultat(j) = valeur
'réinitialise le compteur et passe à la ligne suivante du vecteur résultat
valeur = 0
Next j
multicherche = vecteur_resultat
End Function
Bien sûr je ne suis pas bon en VBA et du coup ma formule multicherche plante et j'ai #VALEUR! en résultat.
Si vous pouviez me dire ou je me trompe et m'aider à finir vous seriez bien sympa.
Merci d'avance et bonne journée,
Heriss