XL 2010 VBA macro - Afficher des photos avec hauteur & largeur fixe\proportionnel

John-87

XLDnaute Nouveau
Bonjour,

Est-ce que quelqu'un serait en mesure de modifier le code ci-dessous pour que les photos affiches soient proportionnel a l'image original et quelle soit maximum la hauteur de 3,57cm et largeur de 6,03cm svp

Code:
Sub ChargeTrombinoscope()
    Dim Chemin As String, Fichier As String
    Dim Nom, Prénom As String
    Dim splitArr() As String
    Dim Ligne As Integer
    Worksheets("Pix").Activate

    'Définit le répertoire contenant les fichiers
    Chemin = "C:\test-20160928\MyPH\"
    'Boucle sur tous les fichiers du répertoire (photos).
    Ligne = 3
    Fichier = Dir(Chemin & "*")
    Do While Len(Fichier) > 0
        'Extraction prénom
         splitArr = Split(Fichier, ".")
         Prénom = splitArr(0)
         Range("H" & Ligne).Value = Prénom
         'insertion de la photo dans la colonne C
          Largeur = ActiveSheet.Cells(Ligne, 11).Width
        Hauteur = ActiveSheet.Cells(Ligne, 11).Height
        GaucheI = ActiveSheet.Cells(Ligne, 11).Left
        HautI = ActiveSheet.Cells(Ligne, 11).Top
        ActiveSheet.Shapes.AddPicture Chemin & Fichier, False, True, GaucheI, HautI, Largeur, Hauteur
        'Fichier suivant
        Fichier = Dir()
        Ligne = Ligne + 1
    Loop
End Sub
 

jecherche

XLDnaute Occasionnel
Bonjour,

Pour les noms des photos, probablement que la recherche ou un variable utilise que le texte et, en numérique, ça bogue; je regarde cela.
Mais avant, j'ai besoin de comprendre le fonctionnement de la feuille "Pix". Pourquoi les colonnes BC versus JI ?
Les menus déroulants de la feuille "Catalog" utilise un champ-nommé "PicTable" lequel faire référence aux colonnes BC (à partir de la ligne 3) de la feuille "Pic".
Tandis que, la macro qui importe les images dépose les noms dans la colonne H de cette même feuille.
Tout ça c'est bien confus pour moi.


Jecherche
 

John-87

XLDnaute Nouveau
Bonjour,

Pour répondre à ta question:

Avant j'ajoutais les photos moi même (une a une) et je devais créer un nom pour chaque photos dans le "Name Box".

Les colonnes H et I servais a ma mise a jour et ensuite je copiais les colonne et je collais dans B et C.

Dans G et J il y a une formule qui me disais si le même nom ou la même image était présente en double. C'était une vérif avant que je colle dans les colonnes B et C.

Maintenant que le procédé est automatisé (enfin presque) je n'ai plus besoin de faire tout le travail manuellement. J'ai plus de 1400 photos... C'est très long faire les mises à jour manuellement!

Je préfère garder ce fonctionnement au cas ou j'ai des modifications manuelle a faire.

Merci énormément de ton aide!
 

jecherche

XLDnaute Occasionnel
Bonjour,

Donc, si j'ai bien compris, on pourrait n'utiliser que les colonnes BC.
Un autre point, incorporer 1400 images, le fichier va devenir très lourd.
Que penses-tu de l'idée que les photos soient dans le dossier et que l'on charge directement les seules photos nécessaires au fur et à mesure des besoins ? En fait, la feuille Pix aurait la liste, mais lors du choix sur la feuille Catalog, au lieu de lire l'image sur la feuille Pix, elle serait lue directement du dossier sur le disque.
En attendant ta réponse, je vais regarder pour les faire toutes se charger dans la feuille Pix.

Je te reviens demain, car ici, c'est proche de ma mise en veille, avant ma mise en veille prolongée. ;)


Jecherche
 

jecherche

XLDnaute Occasionnel
Bonjour,

