Adaptation macro Renomme fichiers 2003 vers 2010

Brigitte

XLDnaute Barbatruc
Bonjour,

J'avais habitude d'utiliser une macro de jb (boisgontier) sous excel 2003 pour renommer des fichiers (de tous types : xls, jpg...). Le principe est d'ouvrir le fichier de jacques, de cliquer sur "ouvrir répertoire", faire ok... ca liste les fichiers dudit répertoire...

Mais là où j'ai un souci, c'est que cette macro semble ne pas pouvoir aller dans les sous répertoires depuis que j'utilise Excel 2010.

Rien à faire, quand je clique sur "ouvrir répertoire" et vais chercher un sous sous-répertoire, ca ne liste que ce qui est à la racine, rendant caduque le listage...

Y aurait-il qqchse dans le code qui soit incompatible entre 2003 et 2010, est-ce adaptable ? Si d'aventure qqun passait par là ayant les deux versions et pouvant tester, et me dire si possible d'évoluer... ce serait cool, j'adorais cette macro.

Merci à vous.

CODE :

Code:
Sub ListeFichiers()
  Range("A2:C65000").ClearContents
  [E12].ClearContents
  ChDir ThisWorkbook.Path   ' répertoire de l'appli
  dossier = ChoixDossier()
  If dossier = "" Then Exit Sub
  ligne = 2
  nf = Dir("*.*")           'premier fichier xls
  Do While nf <> ""
    Cells(ligne, 1) = nf
    Cells(ligne, 2) = FileDateTime(nf)
    ligne = ligne + 1
    nf = Dir                  ' suivant
  Loop
End Sub

Je précise que le fichier est un fichier excel 2003 (xls). Et la mention 'premier fichier xls n'a pas d'importance, ca liste bien tous les fichiers sous 2003.
 

Pièces jointes

  • 1 Copie de jb-ListeFichiersRepertoireRenomme2.xls
    97 KB · Affichages: 132
  • 1 Copie de jb-ListeFichiersRepertoireRenomme2.xls
    97 KB · Affichages: 133
  • 1 Copie de jb-ListeFichiersRepertoireRenomme2.xls
    97 KB · Affichages: 135
Dernière édition:

Brigitte

XLDnaute Barbatruc
Re : Adaptation macro Renomme fichiers 2003 vers 2010

Ah zut... alors ca sert à rien que je prenne ton bout de code, re case départ... car mon but est de faire le changement depuis excel... car liste les répertoires, j'ai d'autres macros pour ca... ce n'est pas mon but, snif... j'ai une macro super de mydearfriend pour lister les fichiers et mettre leurs taille, date...

Ici, il faut lister, certes, et donc j'étais contente que tu y arrives (comme j'y arrive sous 2003) mais le but est ensuite :

- de double cliquer sur tout ou partie des fichiers lister, pour les lister en colonne C
- soit à la main, de renommer certains ou tout
- soit en ajoutant un texte en cellule orange

- puis faire "modifie noms" pour modifier sous l'explorateur...

Plus rapide que de renommer des photos une par une.

Merci quand même
 

Brigitte

XLDnaute Barbatruc
Re : Adaptation macro Renomme fichiers 2003 vers 2010

Bonsoir,

Yessssssssssss, ca marche... je vois que tu as rajouté une colonne qui liste les fichiers avec leur répertoire, c'est comme ca que t'as rusé ?

T'es trop forte !

Mille mercis, tu me sauves la vie... Après pourquoi est ce que le fichier d'origine qui marchait sur 2003, marche pas sur 2010, je suis trop neuneu pour voir la différence ou la nécessité des changements, mais le résultat est là.

Merci aussi à Pierre qui a planché, à David qui m'a expliqué des choses et a bien cherché...

Bisous à tous.
 

Marlysa

XLDnaute Nouveau
Re : Adaptation macro Renomme fichiers 2003 vers 2010

Bonsoir,

Yessssssssssss, ca marche... je vois que tu as rajouté une colonne qui liste les fichiers avec leur répertoire, c'est comme ca que t'as rusé ?

T'es trop forte !

Mille mercis, tu me sauves la vie... Après pourquoi est ce que le fichier d'origine qui marchait sur 2003, marche pas sur 2010, je suis trop neuneu pour voir la différence ou la nécessité des changements, mais le résultat est là.

Merci aussi à Pierre qui a planché, à David qui m'a expliqué des choses et a bien cherché...

Bisous à tous.

Ravi que ça te convienne.:rolleyes:
Pour La colonne D, tu peux la masquer ça devrait aussi marcher.

