VBA - Lister et renommer fichiers

Bonjour,

J'ai un code qui fonctionne très bien (grâce aux talents de ce site) pour pouvoir lister et renommer les fichiers d'un dossier mais je souhaiterais y apporter quelques améliorations.

Premièrement j'aimerais que le code fonctionne uniquement à partir de la ligne 2; ça parait simple mais je ne suis pas fichu d'y arriver.

Deuxièmement je souhaiterais verrouiller la feuille par un mot de passe (il s'agit d'un point ".")

Par ailleurs lorsque je clique sur "Lister fichiers" et que je fais "Annuler" il y a un message d'erreur que je souhaiterais ne pas avoir.

Pouvez-vous m'aider?

Mes meilleures salutations,

Thierry

Bonjour Thierry,

Pour le listage voici la macro :

Sub Lister()

Dim Fichier As String
Dim NbFichier As Integer
Dim RechDos As Office.FileDialog
    On Error Resume Next

ActiveSheet.Unprotect "."
Set RechDos = Application.FileDialog(msoFileDialogFolderPicker)
RechDos.Title = "Sélectionnez un dossier..."
If RechDos.Show() Then Dos = RechDos.SelectedItems(1) & "\"

Sheets("Feuil1").Range("D1").Value = Dos

Fichier = Dir(Dos)
Do While Fichier <> ""
    NbFichier = NbFichier + 1
    Sheets("Feuil1").Range("A" & NbFichier + 1) = Fichier
    Fichier = Dir
Loop
ActiveSheet.Protect "."
End Sub

1- On peux continuer avec "NbFichier" non définit donc = 0 et ajouter a ton ton nombre de fichier une valeur ici 1

Sheets("Feuil1").Range("A" & NbFichier +1) = Fichier

On peut aussi définir "NbFichier =1" donc quand le listage va se faire, il va commencer a la ligne 2 car NbFichier = NbFichier+1 (soit 1+1)
Mais la variable nommé "NbFichier" doit devenir "LigFichier" ("nombre de fichier" en "ligne de fichier") [Pour un meilleur suivi]

2- ActiveSheet.Unprotect et Protect avant et apres le listage avec le mdp a la suite "."

3- J'ai rajouté "On Error Resume Next" pour l'erreur quand tu clic sur annuler
Qui continu la suite de la macro sans tenir compte de l'erreur

A+

Bonjour Geof52,

Merci ça fonctionne parfaitement bien avec votre proposition mais maintenant j'ai une erreur sur le bouton "Renommer":

Sub Renommer()

Dim Dos, NomOrigine, NomFinal As String

ActiveSheet.Unprotect "."
Dos = Sheets("Feuil1").Range("I1").Value
DerLigne = Sheets("Feuil1").Cells(Rows.Count, 1).End(xlUp).Row

For LigneFichier = 1 To DerLigne
    NomOrigine = Dos & Sheets("Feuil1").Range("A" & LigneFichier).Value
    NomFinal = Dos & Sheets("Feuil1").Range("G" & LigneFichier).Value
    'Verif qu'il y a bien un nouveau nom pour renommer
    If NomFinal <> Dos Then Name NomOrigine As NomFinal
Next LigneFichier
ActiveSheet.Protect "."
End Sub

Meilleures salutations,

Thierry

L'erreur doit etre sur :

For LigneFichier = 1 To DerLigne

Qui sinifie : "Pour les LigneFichier allant de la ligne 1 a la derniere ligne fait ..."
Il faut changer le 1 par ta premiere ligne qui contient un fichier donc ta ligne 2.

Effectivement ça venait de là et de la mauvaise colonne à renommer.

Merci pour votre aide; je vous souhaite un tout bon week-end!

Rechercher des sujets similaires à "vba lister renommer fichiers"