Insertion d'image en fonction du résultat d'une celulle ( +20 000 résultats possible)

gifi

XLDnaute Nouveau
Bonjour,

Je cherche à faire un document afin d'aider les opérateurs à faire une opération.
Savoir où agrafer une pièce.

En fonction de la référence de la pièce 2 choix existes :
- agrafage en bout
- agrafage spécial à la pièce
J'ai créé un document qui me permet d'analyser si la référence de la pièce appartient aux pièces classique (agrafage en bout) ou si elle fait partie des exceptions (agrafage spécial).

Je l'indique via une case dont la formule est la suivante :
=SI(ESTNA(RECHERCHEV(A2;'liste pièce critiques'!A:B;2;0));"AGRAFAGE A DEFINIR";RECHERCHEV(A2;'liste pièce critiques'!A:B;2;0))

Colonne A, j'ai toutes les références de pièces, Colonne B j'ai la situation de la pièce "en bout OU spécial" je prends aussi en compte grâce a la formule une pièce qui arriverait pour la première fois.

Maintenant que l'opérateur sait si c'est un agrafage classique (en bout) ou spécial. J'aimerais qu'une image s'ouvre en fonction de la pièce. En tournant un peu sur le forum, j'ai trouvé un code VBA pour la création de la fonction image.
le voici :
Function Image(img_nom As Variant, Optional chemin As String = "") As String
' Declaration des variables
Dim ref As Range, sh As Shape, drap As Boolean
' ref : la cellule qui provoque la fonction
' sh : les shapes
' Drap : drapeau definissant si la shape est trouvée
Application.Volatile ' defini une fonction qui se recalcule automatiquement
' teste le type de variable soit une cellule soit une valeur alphanumerique
Select Case TypeName(img_nom)
Case "Range" ' c'est une reference cellule
Image = img_nom.Value
Case "String" ' c'est une valeur alphanumerique
Image = img_nom
Case Else ' c'est une erreur
Image = "#ERROR"
Exit Function
End Select
' le chemin est un parametre optionnel, s'il est omis, la valeur est le chemin du classeur
If chemin = "" Then chemin = ThisWorkbook.Path
' le chemin ne se termine pas forcemment par \ je le rajoute
If Right(chemin, 1) <> "\" Then chemin = chemin & "\"
Set ref = Application.Caller ' affectaction à ref de la cellule qui lance la fonction
If ref.MergeCells = True Then Set ref = Range(ref.MergeArea.Address)
drap = False ' initialisation du drapeau
For Each sh In ref.Worksheet.Shapes ' je passe en revue toute les shapes
' je teste son nom construite plus bas pour savoir si c'est la bonne shappe
If "Img-" & ref.Address = Left(sh.Name, Len(ref.Address) + 4) Then drap = True: Exit For
Next
If drap = True Then ' c'est la bonne shape
' je teste maintenant si c'est la meme que celle de la formule pour ne pas refaire le traitement
' Le gain de temps n'est pas negligeable
If "Img-" & ref.Address & "-" & Image = sh.Name Then GoTo fin ' egalité parfaite, je sors
End If
On Error Resume Next ' controle d'erreur, si la shape n'existe pas encore, l'instruction suivante provoque une erreur
sh.Delete ' je detruits la shap
If Image = "" Then Exit Function ' la valeur est à "" alors pas de shape à affecter
' j'inserre la shape, avec l'image en lui mettant les tailles necessaires pour la cellule
Set sh = ref.Worksheet.Shapes.AddPicture(chemin & Image, True, True, ref.Left, ref.Top, ref.Width, ref.Height)
sh.Name = "Img-" & ref.Address & "-" & Image ' je definis son nom pour la trouver plus tard
fin:
Image = "Img" & ref.Address ' j'affecte un nom pour resultat
End Function

La fonctionne fonctionne très bien mais ne correspond pas entièrement à mon besoin.
En effet ayant plus de 20 000 références, je souhaiterais avoir un raccourci pour les données d'entrée de la fonction.

Image("NOM DE LA PHOTO.jpg",EMPLACEMENT)

Serait-il possible de lire le numéro de la pièce qui se trouve case A2 et se servir de la valeur de la case A2 (Attention c'est deja une formule) pour que le NOM DE LA PHOTO change automatique.

Je pense qu'il faut changer le paramétrage des données d'entrées de la fonction Image, afin qu'elle accepte "Valeur de la case A2" et qu'elle se serve de cette valeur pour aller chercher dans l'EMPLACEMENT.

En espérant avoir été compréhensible :S

Merci pour votre aide !
 

Lone-wolf

XLDnaute Barbatruc
Re : Insertion d'image en fonction du résultat d'une celulle ( +20 000 résultats poss

Bonsoir gifi et bienvenue sur le Forum. :D

En pièce jointe: regarde si ça peut te convenir. À partir de A2 écrit (choisi parmi) les noms qui sont inscrits(pour rappel). Sinon, il faut mettre en pièce jointe ton fichier.

Serait-il possible de lire le numéro de la pièce qui se trouve case A2 et se servir de la valeur de la case A2 (Attention c'est deja une formule) pour que le NOM DE LA PHOTO change automatique.

On veux bien t'aider mais on est pas devins ;) .

EDIT: Le nom des images doit imperativement correspondre au nom iscrit sur la feuille, sinon la macro ne vas rien trouver. Celle-ci se trouve dans le module de la feuille.

EDIT2: En Image


Module_Feuille.gif





A+ :cool:
 

Pièces jointes

  • Insertion Images.zip
    55.4 KB · Affichages: 47
  • Insertion Images.zip
    55.4 KB · Affichages: 37
Dernière édition:

gifi

XLDnaute Nouveau
Re : Insertion d'image en fonction du résultat d'une celulle ( +20 000 résultats poss

Bonjour,

@ Lone-wolf
Je ne vois pas comment fonctionne ton document.

Voici le mien :


Merci pour votre aide.
 

Pièces jointes

  • Test_Agrafage.zip
    261.9 KB · Affichages: 32

Discussions similaires

Réponses
7
Affichages
668
Compte Supprimé 979
C
Réponses
19
Affichages
2 K

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof