Macro extraction de photo

Bonjour à tous,

j'ai besoin de vos lumières.

J'ai un fichier excel qui contient une ligne par boite poser par mes équipes avec toutes les informations techniques correspondante à cette boite. j'ai également toutes les photos de la mise en place, installation et mis en fonctionnement.

J'aimerai pouvoir soritr automatique les photos de ce fichier excel en jpeg et qu'elles aient le nom de la boite + la nature de l'action faite.

Merci d'avance de votre aide.

Bonjour,

Voici une démo simplette : un fichier contenant une liste avec 2 images et 2 intitulés.

Un bouton "Export" à cliquer => création d'un sous-dossier contenant les 2 images individuelles nommées avec les 2 _intitulés correspondants

rq : les images sont exportées en png (en jpg je sais pas faire)

Pierre

89export-images.zip (61.23 Ko)

Bonjour,

merci de ton retour.

tu penses savoir faire la même choses avec plusieurs photo par ligne et qu'elle porte en nom le nom de la ligne + intitulé de colonne ?

Merci d'avance

Même pas peur ... mais à partir d'un fichier exemple que tu vas nous fournir ...

En attendant, 2ème démo avec nom de la ligne + intitulé de colonne

Bonjour,

voici un fichier exemple

l'idée est la suivante :

Avoir un dossier par numéros de boite

dans chaque dossier avoir des photos portant comme nom :

71306/TUM/PT 500225 (PBO) - PHOTO CASETTE 1

71306/TUM/PT 500225 (PBO) - PHOTO CASETTE 2

Mouais,

Tel qu'il a été conçu et complété, ça va être difficile de faire qqchose de correct.

Il y a des décalages, ... c'est moisi ...

Voici un résultat (pourri), pas sûr que j'arrive à mieux sur ce coup là

Pierre

quoi comme décalage ?

Ouf!

En utilisant une méthode un peu plus complexe, il me semble qu'on arrive à un résultat plus convenable.

Est-ce que c'est mieux?

Pierre

Bonjour

Nickel

peux tu m'expliquer ton code stp car j'ai plein d'autre fichier du même style

Merci d'avance

et ceci ne marche plus si les photos sont de plus grosse tailles et si il y a plus de ligne dans le fichier

Bonjour,

Alors le principe général c'est d'enregistrer le fichier au format web.

Ça permet d'avoir un dossier contenant l'ensemble des images contenues dans le fichier excel.

Mais ces images sont nommées image001.png, image002.png, ...

Il faut donc récupérer :

* la liste des image001.png, image002.png, ... contenues dans le dossier

* la liste des noms des images contenus dans la feuille Excel

* une table de correspondance du genre :

  • image001.png correspond à c41030f379455pu380975_20200309150147_000.jpg
  • image002.png correspond à etc ...

Les 2 premières listes sont faciles à récupérer, il suffit de boucler sur le dossier pour l'une et boucler sur la feuille pour l'autre.

Pour la table de correspondance : l'enregistrement au format web nous donne un fichier "sheet001.htm".

C'est un fichier html dans lequel il suffit de pointer sur les .png et les .jpg immédiatement placés à la suite. Ce qui nous donne les couples de valeurs recherchées.

Avec tous ces éléments, il ne reste plus qu'à boucler sur la liste des png et pour chacune on cherche dans la table de correspondance pour y trouver le nom du jpg, ce qui nous donne l'emplacement sur la feuille (TopLeftCell.Address), donc la ligne et la colonne.

On a plus qu'à renommer le png avec "entête de ligne + entête de colonne"

(au passage on remplace les / par des _ car Windows n'autorise pas les / dans les noms des fichiers)

Une fois les fichiers renommés, on fait du ménage en effaçant les autres fichiers qui ne servent plus

Et on ré-enregistre le fichier au format xlsm (ce qu'on pourrait d'ailleurs faire avant traitement des .png)

Et voilà!

Ceci étant dit, la limite de la méthode est d'obtenir des images peu lisibles car ce sont des miniatures des jpg d'origine.

Et j'ai vu que le sheet001.htm contient les adresses http de ces images qu'il est tout à fait possible de télécharger.

Du genre :

https://www.kizeoforms.com/data/medias/secure/R3pWYk0yaWFzNko2ZndHcWl0Rm5qWU14cDlyOTV0QkxuTDVQM0ZpYXVXZk1sUEtkOE81eDJ1OVFHNVBTNm9oKythUHhXeGZqdEMyY2JVY0xJMzMrWU9wd2xpSE9ZZVpFL3o2dlh6NnRnWWs9

Je suis donc en train de voir :

1/ comment récupérer l'ensemble de ces adresses

2/ comment relier ces adresses à un nom de fichier du type : c41030f379455pu380975_20200309150147_000.jpg

3/ et enfin comment les télécharger, les copier dans un dossier et les renommer

A suivre donc ... peut être ... à moins que les miniatures suffisent?

Et vive le confinement!!

Pierre

et ceci ne marche plus si les photos sont de plus grosse tailles et si il y a plus de ligne dans le fichier

Le code de la démo proposée est écrit pour les spécificités du fichier exemple indiqué. Pour d'autres fichiers il faut probablement adapter la méthode ...

Et c'est pas gagné d'avance ...

Bon courage pour la suite

Pierre

Voici un code pour récupérer un tableau de correspondance "lien http<=>nom de jpg"

Function Corresp_Liens()
Dim S As String, S2 As Variant
Dim T As Variant, idx As Integer, i As Integer

    idx = 1
    ReDim T(1 To 2, 1 To idx)
    S = Lire_Txt(ThisWorkbook.Path & "\Img_fichiers\sheet001.htm")

    S2 = Split(S, "href=""")
    For i = 1 To UBound(S2)
        If InStr(S2(i), "kizeoforms") > 0 Then
            T(1, idx) = Split(S2(i), """")(0)
            On Error Resume Next
            T(2, idx) = Split(Split(S2(i), ">")(2), "<")(0)
            On Error GoTo 0
            idx = idx + 1
            ReDim Preserve T(1 To 2, 1 To idx)
        End If
    Next i
    Corresp_Liens = Application.Transpose(T)
End Function
Rechercher des sujets similaires à "macro extraction photo"