pb programmation fonction VBA

  • Initiateur de la discussion Initiateur de la discussion heriss
  • Date de début Date de début

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 !

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
 
Bonjour le forum,

Voici le fichier exemple (s'il passe). Merci d'avance de votre aide.


ciao
Heriss [file name=Multicherche.zip size=27637]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Multicherche.zip[/file]
 

Pièces jointes

- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
657
Réponses
3
Affichages
672
Réponses
10
Affichages
799
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
178
Réponses
7
Affichages
365
  • Question Question
Microsoft 365 VBA Transpose
Réponses
11
Affichages
837
Retour