Réalisation d'une macro de recherche

Résolu/Fermé
Kecek149 - 25 mars 2015 à 11:06
 Kecek149 - 25 mars 2015 à 11:39
Bonjour,

Je suis en train de réaliser un fichier excel de gestion de stock et j'aurai besoin d'aide pour construire une macro (je suis débutant).

Voilà comment fonctionne le fichier :
Les palettes sont stockées dans des racks, j'ai créé un adressage pour que chaque position ait une adresse et corresponde à une case de mon fichier excel.
Lorsque le logisticien rentre une palette, il indique dans la position correspondante le code ERP du produit et le numéro de lot.

Le problème que l'on rencontre est que les lots sont fragmentés dans les racks. Il me faut donc une macro de recherche simple à utiliser pour pouvoir retrouver tous les emplacements d'un lot et les rendre visibles.

Le but : l'opérateur clique sur un bouton "rechercher" à laquelle je veux affecter une macro. J'aimerai qu'une MsgBox s'affiche où il puisse rentrer le numéro de lot, clique sur ok et cela va modifier les bordures (gras et croisés) de chaque cellule comportant ce lot. Il pourra ensuite imprimer la feuille excel pour avoir un plan des racks avec la visualisation des cellules qu'il doit prendre (la macro d'impression est faite). Je ne veux pas que ça change la couleur des cellules car j'ai une conditionnelle qui colore chaque case en fonction de la référence produit.

Je crois qu'il faut que j'utilise la fonction cells.find mais je n'arrive pas à faire fonctionner la boucle if qui suit.

Voilà où j'en suis (pas très loin) :

Dim mot As Variant
mot = InputBox("Entrez le texte", "Recherche du code SAP")
Set c = Sheets(1).Range("C3:Q36").Find(mot, LookAt:=xlParts)
If c Is Nothing Then
MsgBox("Aucune palette trouvée", vbCritical, "Résultat")
Else:
Range("c.Adress").Select

(ensuite le code pour faire les bordures mais le code est un peu long)

Ca ne marche pas et je ne sais pas pourquoi.

Est ce que quelqu'un aurait une solution ?

Merci beaucoup

3 réponses

Gyrus Messages postés 3334 Date d'inscription samedi 20 juillet 2013 Statut Membre Dernière intervention 9 décembre 2016 524
25 mars 2015 à 11:16
Bonjour,

Essaie cette macro
Sub Test()
Dim Mot As String, firstAddress As String
Dim C As Range
Mot = InputBox("Entrez le texte", "Recherche du code SAP")
Set C = Sheets(1).Range("C3:Q36").Find(Mot, , xlValues, xlPart)
If C Is Nothing Then
MsgBox "Aucune palette trouvée", vbCritical, "Résultat"
Else
firstAddress = C.Address
Do
C.Interior.ColorIndex = 6
Set C = Sheets(1).Range("C3:Q36").FindNext(C)
Loop While Not C Is Nothing And C.Address <> firstAddress
End If
End Sub


A+
2
f894009 Messages postés 17215 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 26 décembre 2024 1 711
25 mars 2015 à 11:15
Bonjour,
remplacez
Range("c.Adress").Select

par
Range(c.Adress).Select
0
Bonjour f894009, bonjour Gyrus,

Merci beaucoup pour l'aide. La macro fonctionne très bien, c'est exactement ce que je voulais.

Il faut juste que je remplace le chanegement de couleur par un changement de bordure mais je devrais m'en sortir.

Encore merci pour l'efficacité et la rapidité.
0