XL 2013 Affichage de photos dans des cellules en fonction de la valeur des cellulles

vds92

XLDnaute Nouveau
Bonsoir
Je lance une bouteille à la mer sur ce forum car je me prends la tête depuis des jours pour cette manip.
Je sais que vos lumières vont m'éclairer !

Dans le fichier joint, vous verrez deux onglets : [Liste des produits] (catalogue) et [Commande].
Dans l'onglet [Liste des produits], il a une liste avec la marque, le code, la photo et le prix correspondant à chaque article.
Dans l'onglet [Commande], je sélectionne dans la colonne B, le code du produit que souhaite le client à partir du menu déroulant dans les cellules de la colonne B.
La marque et le prix sont alors directement importés avec une recherchev classique.
Jusque là ça roule.

Mon problème est que je souhaite afficher aussi dans la colonne D les photos des produits sélectionnés dans la colonne B.
Auriez-vous une idée de comment faire cela sans passer par une macro ?

Merci d'avance de vos éclairages excelliens !
Bonne soirée.
 

Pièces jointes

  • test_cde_produits.xlsx
    50.3 KB · Affichages: 20

vds92

XLDnaute Nouveau
Bonjour JHA.
Merci pour ce message.
Cependant je dois être encore mal réveillée, je ne vois pas la section mentionnée dans le site.
Par ailleurs il me semble que ce qui est proposé est en VBA.

Y a-t-il une façon de le faire sans VBA ?

Merci d'avance.
VDS
 

JHA

XLDnaute Barbatruc
Bonjour à tous,

Sans macro, cela va être compliqué.
1608026285769.png


JHA
 

vds92

XLDnaute Nouveau
Bonjour JHA,
Merci pour le message.
Je pense que la macro dont j'ai besoin correspond à :

DVimage.GIF


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 8 And Target.Count = 1 Then
'-- suppression
For Each s In ActiveSheet.Shapes
If s.Type = 13 Then
If s.TopLeftCell.Address = Target.Offset(0, 1).Address Then
s.Delete
End If
End If
Next s
'--
If Target <> "" Then
Sheets("Images").Shapes(Target).Copy
Target.Offset(0, 1).Select
ActiveSheet.Paste
Selection.ShapeRange.Left = ActiveCell.Left + 7
Selection.ShapeRange.Top = ActiveCell.Top + 5
Target.Select
End If
End If
End Sub

Malheureusement, je n'y connais rien en langage VBA... Pouvez-vous m'expliquer comment l'utiliser pour mon exemple et/ou comment décrypter les phrases VBA pour que je sache comment remplacer les infos pour mon exemple ?
Par ailleurs, suffit-il d'enregistrer cette macro pour qu'elle s'exécute dans le fichier ou faut-il créer un bouton ?

Merci d'avance de votre aide !
Bonne journée.
Vera

PS : Si jamais un autre internaute a une suggestion sans VBA je suis toujours preneuse ! Merci de votre aide !
 

Temjeh

XLDnaute Accro
Supporter XLD
Bonjour
Oui étant donné ton expérience du VBA, surtout sans fichier démo ce sera difficile pour toi.
Non ce n'est pas une macro mais un code à mettre dans la feuille.
Après une modification dans la colonne 8, il exécute le code, delete et copy les images qui sont en feuille Images.

Par-contre sans macro GoogleSheets en ligne le fait très bien.
Je l'utilise déjà.

Sur je donne un lien permanent a mon image
Dans ma feuille Liste en Colonne C j'y met l'adresse de la photo.
Dans cette feuille liste en colonne B un nom que j'attribut à mon image sur même ligne

Dans ma feuille exemple en A1 j'y met cette formule
=iMAGE(INDIRECT("Liste!C"&EQUIV(B1;Liste!B:B;0));2)

En B1 j'y met le nom de l'image (par validation) et en A1 il affiche l'image.

Assez simple mais efficace
Si en ligne se n'est pas possible, joint un fichier explicatif avec tes images
L'aide arrivera à coup sûr.

A+
 
Dernière édition:

vds92

XLDnaute Nouveau
Bonjour
Oui étant donné ton expérience du VBA, surtout sans fichier démo ce sera difficile pour toi.
Non ce n'est pas une macro mais un code à mettre dans la feuille.
Après une modification dans la colonne 8, il exécute le code, delete et copy les images qui sont en feuille Images.

Par-contre sans macro GoogleSheets en ligne le fait très bien.
Je l'utilise déjà.

Sur je donne un lien permanent a mon image
Dans ma feuille Liste en Colonne C j'y met l'adresse de la photo.
Dans cette feuille liste en colonne B un nom que j'attribut à mon image sur même ligne

Dans ma feuille exemple en A1 j'y met cette formule
=iMAGE(INDIRECT("Liste!C"&EQUIV(B1;Liste!B:B;0));2)

En B1 j'y met le nom de l'image (par validation) et en A1 il affiche l'image.

Assez simple mais efficace
Si en ligne se n'est pas possible, joint un fichier explicatif avec tes images
L'aide arrivera à coup sûr.

A+
Bonsoir,
J'ai réussi à créer cela sur un petit fichier en utilisant la formule ci dessus pour un fichier qui contenait les images dans un des onglets.
Par contre, j'ai un autre fichier du même style à faire avec 200 images à incorporer. Les images ne sont pas dans un onglet de ce même fichier mais dans un fichier séparé qui comprends 5000 images. La formule ne fonctionne pas lorsqu'on fait référence à un onglet dans un autre fichier.
Je ne peux malheureusement pas importer cet onglet avec les images car il est trop lourd (même avec des images compressées) et ralenti considérablement le traitement lorsqu'il est dans le même fichier.

Quelqu'un aurait-il une idée pour pouvoir faire la même chose avec une référence aux images qui se trouvent dans un onglet séparé ?

Merci de votre aide.
Bonne soirée.
 

Discussions similaires

Réponses
4
Affichages
191

Statistiques des forums

Discussions
312 164
Messages
2 085 877
Membres
103 008
dernier inscrit
Ichaka