On m'a brassé la souris, du coup, je suis sorti de la mise en veille prolongée. :p
Voici la dernière version sur laquelle j'ai travaillé ce matin.
Les images s'installent bien sur la feuille "Pix" et le code n'utilise plus que la colonne H.
En sélectionnant la feuille Catalog, menu Formules, Gestionnaire des noms, j'ai automatisé l'adressage de "PicTable" qui est maintenant dynamique, avec le premier item vide (bout de code à la toute fin de la macro d'importation des images). "PicTable" sert au menu dérolant de choix des cellules à fond vert du la feuille "Catalog".
Si les images avaient un nom numérique, comme tu me l'as souligné, ça ne fonctionnait pas.
Je ne suis pas sûr, mais je crois que cela provient qu'un shape doit avoir un nom texte.
En cogitant sur ce point, j'ai pensé à tout simplement ajouter le caractère de soulignement "_" devant le nom de l'image ... en espérant que cela ne pose pas problème ailleurs.


À tester ...


Jecherche
 

Pièces jointes

  • john_ Test_8-Catalog-20160922.xlsm
    427 KB · Affichages: 83
Dernière édition:

jecherche

XLDnaute Occasionnel
Bonjour,

J'ai plus de 1400 photos...

Ce nombre d'images en colonne H de la feuille "Pix", plus toutes celles placées sur la feuille "Catalog", ça doit faire un fichier d'une taille imposante.
Voici une version qui, par le bouton de la feuille "Pix", n'importe que les noms des images, même si ces noms sont entièrement numériques.
Dans la feuille "Catalog", quand on choisit un nom dans les listes déroulante de choix, l'image est lue directement du dossier image.
Comme dans l'autre version, l'image peut être changée ou effacée.
Dans une version ou dans l'autre, dans la feuille "Catalog", on peut supprimer la formule dans les cases réservées aux images. Je crois qu'elles sont maintenant inutiles; elles doivent provenir de tests antérieurs.

À tester ... le fichier plus bas...


Jecherche
 
Dernière édition:

John-87

XLDnaute Nouveau
Super!

1-Il faut que le nom du produit reste intact sans le _ , mais l'image il n'y a pas de problème si son nom contient un _.
Dans Catalogue on peu sélectionner le # de produit, mais plus souvent on connait le # et on le tape (C'est plus rapide).
Si on connais le numéro, on ne veux pas rajouter un _ a chaque fois :(
La liste déroulante sert comme une liste et elle doit être la.

2-Les photos doivent rester dans le fichier Excel. Par exemple, si j'envoie le fichier a quelqu'un par courriel ou par FTP, la personne doit pouvoir voir les photos. En ce moment, le fichier prend les photos mais les enregistres pas dans le fichier.
Si je l'envoie a quelqu'un, les photos affiche une erreur de liaison.
Voir le PDF joint.

3- Les photos doivent être enregistré dans le fichier Excel, pas dans un dossier a part.

Le fichier ne devient pas aussi lourd que l'on peu le penser. Les photos sont fait en basse résolution et sont de quelques ko seulement. En les ajoutant a Excel (qui est un fichier compressé) et en les compressant avec le minimum de ppp, le fichier de 1400 photos est entre 25 et 50 mo.
 

Pièces jointes

  • john_ Test_8-Catalog-20160922.pdf
    210.2 KB · Affichages: 49

jecherche

XLDnaute Occasionnel
Bonjour,

Suivant tes commentaires, j'ai enlevé l'ajout de "_" devant les noms des images.
Le seul problème, qu'il restait à corriger, est le nom numérique d'une image.
J'ai contourné de cette façon : les noms des images, dont les noms numériques, sont écrits dans la colonne H ... dans la colonne I, je copie ce nom en ajoutant un caractère alphabétique "a" ... l'image est nommée avec ce nom de la colonne I ... en sélectionnant un item, ou tapant son nom, dans une cellule verte de la feuille Catalog (sans le caractère "a"), ce nom devient le Target de la macro de recherche ... j'ai créé "LeNom" qui contient le Target plus le même caractère alphabétique "a" ... ainsi, l'image (devenue un shape) est trouvée et se place dans la cellule de destination. Toujours dans la feuille Catalog, si on supprime le nom, l'image s'efface. Si on modifie le nom, l'image change.
J'ai aussi testé avec le répertoire des images non accessible, pour être bien sûr que si le fichier est envoyé ailleurs que les images suivent bien.

Espérant être proche du besoin ...

Jecherche
 

Pièces jointes

  • john_ Test_12-Catalog-20160922.xlsm
    449 KB · Affichages: 56
Dernière édition:

jecherche

XLDnaute Occasionnel
Bonjour,

Je suis bien heureux qu'il fonctionne comme prévu.
350 c'est le quart de 1400, donc 3 mo x 4 = 12 mo.
Si j'ai bien compris, il y a des formules dans les espaces images de la feuille Catalog et je crois que ces formules sont maintenant inutiles. Ça allègera pas beaucoup, mais à 12 mo, tout est est bon à jeter à la mer. :D


Jecherche
 

Discussions similaires

Réponses
4
Affichages
491