XL 2013 Réaliser une recherche rapide et confortable de pièces détachées Lego dans une liste Excel.

elge52

XLDnaute Nouveau
Bonjour
Sur la base d'une liste de pièces détachées Lego, réalisée dans Excel, comprenant son numéro, son descriptif, le numéro du tiroir dans lequel elle se trouve et le lien vers son image, j'aimerais pouvoir rechercher mes pièces selon 2 critères : Soit son numéro, soit son descriptif. En cliquant sur un bouton "Recherche", j'aimerais qu'il m'affiche l'image de la pièce et le numéro du tiroir dans lequel elle se trouve. Un deuxième bouton permettra de réinitialiser la recherche.
Toutes mes pièces détachées se trouvent triées dans plus de 1200 tiroirs.
Réaliser la liste n'est pas compliqué.... c'est juste pour le reste que j'ai un petit problème. Je vous remercie d'avance pour toute l'aide que vous pourrez me fournir.
 

elge52

XLDnaute Nouveau
Bonjour sylvanu,
Merci de ton intérêt à mon problème. Le fichier Excel comporte 4 colonnes : une pour le numéro de la pièce, une pour son descriptif, une contenant le numéro du tiroir dans lequel elle se trouve et une pour un éventuel lien qui mène à son image car les images au format .jpg se trouvent dans un fichier externe à Excel. Je joins un petit fichier pour info.
 

Pièces jointes

  • PRG recherche de pces.xlsx
    9.6 KB · Affichages: 13
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Elge,
Un essai en PJ.
On renseigne soit par N° ou par Descriptif et on appuie sur CHERCHE. Avec :
VB:
Sub Chercher()
    Dim Chemin$, Ligne%, Image$
    Chemin = "g:\Users\PC_PAPA\Pictures\____GIFS\Bonhomme\Petites\"             ' A modifier
    For Each Im In ActiveSheet.Shapes                                           ' On efface les images présentes
        If Right(Im.Name, 4) = ".jpg" Then Im.Delete
    Next Im
    [F5] = ""                                                                   ' On efface le N° de tiroir présent
    Ligne = 0
    If [C5] <> "" And Application.CountIf([Numéro], [C5]) <> 0 Then             ' Si Numéro présent
        Ligne = Application.Match([C5], [Numéro], 0)
    ElseIf [C7] <> "" And Application.CountIf([Descriptif], [C7]) <> 0 Then     ' Si Descriptif présent
        Ligne = Application.Match([C7], [Descriptif], 0)
    End If
    If Ligne <> 0 Then
        [C5] = Application.Index([Numéro], Ligne)                               ' Numéro
        [C7] = Application.Index([Descriptif], Ligne)                           ' Descriptif
        [F5] = Application.Index([Tiroir], Ligne)                               ' Tiroir
        Image = Application.Index([NumImage], Ligne)                            ' Nom fichier image
        If Image <> "" And Ligne > 1 Then
            ' Voir définition : https://learn.microsoft.com/fr-fr/office/vba/api/excel.shapes.addpicture
            ActiveSheet.Shapes.AddPicture Chemin & Image, True, True, 500, 50, 150, 150  ' A adapter
        End If
    End If
End Sub
Il vous faut adapter ces deux lignes à votre contexte :
Code:
Le chemin du dossier où sont les images. Doit se terminer par "\"
Chemin = "g:\Users\PC_PAPA\Pictures\____GIFS\Bonhomme\Petites\"

Adapter la position et la taille de l'image sur votre feuille, comme bon vous semble.
ActiveSheet.Shapes.AddPicture Chemin & Image, True, True, 500, 50, 150, 150
 

Pièces jointes

  • PRG recherche de pces (1).xlsm
    26.9 KB · Affichages: 8

elge52

XLDnaute Nouveau
Bonsoir Sylvanu,
Tout d'abord un grand BRAVO, c'est, à quelques petits détails prêts, exactement ce que je recherche. Pour parfaire mon idée il manque un bouton pour réinitialiser les deux cases de la recherche. En effet, suite à une recherche, lorsque l'on introduit une nouvelle donnée dans la case "Numéro pièce", et que l'on clique sur le bouton "Cherche", la case "Descriptif" se met à jour et la recherche se fait correctement. En revanche, si l'on fait une recherche par la case "Descriptif", la case "Numéro Pièce" ne se met pas à jour et la recherche échoue. Ou alors, il faut effacer manuellement les données de l'autre case.... Il faudrait aussi que la page de recherche, (ici, la feuille 4), soit la seule feuille à laquelle l'on puisse accéder. Il faut que le reste du fichier soit protégé et inaccessible, sans l'introduction d'un mot de passe. De même, sur cette feuille 4, les cases du numéro du tiroir ainsi que celle de l'image soient protégées en écriture. Voila, dans un premier temps, ce qu'il faudrait modifier. J'ai d'autres idées mais procédons par étapes...
Maintenant j'aimerais de ta part, que tu m'expliques certaines phases de ta programmation. Il faut que tu saches que je n'ai plus utilisé ce programme depuis plus de trente ans. J'ai donc complètement perdu le fil et il faut que je me remette dans le bain. Aussi, ce serait sympa, si tu me donnais quelques indications. Par exemple : où se trouvent les lignes de programmation que tu as réalisées afin que je puisse éventuellement les modifier, comme l'emplacement des images... et j'ai encore plein d'autres questions... Merci d'avance.
 
