[RESOLU] Amélioration d'une fonction crée sous VBA cherchecode

Minh

XLDnaute Nouveau
Bonjour à tous,


Je souhaiterai améliorer la fonction ci-après (créée en VBA). Mais ayant une vision limitée dans les possibilitées offertes, j'ai buté sur le problème :( . (j'ai essayé en la mixant avec des "SI" et "ET" , en essayant de rajouter un champ supplémentaire dans le code ...)

Voici le code (contenu dans le fichier en pièce jointe avec l'exemple que je développe ici)

Function ChercheCode(champ, code, element)
ChercheCode = ""
For i = 1 To champ.Count
If InStr(element, champ(i)) > 0 Then ChercheCode = code(i)
Next i
End Function


1.jpg


Cette fonction permet d'associer un code spécifique si une condition est réunie par rapport à la cellule cible. Elle fonctionne très bien, mais je souhaiterai l'affiner en ajoutant une seconde condition "obligatoire" du genre :

2.jpg


Cher(es) membres du forum, auriez-vous des idées bien plus pertinentes que les miennes ? :confused:



Attendant de vous lire et vous remerciant par avance du temps que vous prendrez pour lire mon soucis et y répondre (si vous le pouvez)


Bien cordialement
 

Pièces jointes

  • piece jointe.xlsm
    16.6 KB · Affichages: 52
  • 1.jpg
    1.jpg
    24.5 KB · Affichages: 57
  • 1.jpg
    1.jpg
    24.5 KB · Affichages: 60
  • 2.jpg
    2.jpg
    32 KB · Affichages: 61
  • 2.jpg
    2.jpg
    32 KB · Affichages: 62
Dernière édition:

Minh

XLDnaute Nouveau
Re : Amélioration d'une fonction crée sous VBA cherchecode

Bonsoir Gelinotte,


Merci beaucoup ;) . Malheureusement, ton code ne répondait pas parfaitement à ce que je recherchai, car comme on le voit après, toi c'était l'une OU l'autre si la première condition n'était pas remplie. Et je me suis peut-être mal exprimé mais je souhaitai un ET "obligatoire"

Function ChercheCode2(champ1, champ2, code, element)
ChercheCode2 = ""
For i = 1 To champ1.Count
If InStr(element, champ1(i)) > 0 Then
ChercheCode2 = code(i)
Else
If InStr(element, champ2(i)) > 0 Then
ChercheCode2 = code(i)
End If
End If
Next i
End Function


MAIS, car il y a un MAIS :D , ton code m'a redonné confiance ! Vive l'émulation ! et grâce à ta trame, j'ai finalement réussi à trouver ce que je souhaitai ! C'était pas si compliqué, mais que voulez-vous, sans les connaissances, on galère ... J'ai du m'y reprendre plusieurs fois pour savoir où placer le AND qu'il fallait (car j'ai essayé de différente manière et les 3 premières ouvraient le debuggeur. Bref, voici le code :

Function ChercheCode2(champ1, champ2, code, element)
ChercheCode2 = ""
For i = 1 To champ1.Count
If InStr(element, champ1(i)) > 0 And InStr(element, champ2(i)) > 0 Then ChercheCode2 = code(i)
Next i
End Function

Elémentaire mon cher Watson ;) (mais pas pour moi, car je ne comprends pas encore tout).


Bien cordialement
 

Minh

XLDnaute Nouveau
Re : [RESOLU] Amélioration d'une fonction crée sous VBA cherchecode

Mmh, je saisi pas trop la nuance en fait du "OR".

Il faut que pour la cellule C3 (par exemple), je retrouve et le mot du champ1 ET le mot du champ2 ensemble (recherche de mots dans le libellé de la cellule C3 contenant d'autres mots).
Car le champ1 peut se répéter (par rapport à un autre champ1) (ou même principe pour le champ2), mais jamais les deux en même temps.

Je sais pas si ce que j'ai écrit est compréhensible ... :confused:


PS : en relisant mon premier message, je me rends compte que j'ai pas été assez explicite, et si je l'avais été, je pense que la solution aurait plus vite coulée de source ... désolé ...
 

Discussions similaires

Statistiques des forums

Discussions
312 490
Messages
2 088 881
Membres
103 981
dernier inscrit
vinsalcatraz