Bonsoir le forum ! Je cherche en ce moment à perfectionner mon « moteur » de recherche sur une feuille Excel. Le fichier laissé en exemple est une très brève reconstitution du vrai fichier ! Voilà un petit topo pour le développer un peu plus :
La feuille est composé de 2000 désignations produits avec 2 références (Brute et Finit) par désignation.
L’utilisateur entre la réf brute (en entier à la main, ou automatiquement grâce à une douchette pour une lecture code barre) en F2 puis clique sur le bouton de recherche qui exécute la macro suivante :
La macro renvoie la désignation en G2 sous la forme de valeur et non de formule sans les blancs avec la réf finit du produit concerné
Jusqu’ici c’est le monde des bisounourse ! Mais les personnes exploitants le logiciel sont souvent amenées à faire des erreurs de saisie, donc références inconnues, où de zipper le mauvais code barre. Ce qui engendre une msgbox de MVBA qui les déstabilisent quand ils ont le malheur de cliquer sur Débogage…
Je souhaite de ne plus faire apparaitre ce message, et de rendre le moteur un peu plus efficace, en trois points :
- Sur une fiche produit s’y trouvent plusieurs références avec des différent code barre. Ils sont chacun agrémentés d’une lettre en début de chaine de caractère : P (suivit de 10 caractères alphanumériques) pour le produit. S (suivit de 9, ou -, caractères numériques) pour l’étiquette et V (suivit de 8, ou -, caractères numériques) pour le fournisseur. Je cherche donc à manipuler ma chaine de caractère en F2 pour un « traitement » préliminaire avec un IF/Elsif/Endif pour détecter la présence du P, elsif exit sub !
- Deuxième traitement préliminaire : compter le nb de caractère dans la chaine en F2, si le nombre est compris entre 10 (inclus) et 11 (inclus), la macro s’exécute, sinon msgbox…
- Je souhaite que la recherche ne s’exécute que dans la matrice [A3 : A2003]
Enfin, si l’outil de recherche ne trouve pas la référence après tous ces traitements et ce champs définit, une msgbox du style « la référence que vous chercher n’est pas dans ce fichier, veuillez vérifier la référence recherchée ! » est affichée.
N’hésiter pas à critiquer quoi que ce soit même si cela ne répond pas aux modifications souhaitées, toutes réflexions sont bonnes à prendre !
Je vous souhaite à tous une agréable fin de soirée !
La feuille est composé de 2000 désignations produits avec 2 références (Brute et Finit) par désignation.
L’utilisateur entre la réf brute (en entier à la main, ou automatiquement grâce à une douchette pour une lecture code barre) en F2 puis clique sur le bouton de recherche qui exécute la macro suivante :
Code:
Application.CutCopyMode = False
Range("F2").Select
Selection.Copy
Cells.Find(What:=Range("F2"), After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlColumns, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
Application.CutCopyMode = False
ActiveCell.Offset(0, 1).Range("A1,B1").Select
Selection.Copy
Range("G2").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=True, Transpose:=False
Application.CutCopyMode = False
La macro renvoie la désignation en G2 sous la forme de valeur et non de formule sans les blancs avec la réf finit du produit concerné
Jusqu’ici c’est le monde des bisounourse ! Mais les personnes exploitants le logiciel sont souvent amenées à faire des erreurs de saisie, donc références inconnues, où de zipper le mauvais code barre. Ce qui engendre une msgbox de MVBA qui les déstabilisent quand ils ont le malheur de cliquer sur Débogage…
Je souhaite de ne plus faire apparaitre ce message, et de rendre le moteur un peu plus efficace, en trois points :
- Sur une fiche produit s’y trouvent plusieurs références avec des différent code barre. Ils sont chacun agrémentés d’une lettre en début de chaine de caractère : P (suivit de 10 caractères alphanumériques) pour le produit. S (suivit de 9, ou -, caractères numériques) pour l’étiquette et V (suivit de 8, ou -, caractères numériques) pour le fournisseur. Je cherche donc à manipuler ma chaine de caractère en F2 pour un « traitement » préliminaire avec un IF/Elsif/Endif pour détecter la présence du P, elsif exit sub !
- Deuxième traitement préliminaire : compter le nb de caractère dans la chaine en F2, si le nombre est compris entre 10 (inclus) et 11 (inclus), la macro s’exécute, sinon msgbox…
- Je souhaite que la recherche ne s’exécute que dans la matrice [A3 : A2003]
Enfin, si l’outil de recherche ne trouve pas la référence après tous ces traitements et ce champs définit, une msgbox du style « la référence que vous chercher n’est pas dans ce fichier, veuillez vérifier la référence recherchée ! » est affichée.
N’hésiter pas à critiquer quoi que ce soit même si cela ne répond pas aux modifications souhaitées, toutes réflexions sont bonnes à prendre !
Je vous souhaite à tous une agréable fin de soirée !