Dernière édition:

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Elge,
Voir PJ V2 :
1- Mot de passe utilisé "elge52" , bien sur modifiable dans le VBA.
2- Feuille BDD masquée en VeryHidden
3- Aucune cellule accessible par l'utilisateur hormis N° pièce et Descriptif
4- Nom onglets, et ascenseurs masqués.
5- J'ai amélioré les commentaires
NB: Pour " l'emplacement des images." j'ai déjà répondu au post #4 :
Il vous faut adapter ces deux lignes à votre contexte :
Le chemin du dossier où sont les images. Doit se terminer par "\"
Chemin = "g:\Users\PC_PAPA\Pictures\____GIFS\Bonhomme\Petites\"
 

Pièces jointes

  • PRG recherche de pces (V2).xlsm
    29.1 KB · Affichages: 5

elge52

XLDnaute Nouveau
Bonsoir Sylvanu,
Merci pour les modifs. Super. Mais maintenant je suis complètement perdu. Je n'arrive plus à retrouver la feuille 1 pour modifier la liste des pièces. Comme je te l'ai dit, j'ai pris beaucoup de retard.... La formule VeryHidden est très efficace.... et comment accéder aux lignes de programmation ?
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
1- Vous faites ALT+F11 ou Développeur/Visual basic pour faire apparaitre l'éditeur basic
( d'ailleurs vous avez l'explication en entête du programme )
2- Si ce n'est déjà fait vous sélectionnez Affichage/ Fenêtre propriétés
2- A gauche vous cliquez sur Feuil2 (BDD)
Dans l'onglet Propriétés vous avez la propriété Visible, et vous sélectionnez "-1 - xlSheetVisible"
Votre feuille est à nouveau visible;
A la fin de vos modifs pensez à remettre cette feuille en VeryHidden pour la rendre invisible et inaccessible.
1677794612822.png
 

elge52

XLDnaute Nouveau
Merci pour ta réponse si rapide. Mes questions finiront peut-être par t'ennuyer mais en attendant tu me rends un fier service. Aussi je t'adresse un très grand MERCI pour ta patience. Tu sais, j'ai commencé à programmer en BASIC en 1984 sur un Commodore 64. Eh oui, ça date... L'informatique m'a toujours passionné. Encore actuellement j'achète mes PC en pièces détachées et je les monte moi-même. Mais j'ai un peu lâché la programmation. Alors maintenant je rame, mais j'y arriverai... Encore Merci!
 

elge52

XLDnaute Nouveau
Je vois que tu es vraiment "féru" en informatique.... heureusement pour moi... Pour ton info : j'ai réussi à afficher une image en modifiant l'adresse comme tu me l'as indiqué. C'est nickel... Je n'ai pas encore préparé toutes les images, va y avoir du boulot... Juste une petite chose : lorsque je fais une nouvelle recherche ou que j'efface la recherche précédente, l'ancienne image ne s'efface pas et la nouvelle vient se positionner par dessus la précédente.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
l'ancienne image ne s'efface pas et la nouvelle vient se positionner par dessus la précédente.
Euh ... non. Pas sur mon PC.
Justement il y a la boucle qui efface toutes les images .jpg de la feuille :
VB:
    For Each Im In ActiveSheet.Shapes                                           ' On efface les images présentes
        If Right(Im.Name, 4) = ".jpg" Then Im.Delete
    Next Im
Voilà ce que cela donne sur mon PC ( XL2007 WIN10 )
20230302_235926.gif
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Vous êtes sérieux ? 😂😂😂
Dans votre propre PJ il y a 4 colonnes dont la 4eme comporte le nom de l'image associée.
Je n'ai rien changé. La 4eme colonne comporte toujours le nom du fichier. ( qui doit être en .jpg )
Mes petits bonhommes, pour l'exemple, sont dans des fichiers appelés Im (1).jpg.
Dans cette colonne vous mettez le nom du fichier associé au numéro de pièces. Donc 03005.jpg pour la pièce 3005, si vous voulez. Ou n'importe quoi d'autre.

Dans le code je fais :
Chemin = "g:\Users\PC_PAPA\Pictures\______GIFS\Bonhomme\Petites\" ' Donc on déclare le nom du dossier
puis
Image = Application.Index([NumImage], Ligne) ' On récupère le nom en colonne 4.

Puis on ouvre ce fichier qui est à l'emplacement Chemin & Image.

Donc par ex :
Chemin = "g:\Users\PC_PAPA\Pictures\______GIFS\Bonhomme\Petites\"
et
Image="03005.jpg"
Alors on ouvrira le fichier qui est :
g:\Users\PC_PAPA\Pictures\______GIFS\Bonhomme\Petites\03005.jpg
 

elge52

XLDnaute Nouveau
OK. Jusque là il n'y a pas de problème, il m'affiche bien la bonne image. C'est juste à la réinitialisation de la recherche que l'ancienne image ne s'efface pas. j'ai Excel 2015 mais je ne pense pas qu'une commande comme celle-ci n'ait changé dans cette version.
 

Discussions similaires

Statistiques des forums

Discussions
311 729
Messages
2 081 966
Membres
101 852
dernier inscrit
dthi16088