J'ai un petit projet et j'aimerais connaître si cela est faisable.
Dans mon classeur, j'ai environ 5000 produits
Colonne A : #de produit
Colonne B : Nom du fichier de l'image existante -- exemple : 123.jpg
Les images sont situés dans un document sur mon ordinateur.
Colonne C : Le nom du fichier que j'aimerais donner à l'image : produit_en_acier_123.jpg
Le nom en C varie d'un produit à l'autre.
Est-ce quelqu'un pourrait me dire comment faire si c'est faisable.
Re : Modifier nom d'une image dans un dossier à partir de excel
Bonjour,
Oui , ça vole, euk , oui c'est possible
Il faut juste une table d'équivalence quelque part , ou une méthode de construction
l'on suppose avoir dans un onglet references le nom de l'ancienne image et dans la colonne à coté le nom de la nouvelle
le principe
Code:
dim Ancien as string , Nouveau as string
dim Trouve as range
Dim Repertoire as string
Repertoire ="c:\dossier\Images"
Ancien =dir(Repertoire )
Do until Ancien <>""
set trouve = sheets("References").range("B:B").find(ancien, lookat;=xlwhole)
if not trouve is nothing then
nouveau = trouve.offset(0,1)
name Repertoire & ancien as Repertoire & nouveau
end if
Ancien =dir
loop
Il faut juste une table d'équivalence quelque part , ou une méthode de construction
l'on suppose avoir dans un onglet references le nom de l'ancienne image et dans la colonne à coté le nom de la nouvelle
le principe
Code:
dim Ancien as string , Nouveau as string
dim Trouve as range
Dim Repertoire as string
Repertoire ="c:\dossier\Images"
Ancien =dir(Repertoire )
Do until Ancien <>""
set trouve = sheets("References").range("B:B").find(ancien, lookat;=xlwhole)
if not trouve is nothing then
nouveau = trouve.offset(0,1)
name Repertoire & ancien as Repertoire & nouveau
end if
Ancien =dir
loop
Re : Modifier nom d'une image dans un dossier à partir de excel
bonjour ,
et oui , il faut malgré tout en faire une routine ,
J'ai apporté quelques corrections .
Quelques indices me font croire que tu es sous MAC ??????
Code:
Sub Renomme()
Dim Ancien As String, Nouveau As String
Dim Trouve As range
Dim Repertoire As String
Repertoire = "c:\dossier\Images\"
Ancien = Dir(Repertoire)
Do Until Ancien <> ""
Set Trouve = sheets("References").range("B:B").find(Ancien, lookat:=xlWhole)
If Not Trouve Is Nothing Then
Nouveau = Trouve.Offset(0, 1)
Name Repertoire & Ancien As Repertoire & Nouveau
End If
Ancien = Dir
Loop
End Sub
Re : Modifier nom d'une image dans un dossier à partir de excel
Désolé d'encore une fois vous déranger...J'ai ajouté la formule à mon fichier, mais je n'ai vraiment aucune connaissance dans ce domaine...j'ai remis le fichier en pièce jointe.
Effectivement je suis sur mac, mais cette manipulation je la fais sur pc.
A première vue, êtes vous en mesure de me dire ce qui cloche dans mon fichier ?
bonjour ,
et oui , il faut malgré tout en faire une routine ,
J'ai apporté quelques corrections .
Quelques indices me font croire que tu es sous MAC ??????
Code:
Sub Renomme()
Dim Ancien As String, Nouveau As String
Dim Trouve As range
Dim Repertoire As String
Repertoire = "c:\dossier\Images\"
Ancien = Dir(Repertoire)
Do Until Ancien <> ""
Set Trouve = sheets("References").range("B:B").find(Ancien, lookat:=xlWhole)
If Not Trouve Is Nothing Then
Nouveau = Trouve.Offset(0, 1)
Name Repertoire & Ancien As Repertoire & Nouveau
End If
Ancien = Dir
Loop
End Sub
Re : Modifier nom d'une image dans un dossier à partir de excel
Wow merci de ton temps... vs êtes un chic type !
Encore une petite chose. Advenant le cas ou j'ai plusieurs images qui ne sont pas disponible dans le dossier, excel me donne un message d'erreur pour chaque ligne : Fichier non trouvé.
Serait-il possible d'ajouter en D une colonne ou il pourrait être indiqué OUI lorsque l'image a été trouvée/modifiée et NON lorsque celle-ci n'a pas été trouvée...
Re : Modifier nom d'une image dans un dossier à partir de excel
Re ,
Et bien voici,
Code:
Sub Renomme()
Dim Ancien As String, Nouveau As String
Dim Tourne As Long
Dim Repertoire As String
Dim LigneFin As Long
Repertoire = "c:\dossier\Images\"
LigneFin = Sheets("References").range("A" & Rows.Count).End(xlUp).Row
For Tourne = 2 To LigneFin
Ancien = Sheets("References").range("B" & Tourne)
Nouveau = Sheets("References").range("C" & Tourne)
If Dir(Repertoire & Ancien) <> "" Then
Name Repertoire & Ancien As Repertoire & Nouveau
Sheets("References").range("D" & Tourne) = "Oui"
Else
' MsgBox "Fichier non trouvé"
Sheets("References").range("D" & Tourne) = "Non"
End If
Next Tourne
End Sub
Sub Renomme()
Dim Ancien As String, Nouveau As String
Dim Tourne As Long
Dim Repertoire As String
Dim LigneFin As Long
Repertoire = "c:\dossier\Images\"
LigneFin = Sheets("References").range("A" & Rows.Count).End(xlUp).Row
For Tourne = 2 To LigneFin
Ancien = Sheets("References").range("B" & Tourne)
Nouveau = Sheets("References").range("C" & Tourne)
If Dir(Repertoire & Ancien) <> "" Then
Name Repertoire & Ancien As Repertoire & Nouveau
Sheets("References").range("D" & Tourne) = "Oui"
Else
' MsgBox "Fichier non trouvé"
Sheets("References").range("D" & Tourne) = "Non"
End If
Next Tourne
End Sub