Renommer des fichiers en fonction des valeurs d'une colonne
Résolu
Louloude74
Messages postés
62
Date d'inscription
Statut
Membre
Dernière intervention
-
Louloude74 Messages postés 62 Date d'inscription Statut Membre Dernière intervention -
Louloude74 Messages postés 62 Date d'inscription Statut Membre Dernière intervention -
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
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:
- Renommer une colonne excel
- Déplacer une colonne excel - Guide
- Trier colonne excel - Guide
- Formule somme excel colonne - Guide
- Liste déroulante excel - Guide
- Renommer des fichiers en masse - Guide
2 réponses
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 :
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
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