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.

2 réponses

  1. 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
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    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