Renommer des fichiers en fonction des valeurs d'une colonne

Résolu/Fermé
Louloude74 Messages postés 62 Date d'inscription mercredi 1 août 2018 Statut Membre Dernière intervention 17 avril 2024 - 24 août 2020 à 22:19
Louloude74 Messages postés 62 Date d'inscription mercredi 1 août 2018 Statut Membre Dernière intervention 17 avril 2024 - 25 août 2020 à 21:58
Bonjour à tous,

Je souhaiterais savoir comment faire en VBA pour renommer des fichiers image d'un dossier avec des valeurs qui se trouvent dans une colonne d'une feuille Excel.

J'ai une feuille avec des images. J'ai exportées les images en enregistrant le classeur sous le format web. Cela me donne notamment un dossier avec toutes les images mais celles ci sont nommées image001.png, image002.png, etc... au lieu de la valeur de la cellule.

Par avance merci.

Cdt, Ludwig
A voir également:

2 réponses

cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
25 août 2020 à 08:37
0
Louloude74 Messages postés 62 Date d'inscription mercredi 1 août 2018 Statut Membre Dernière intervention 17 avril 2024 1
25 août 2020 à 21:58
Bonsoir,

Merci beaucoup pour le lien.

Je suis parti sur une autre voix. En effet, dans le dossier sur lequel je travaillais était un échantillon. Sur le fichier de base il existe des lignes sans image et je ne peux pas bêtement dire que l'image001 correspond à la la ligne1.

J'ai alors pris le parti d'exporter l'image via un sharts

J'ai le code suivant :

Dim Fichier, Chemin, Adresse, NomFeuille, Racine As String
Dim sh As Shape, img As Object
Dim ndf, ndf1 As String


Sub extraire_img()

'Je récupre le nom de la feuille active
NomFeuille = ActiveSheet.Name

symbole = "\"

'Je récupre le chemin d'accès du dossier image
Adresse = Application.GetSaveAsFilename(NomFeuille)

If Adresse = faux Then Exit Sub
Racine = Left(Adresse, InStrRev(Adresse, symbole) - 1)

Application.ScreenUpdating = False

'Je boucle sur les images
For Each sh In ActiveSheet.Shapes
If Left(sh.Name, 1) <> "B" Then
'Je récupère le nom à donner à l'image dans la colonne de gauche
ndf = Range(sh.TopLeftCell.Address).Offset(0, -1).Text
'Je récupère le nom de fournisseur la éeme colonne de gauche
fournisseur = Range(sh.TopLeftCell.Address).Offset(0, -2).Text
'Chemin d'accès de l'image
ndf = Racine & symbole & fournisseur & symbole & ndf & ".jpg"
'Chemin d'accès du dossier fournisseur
ndf1 = Racine & symbole & fournisseur
'Je copie l'image du shape
sh.CopyPicture xlScreen, xlPicture
'Création d'un graph afin d'y stocker l'image
Set img = ActiveSheet.ChartObjects.Add(0, 0, sh.Width, sh.Height)
'Je temporise pour faciliter le collage de l'image dans le graph
DoEvents
DoEvents
DoEvents
DoEvents
DoEvents
'Je colle l'image
img.Chart.Paste
'Je vérifie si le dossier fournisseur existe
If Dir(ndf1, vbDirectory) = "" Then
'S'il n'existe pas je le créé
MkDir ndf1
End If
'J'importe l'image dans son dossier fournisseur
img.Chart.Export ndf, "JPG"
'J'efface le graph
img.Delete
End If
Next sh

Application.ScreenUpdating = True

End Sub


Ce code fait exactement ce que je souhaite mais j'ai du ajouter plusieurs doevents car sinon à l'exécution de la macro seules des images blanches étaient exportées. Alors qu'en exécutant le pas à pas ça fonctionnait impeccablement.

Si quelqu'un a une idée pour remplacer les doevents. Je suis preneur.

Encore merci et bonne soirée !!!

Cdt, Ludwig
0