Microsoft 365 Enregistrer copie d'un fichier avec le nom d'une cellule excel (macro)

Alstroemeria

XLDnaute Nouveau
Bonjour,
j'ai dans la cellule H3 un mot
j'aimerais lorsque j'appuie sur un bouton déclenchant une macro, que mon fichier excel enregistre une copie de ce fichier avec pour nom le contenu de cette cellule H3.

Cependant Excel identifie le contenu de cette cellule comme étant vide

Ma macro :
Dim nomFichier As String
nomFichier = Trim(Range("H3").Value)
If nomFichier = "" Then
nomFichier = "DefaultName"
End If
ActiveWorkbook.SaveCopyAs Filename:="L:\Cooperation\Travaux Sur Programmes\2024\Requetes G07\" & nomFichier & ".xlsm"

lorsque je fais ça, mon fichier est crée et nommé DefaultName bien que la cellule H3 possède du texte. Ce code prouve qu'excel voit cette cellule comme vide mais dans l'idéal j'aimerais un code plus simple qui ne prenne même pas en compte la possibilité que H3 soit vide. Du genre :

Dim nomFichier As String
nomFichier = Range("H3").Value
ActiveWorkbook.SaveCopyAs Filename:="L:\Cooperation\Travaux Sur Programmes\2024\Requetes G07\" & nomFichier & ".xlsm"

Mais avec ce code, excel me crée la copie avec comme nom ".Xlsm"

et si je fais le code suivant d'une seule ligne :
ActiveWorkbook.SaveCopyAs Filename:="L:\Cooperation\Travaux Sur Programmes\2024\Requetes G07\nomFichier.xlsm"

excel crée la copie avec comme nom ''nomFichier" mais ce n'est pas ce que je veux.

Je ne vois pas quoi faire

Infos supp :
initialement dans ma cellule, j'avais une formule qui me renvoyait du texte mais je me suis dit que le problème venait peut être de la formule donc j'ai écris du texte directement dedans. un seul mot sans caractère spécial ni espace (exemple : Oui) mais ça marche pas quand même
 

piga25

XLDnaute Barbatruc
Bonjour,
Peut-être comme cela:
VB:
Sub Sauvegarder()
    Dim nomFichier As String
    Dim formatFichier As String

    ' Vérifier si la cellule H3 contient une valeur
    If IsEmpty(Range("H3")) Then
        MsgBox "La cellule H3 est vide. Veuillez saisir un nom de fichier.", vbExclamation
        Exit Sub
    End If

    ' Définir le format de fichier (ajuster selon vos besoins)
    formatFichier = ".xlsm" ' Ou ".xlsx", ".csv", etc.

    ' Construire le nom de fichier complet
    nomFichier = "L:\Cooperation\Travaux Sur Programmes\2024\Requetes G07\" & Range("H3").Value & formatFichier

    ' Enregistrer le classeur
    On Error Resume Next ' Gérer les erreurs d'enregistrement
    ActiveWorkbook.SaveCopyAs Filename:=nomFichier
    On Error GoTo 0

    If Err.Number <> 0 Then
        MsgBox "Une erreur s'est produite lors de l'enregistrement : " & Err.Description, vbCritical
    Else
        MsgBox "Le classeur a été enregistré avec succès.", vbInformation
    End If
End Sub
 

Alstroemeria

XLDnaute Nouveau
j'ai réussi à faire ce que je voulais en créant une nouvelle macro sinon !

en fait je mettais ce code à la suite d'un autre, mais quand je les sépare en 2 macros distinctes ça fonctionne. Je vois pas pourquoi ils interfèrent entre eux mais bon au moins ça marche maintenant
 

TooFatBoy

XLDnaute Barbatruc
je devrais mettre quoi comme titre ? je trouvais que c'était en lien o_O
Visiblement non : dans ton message #1 il n'est nul part question d'une cellule nommée.



en fait je mettais ce code à la suite d'un autre, mais quand je les sépare en 2 macros distinctes ça fonctionne.
Déjà qu'on n'avait pas de fichier à étudier, si en plus le code que tu nous donnes ne correspond pas au vrai code, je ne vois pas bien ce qu'on peut faire.


Je vois pas pourquoi ils interfèrent entre eux mais bon au moins ça marche maintenant
Sans classeur il n'y a quasiment aucune chance qu'on puisse te dire où est ton erreur.
 

Discussions similaires

Statistiques des forums

Discussions
314 426
Messages
2 109 478
Membres
110 488
dernier inscrit
glossaire