Macro Excel: renommage de fichiers

printfx000 -  
lermite222 Messages postés 9042 Statut Contributeur -
Salut,

Dans mon espace de travail, j'ai des documents avec des pièces jointes qui leur sont attachés, le tout étant bien sûr répertorié dans une base access.

Les documents ainsi que les pièces jointes peuvent être de type .pdf, .doc, ou .zip.

Les pièces jointes ne sont pas forcément en 'similitude' avec le document auquel il est rattaché, que ce soit au niveau du nom ou du format.
(Ex: le Document Banane.pdf peut avoir comme pièce jointe Stylo.doc).


je souhaiterais faire la chose suivante avec une macro excel: renommer toutes les pièces jointes selon le nom des documents auquels elles sont rattachées en conservant leurs formats initiales (=pas en leur donnant le format du document).

(Ex: Renommer "Stylo.doc" en "Banane - Attachment.doc"
ET PAS en "Banane - Attachment.PDF" )

Comment faire ?

Merci de vos réponses.





A voir également:

2 réponses

Utilisateur anonyme
 
Bonjour,

Déjà, il te faut une macro pour parcourir un dossier :

Voici une base à adapter à tes besoins :

Sub ChercheFichier()

    Const cteRepertoire = "C:\Documents Local\"
    Const cteDestination = "C:\Documents Local\Tempo\"
    Const cteTexte = "xls"
    
    Dim varFichier As Variant
    
    varFichier = Dir(cteRepertoire, vbDirectory)    ' Extrait la première entrée.
    
    Do While varFichier <> ""    ' Commence la boucle.
        ' Ignore le dossier courant et le dossier
        ' contenant le dossier courant.
        If ((varFichier <> ".") And (varFichier <> "..")) Then
            ' Utilise une comparaison au niveau du bit pour
            ' vérifier que varFichier est un dossier.
            If ((GetAttr(cteRepertoire & varFichier) And vbDirectory) = vbDirectory) Then
                'MsgBox "Dossier : " & varFichier ' Affiche l'entrée si dossier.
                DoEvents
            Else
                MsgBox "Fichier : " & varFichier ' Affiche l'entrée si fichier.
                If (InStr(1, varFichier, cteTexte, vbTextCompare) > 0) Then
                    FileCopy cteRepertoire & varFichier, cteDestination & varFichier
                    Kill cteRepertoire & varFichier
                End If
            End If
        End If
        varFichier = Dir    ' Extrait l'entrée suivante.
    Loop
    
End Sub
'


Ensuite il te faudra batir le nom du fichier [ varFichier ] avec les valeurs
que tu souhaites.

Si tu as de la difficulté, ya ka demander :-)

Cdt

Lupin
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Bonjour,
Ta question est pas clair du tout...
Tu ne peu pas changer l'extention du fichier, sinon ça marchera plus, mais pour changer le nom...
Si tu connaît le nom du fichier la fonction est ...
    Name "Stylo.doc" As "banane.doc"

Pas oublier de préciser le chemin dans les deux cas.
 name "C:\Test1\Stylo.doc" as "C:Test\Banane.doc"

Si tu veux en faire une copie dans un autre répertoire...
 name "C:\Test1\Stylo.doc" as "C:\TestBis\Banane.doc"

A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
0