Macro de mise à jour Photo sous Excel [Résolu/Fermé]

Signaler
Messages postés
4
Date d'inscription
vendredi 8 mars 2013
Statut
Membre
Dernière intervention
9 mars 2013
-
Messages postés
4
Date d'inscription
vendredi 8 mars 2013
Statut
Membre
Dernière intervention
9 mars 2013
-
Bonjour,

Voici le contexte de ma recherche, j'ai trouvé dans le forum plusieurs partie de mon besoin mais je n'arrive pas a les assembler.

Le Contexte
Un fichier excel 2010 dont la première colonne comporte des références numérique unique (nombre de 4 chiffres)
Un dossier sur le disque D appelé "Photo" contenant autant de fichier que de références numérique (le nom du fichier est le nombre référence )

Le Besoin
Est il possible de créer une routine (macro excel) qui lirait chaque cellule de la première colonne afin de coller dans la cellule immédiatement à droite la photo. (Puis passerait a la suivante de la première colonne ainsi de suite jusqu'à rencontrer une cellule vide)
La routine inclurait une mise a la dimension souhaitée de la cellule et de la photo, et "attacher" l'image à la cellule.
Enfin il faut prévoir de lancer cette routine sur demande utilisateur (Bouton Mise à Jour Photo) ce qui sous entant je présume de vider la cellule ayant déjà une photo.
Peut on prévoir le cas ou le fichier photo d'une référence n'est pas disponible et d'écrire dans ce cas "Pas de Photo" dans la cellule.

Merci d'avance pour votre aide.

Cordialement
JPA

5 réponses

Messages postés
9968
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
14 mai 2021
1 142
Bonjour,
j'ai trouvé dans le forum plusieurs partie de mon besoin mais je n'arrive pas à les assembler.
Pouvez-vous préciser ?

Messages postés
4
Date d'inscription
vendredi 8 mars 2013
Statut
Membre
Dernière intervention
9 mars 2013

Bonjour,

J'ai vu un sujet qui traite de l'insertion d'une image
Un autre qui traite de redimensionnement automatique d'image
Un autre de routine en boucle sur une colonne
Etc

Loin d'être un expert en macro VB je ne sais pas combiner des codes présent dans les réponses.

Merci
JPA
Messages postés
16451
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
17 mai 2021
3 172
Bonjour,

Quelque chose dans ce genre ? à adapter :chemin des photos, nombres au lieu de texte pour les ref des photos....

différents formats sont admis: jpg,png, jpeg, gif (possibilité d'autres suffixes); prise en compte du rapport des dimensions

https://www.cjoint.com/?3CjhQXHDQd6

Ne pas ouvrir directement mais télécharger et dézipper

Tu dis

Messages postés
4
Date d'inscription
vendredi 8 mars 2013
Statut
Membre
Dernière intervention
9 mars 2013

Bonjour,

Merci beaucoup a Michel et Mike pour leurs réponses.
Je vais utiliser la solution de Michel qui répond parfaitement au problème.
La solution est tout simplement génial, reste à me l'approprier pour l'adapter à mon contexte.
Je vous souhaite un bon week end

Cordialement
JPA
Messages postés
16451
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
17 mai 2021
3 172
N'hésite pas au cas où :o)

une petite amélioration pour centrer une photo verticale
With Image.ShapeRange 
               .Top = Cellule.Top + 1 
               .Left = Cellule.Left + 1 
                rapport = Round((Image.Width) / 21.16, 0) / Round((Image.Height) / 21.16, 0) 
                If rapport > 1 Then 
                    .Height = Cellule.Height - 10 
                    .Width = Cellule.Width - 2 
               Else 
                    .Height = Cellule.Height - 2 
                    .Width = Cellule.Width - 60 
                    .Left = Cellule.Left + .Width / 4 'centrage vertical 
               End If 
               .LockAspectRatio = msoFalse


et cooriger
mettre les points manquants devant Height
et supprimer .LockAspectRatio = msoFalse dans rapport>1 (redondance)

autre amélioration souhaitable et presque pr^te: enlever les photos existantes au lancement pour permettre suppression et ajout de photos

Tu dis...
Messages postés
4
Date d'inscription
vendredi 8 mars 2013
Statut
Membre
Dernière intervention
9 mars 2013

La "petite" (mais importante) modification fonctionne parfaitement.
Les images du coup sont pile poil au centre :-))

Apres toute cette aide précieuse, je me suis lancer seul dans VB pour associer l'image à la cellule (de sorte qu'en utilisant les filtres on conserve la bonne image au bon endroit)
un truc du genre :
Selection.Placement = xlMoveAndSize
sauf qu'il faudrait que l'image soit sélectionnée et là ça se complique car excel donne comme nom d'image : "Picture x" x étant un nombre qui augmente au fur et a mesure qu'on ajoute des images.
Bref je patauge :-(
Cordialement
JPA
Messages postés
17343
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
12 mai 2021
4 604
Messages postés
9968
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
14 mai 2021
1 142
Bonjour Mike-31,
Très intéressante ta solution, je vais l'étudier.
Amicales salutations.
Salutations.
Le Pingou
Bonjour.
Merci pour l'astuce.
Mais avec 45 000 réferences,ca rsque de devenir lourd non?
Perso:je travail avec la base et l'explorateur win cote à cote sur l'écran.
J'ai crée des dossiers et sous dossiers de 50 docs environ pour limiter le poids.
A+
Messages postés
16451
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
17 mai 2021
3 172
C'est pour cela que si on a plus de quelques images , on évite cette solution et on passe au Vba
la méthode par rechercheV est OK pour des objets d'environ 20 à 30 Ko...