Aide pour dérouler des cellules avec image dynamiques

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Anthonymctm

XLDnaute Occasionnel
Bonjour,

J'ai besoin d'aide sur Excel 2016 dernière version.

Après avoir regarder plusieurs tuto concernant les images dynamiques et l'outil appareil photo, je suis parvenu à extraire une image issue d'une liste d'images mais je cherche à pouvoir étendre cette extraction (avec selection/glisser ou copier/coller) et c'est là que je sèche.

Explication :

Sur un onglet j'ai une liste de produit avec plusieurs caractéristiques dont une image associée.
Sur un autre onglet je souhaite générer les étiquettes associées à ces produits.
Sur ces étiquettes il y a plusieurs champs de la liste des produits de l'onglet 1 qui revient. Ça je le gère facilement en indiquant le numéro de la ligne associé et en utilisant la recherche V.
Mais pour l'image c'est une autre paire de manche.

Je suis donc parvenu a copier l'image associée au numéro de la ligne avec appareil photo, recherche V, fonction indirect et gestion des noms.
Mais quand je duplique mon étiquette tous les champs s'adaptent sauf l'image puisque elle ne change pas de nom puisque l'emplacement du nom doit être verrouillé avec des $. Quand je change manuelle le numéro de ligne, l'image change mais je veux pouvoir voir toutes les étiquettes (pas seulement une par une).

Vous trouverez le fichier épuré en pièce jointe.

En vous remerciant pour votre aide !!

Anthony
 

Pièces jointes

Bonjour Job75 et la communauté !

Je reviens sur ce topic pour vous demander s'il est possible pour moi d'ajuster la taille des images ? (sans les modifier une par une sur ma liste)

L'image est en C5 on pourrait imaginer qu'elle prenne le maximum de place entre C5😀5 en gardant son ratio initial et en se limitant à la direction la plus limitante (si j'arrive au maximum de ma hauteur je stoppe).

Sinon l'utilisation d'un zoom serait déjà pas mal ! 🙂

Je vous joins mon fichier actualisé si vous souhaitez m'aider sur ça
 

Pièces jointes

Dernière édition:
Bonjour Anthonymctm,

Fichier joint avec ce code à la fin de la macro 'Actualiser' :
VB:
'---dimensions et positions des images---
For Each pic In Pictures
    Shapes(pic.Name).LockAspectRatio = msoTrue
    pic.Height = pic.TopLeftCell.Height
    If pic.Width > Columns("C:D").Width - 10 Then pic.Width = Columns("C:D").Width - 10
    pic.Top = pic.TopLeftCell.Top
    pic.Left = Columns("C").Left
Next
Il augmente notablement la durée d'exécution.

A+
 

Pièces jointes

Super de mieux en mieux.

J'ai l'impression que cette partie ne fonctionne pas sur quelques images. Sur mon Excel le EC0303 ne se redimensionne pas alors que sur le votre c'est le EC0303 et EC1101.

Aussi, j'ai essayé de modifier le code pour que ce soit le coté droit de l'image qui se colle au coté droit de la colonne D, j'ai fait
pic.Right = Columns("D").Right mais ça n'a pas fonctionné 🙁

Aussi, j'aurai aimé faire que toutes les images soient en arrière plan, que les lignes et le code barre passe par dessus si jamais elles dépassent. (moins important)
 
Le non-dimensionnement des images pour EC0303 et EC1101 était dû à une mauvaise numérotation des images.

Il faut donc d'abord les renommer correctement, voyez le fichier (2) avec ce code :
VB:
'---les images sont renommées---
For i = 1 To Pictures.Count
    Pictures(i).Name = "µ" & i 'nom provisoire
Next
For i = 1 To Pictures.Count
    Pictures(i).Name = "P" & i 'nom définitif
Next
Pour l'alignement à droite des images il suffit d'utiliser :
VB:
    pic.Left = Columns("E").Left - 10 - pic.Width 'alignement à droite avec marge de 10 points
Perso je trouve que c'est moins bien qu'avec l'alignement à gauche...
 

Pièces jointes

Oui finalement, en jouant sur la largeur des colonnes je préfère aussi à gauche.

Au moins je sais comment faire si j'aurais d'autres macro du même types à faire.

Encore un grand merci, j'aurais jamais pu trouver tout ça tout seul ! 😳

Ca me donne envie d'en apprendre davantage sur le VBA
 
ok, alors je viens de tenter :
VB:
pic.Left = Columns("D").Left + (pic.TopLeftCell.Width - pic.Width) / 2

puis
VB:
pic.Left = Columns("D").Left + (pic.TopLeftCell.Width - pic.Width)

puis
VB:
pic.Left = Columns("D").Left - (pic.TopLeftCell.Width - pic.Width) / 2

pour finalement comrpendre qu'il fallait faire
VB:
pic.Left = Columns("D").Left - (pic.Width / 2)
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
762
Réponses
39
Affichages
5 K
Retour