Macro de mise à jour Photo sous Excel

Résolu
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

  1. Bonjour,
    j'ai trouvé dans le forum plusieurs partie de mon besoin mais je n'arrive pas à les assembler.
    Pouvez-vous préciser ?

    0
    1. 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
      0
      1. Contributeur
        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

        0
        1. 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
          0
        2. Contributeur
          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...
          0
        3. 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
          0
      2. 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+
        0
        1. Contributeur
          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...
          0