Renommer un fichier si une cellule contient une valeur

Bonjour à tous.

Je suis un débutant en vba et j'aimerais avoir votre aide car cela fait des jours que je n'arrive pas à rédoudre un problème.

Dans un dossier j'ai deux fichiers excel que je veux renommer en fonction du contenu d'une cellule. Je veux ouvrir les deux fichiers et les renommer, c'est à dire si la cellule A1 = Code, renommer le fichier Total et si la cellule B4 = Payer, renommer le fichier Prix. Quand j'exécute ce code, on m'affiche erreur de compilation. Merci pour toutes aides

Sub Renommer_fichier()

Dim Fichier As String, Chemin As String

Dim Wb As Workbook

Dim Ws As Worksheet

Chemin = "C:\Users\D0444017\Desktop\training\"

Fichier = Dir(Chemin & "*.xlsx")

Set Wb = GetObject(Chemin)

Set Ws = Wb.Worksheets(1)

If Range("A1").Value = "Code.xlsx" Then

Wb.Name = "Total.xlsx"

If Range("B4").Value = "Payer.xlsx" Then

Wb.Name = "Prix.xlsx"

End If

End Sub

Bonsoir,

en voyant ton code, je me pose des questions sur le but que tu cherches à atteindre, mais soit.

je peux en tout cas corriger quelques erreurs de syntaxe ou d'utilisation de fonction (sans garantie car je n'ai pas tout compris)

Sub Renommer_fichier()

    Dim Fichier As String, Chemin As String
    Dim Wb As Workbook
    Dim Ws As Worksheet

    Chemin = "C:\Users\D0444017\Desktop\training\"

    Fichier = Dir(Chemin & "*.xlsx")

    Set Wb = Workbooks.Open(Chemin & Fichier)
    Set Ws = Wb.Worksheets(1)

    If Range("A1").Value = "Code.xlsx" Then
        Wb.SaveAs Chemin & "Total.xlsx"

    ElseIf Range("B4").Value = "Payer.xlsx" Then
        Wb.SaveAs Chemin & "Prix.xlsx"
    End If

End Sub

Merci pour la réponse.

je m'explique de nouveau. J'ai deux classeurs Excel qui sont enregistrés chaque mois dans un dossier. Je dois importer des données de ces deux classeurs vers un autre classeur sur lequel je ferai des calculs.

Le problème est que le nom des deux classeurs change chaque mois. La cellule A1 d'un des classeurs est toujours intitulé "code" et la cellule B4 de l'autre classeur toujours intitulé "Payer".

Comme le contenu de la cellule A1 d'un classeur et la cellule B4 de l'autre classeur sont invariables, je souhaiterais une macro qui pourra renommer chacun des classeurs.

Bonsoir,

si j'ai bien compris

Sub Renommer_fichier()

    Dim Fichier As String, Chemin As String
    Dim Wb As Workbook
    Dim Ws As Worksheet

    Chemin = "C:\Users\D0444017\Desktop\training\"
    Fichier = Dir(Chemin & "*.xlsx")

    While Fichier <> ""
        Set Wb = Workbooks.Open(Chemin & Fichier)
        Set Ws = Wb.Worksheets(1)

        If UCase(Ws.Range("A1").Value) = "CODE" Then
            Wb.SaveAs Chemin & "Total.xlsx"
        ElseIf UCase(Ws.Range("B4").Value) = "PAYER" Then
            Wb.SaveAs Chemin & "Prix.xlsx"
        End If

        Fichier = Dir()
    Wend
End Sub

Merci bien.

Le code marche parfaitement. Encore une petite demande si ce n'est pas trop, comment supprimer les deux classeurs précédentes car j'ai maintenant 4 classeurs dans mon dossier?

Bonsoir,

code adapté

Sub Renommer_fichier()

    Dim Fichier As String, Chemin As String, f As String
    Dim Wb As Workbook
    Dim Ws As Worksheet

    Chemin = "C:\Users\D0444017\Desktop\training\"

    Fichier = Dir(Chemin & "*.xlsx")

    While Fichier <> ""
        If Fichier <> "Total.xlsx" And Fichier <> "Prix.xlsx" Then
            Set Wb = Workbooks.Open(Chemin & Fichier)
            Set Ws = Wb.Worksheets(1)

            If UCase(Ws.Range("A1").Value) = "CODE" Then
                f = "Total.xlsx"
            ElseIf UCase(Ws.Range("B4").Value) = "PAYER" Then
                f = "Prix.xlsx"
            Else
                f = ""
            End If
            If f <> "" Then
                Wb.SaveAs Chemin & f
                Kill Chemin & Fichier
            End If
            Wb.Close
        End If
        Fichier = Dir()
    Wend

End Sub

Bonsoir,

le code a marché quand j'ai effectué ces modifications.

En ajoutant :

Dim f As String

et en supprimant :

Chemin = "d:\downloads\test\"

Merci

Rechercher des sujets similaires à "renommer fichier contient valeur"