Reste à nettoyer un peu le code (Je pense qu'il y a quelques lignes qui servent pas vraiment) et surtout de déclarer les variables au début, ça évite les incompatibilités entre versions.

Pour la compatibilité entre 2003 et 2010, c'est pour moi que ta macro utilise des commandes non intégrées dans Excel [Name, ChDir, Dir, ...]. Pour le moment ça fonctionne mais si MSoft oblige à un minimum de rigueur dans la rédaction du code VBA, elle risque de ne plus trop bien marcher.
 

Brigitte

XLDnaute Barbatruc
Re : Adaptation macro Renomme fichiers 2003 vers 2010

Merci en tout cas...

Mais tu penses que 2010 ne connait pas :

Pour la compatibilité entre 2003 et 2010, c'est pour moi que ta macro utilise des commandes non intégrées dans Excel [Name, ChDir, Dir, ...].

Ce serait énorme !! Quelqu'un confirme ca ? Pourtant il me semble que j'ai des macros abouties (pas faites par moi bien sûr) qui doivent avoir tout ca dans le code... Faudra que je regarde de plus près.

Merci en tout cas.
 

Marlysa

XLDnaute Nouveau
Re : Adaptation macro Renomme fichiers 2003 vers 2010

Ce que je veux dire c'est que ce ne sont pas des fonctionnalités native de Excel mais font appel à des Dll du système d'exploitation (D'ou les blem avec les version 64bits ou beaucoup de macro ne sont plus compatibles et il faut redéfinir les Dll à utiliser au début du code ...)
Je pense par exemple qu'il y a un risque (faible certe mais il existe) que tes macros ne puissent pas tourner sous mac.

Par contre pourquoi ton ancien code ne fonctionne pas sous 2010, ça je ne sais pas vraiment ...
 

david84

XLDnaute Barbatruc
Re : Adaptation macro Renomme fichiers 2003 vers 2010

Re Brigitte (le bonjour à pierrejean, Marlyssa et papou),
chez moi ton fichier initial fonctionne correctement à partir du moment où tu modifies la macro Ajout Texte comme je te l'ai précisé dans mon 1e message.
Concernant la macro proposée par Marlyssa cela fonctionne chez moi. Par contre cela plante lorsque, après avoir fait fonctionner la macro Ajout Texte que je t'ai proposé (donc remplacer la macro initiale), je veux faire fonctionner la macro Modifier noms proposée par Marlyssa. Je l'ai modifié comme suit :
Code:
Sub modifieNom()
For Each c In Range([A2], [A2].End(xlDown))
   If c.Offset(0, 2) <> "" Then
     oldname = c.Offset(0, 3).Value & "\" & c.Value
     newname = c.Offset(0, 3).Value & "\" & c.Offset(0, 2).Value
     Name oldname As newname
    End If
Next c
End Sub
et cela fonctionne.
A+
 

JNP

XLDnaute Barbatruc
Re : Adaptation macro Renomme fichiers 2003 vers 2010

Bonjour le fil :),

Une autre façon de voir les choses :
2 choix : suppression de tout ce qui n'est pas chiffre collés à l'extension ou pas.
Insertion du préfixe saisi.
Choix des fichiers à renommer.

Comportement :
3 possibilités (préfixe "Barcelone") :
Choix de garder les noms de fichier :
"IMG_127.jpg" devient "Barcelone IMG_127.jpg"
Suppression hors N° :
Avec N° :
"IMG_127.jpg" devient "Barcelone 127.jpg"
Sans N° :
"Compte.xls" devient "Barcelone 000.xls" (compteur incrémenté)
Pour le préfixe, il est nettoyé des caractères interdits et prévient s'il est modifié pour validation par l'utilisateur :
"Barcelone 03/05/2011" sera proposé comme "Barcelone 03052011"
Enfin, si 2 fichiers avec N° porte le même N°, le traitement est interrompu.

Le mieux est de mettre le code dans les macros personnelles et de l'appeler avec un équivalent clavier :p...

Si vous voyez un défaut, n'hésitez pas à me le signaler :rolleyes:...

Code:
Sub ChangeNoms()
Dim Réponse As Byte, Préfixe As String, fd As FileDialog, vrtSelectedItem As Variant, Temp
Dim ATraiter As String, Validé As Byte, Compteur As Integer
Réponse = MsgBox("Ne garder que le N° ?", vbYesNo + vbInformation, "Ancien nom de fichier")
Recommence:
Préfixe = InputBox("Préfixe à ajouter ?", "Préfixe")
If Préfixe = "" Then Exit Sub
If Len(Préfixe) <> Len(Validation(Préfixe)) Then
    Validé = MsgBox("Le préfixe n'est pas valide, acceptez-vous " & Validation(Préfixe) & " ?", vbYesNo + vbCritical, "ATTTENTION !")
    If Validé = vbNo Then GoTo Recommence Else Préfixe = Validation(Préfixe)
End If
Set fd = Application.FileDialog(msoFileDialogFilePicker)
On Error GoTo GestErreur
With fd
    .AllowMultiSelect = True
    If .Show = -1 Then
        For Each vrtSelectedItem In .SelectedItems
            If Réponse = vbNo Then
                Temp = Split(vrtSelectedItem, "\")
                Temp(UBound(Temp)) = Trim(Préfixe) & " " & Temp(UBound(Temp))
                Name vrtSelectedItem As Join(Temp, "\")
            Else
                Temp = Split(vrtSelectedItem, "\")
                ATraiter = Temp(UBound(Temp))
                If Left(Nettoyage(ATraiter), 1) = "." Then
                    Temp(UBound(Temp)) = Trim(Préfixe) & " " & Format(Compteur, "000") & Nettoyage(ATraiter)
                    Compteur = Compteur + 1
                Else
                    Temp(UBound(Temp)) = Trim(Préfixe) & " " & Nettoyage(ATraiter)
                End If
                Name vrtSelectedItem As Join(Temp, "\")
            End If
        Next vrtSelectedItem
    Else
    End If
End With
Set fd = Nothing
Exit Sub
GestErreur:
MsgBox "Traitement interrompu !", vbCritical + vbOKOnly, "Nom de fichier en double !"
End Sub
 
Function Nettoyage(Texte As String) As String
With CreateObject("vbscript.regexp")
    .Global = False
    .Pattern = "[0-9]*.[a-zA-Z]{3,4}$"
    Nettoyage = .Execute(Texte)(0)
End With
End Function
 
Function Validation(ATester As String) As String
Dim Match, Matches
With CreateObject("vbscript.regexp")
    .Global = True
    .Pattern = "[^\[\]^<>\*\?""\|:/\\']"
    Set Matches = .Execute(ATester)
    For Each Match In Matches
        Validation = Validation & Match
    Next Match
End With
End Function
Bon dimanche :cool:
 

Brigitte

XLDnaute Barbatruc
Re : Adaptation macro Renomme fichiers 2003 vers 2010

Bonjour tout le monde,

Merci mon cher Jean Noel du mal que tu te donnes pour moi, chaque fois. Je vais, dès que possible (peut être seulement lundi) regarder tout ca. Là j'ai mes beaux parents en visite jusque demain... et mon chat qui est en fin de vie, et peut être, si on le retrouve (il est parti se planquer ce matin dans le bois), une décision à prendre... C'est très dur, au bout de 15 années, d'envisager la perte d'un si merveilleux compagnon.

Bisous à vous tous.
 

Brigitte

XLDnaute Barbatruc
Re : Adaptation macro Renomme fichiers 2003 vers 2010

Re,

Je n'ai pas pu tenir, j'ai voulu tester et avec l'aide en ligne de JN pour créer un classeur de macros persos (car sur mon 2010, il n'y en avait pas et il n'apparaissait pas dans l'enregistreur de macros, donc JN m'a gentiment prêté le sien : personal.xlsb à placer dans xlstart), je suis comme d'hab, exaucée.

Ca marche super facilement, c'est intuitif, efficace, sobre... J'adore.

Quelques astuces donc pour ceux qui passeraient par là (et pour ma mémoire plus tard ;-)

- macro à placer dans personal.xlsb (pour 2010, ou perso.xls pour 2003)
- si l'enregistreur de macros propose pas dans la liste ce classeur, vérifier que xlstart existe
- si xlstart n'existe pas dans c:\Users\Nom\AppData\Roaming\Microsoft\Excel\XLSTART, vérifier ailleurs :
- dans c:\Program files\MICROSOFT OFFICE\office14\
- et trouver un bon samaritain comme JN pour vous prêter son personal.xlsb... après ca marche.

- pour faire un raccourci dans 2010, nous avons mis un icône
- aller dans Options (onglet fichier)
- Barre outils accès rapide
- dans la liste déroulante des catégories, choisir MACROS
- trouver la nouvelle macro (personal... changenoms), faire ajouter
- puis à droite, une fois rajoutée, faire modifier pour changer l'icône

Amusez vous avec, c divin... Merci Jean Noel. Bisous à toi, ma cigogne préférée.
 

Brigitte

XLDnaute Barbatruc
Re : Adaptation macro Renomme fichiers 2003 vers 2010

Re,

Complément pour trouver où est votre XLSTART dans 2010 :

- onglet fichier dans excel
- options
- centre de gestion de la confidentialité
- Paramètres de la confidentialité
- emplacements approuvés

Dans mon cas, très bizarrement, j'avais deux endroits spécifiés comme précisé dans le post précédent... et aucun ne fonctionnait d'ailleurs.
 

Discussions similaires

Réponses
19
Affichages
2 K

Statistiques des forums

Discussions
312 348
Messages
2 087 512
Membres
103 572
dernier inscrit
hamzahaha