Créer une copie du classeur avec nom spécifié

Bonjour,

Le problème du jour est le suivant:

Je vais essayer d'être le plus clair possible car les documents sont trop nombreux et confidentiels pour vous les partager...

J'aimerai créer un "bouton" dans un classeur (pour l'exemple, Classeur1), qui créer une copie de Classeur1 en renommant cette copie par le nom qui sera indiqué dans la cellule A1 de Classeur1:

Exemple: Dans le Classeur1, j'écris "Régis Dupont" en A1 et j'appuie sur le bouton: une copie du Classeur1 est crée et le nom de cette copie est "Régis Dupont.xlsm".

En bonus pour les plus doués (ou les plus coriaces...): si en plus il existe un moyen de modifier des parties de code via un autre code.........

Macro: j'appuie sur le bouton = les références à "Classeur1.xlsm" dans les codes du classeur deviennent "Régis Dupont.xlsm"....

Évidement, la partie bonus est la plus importante de ma question mais elle me semble utopique tant elle serait formidable par le temps qu'elle ferait gagner!!!!!

Merci la communauté!

Bonjour Mikl, bonjour le forum,

Je vais essayer d'être le plus clair possible car les documents sont trop nombreux et confidentiels pour vous les partager...

1. Anonymiser un fichier prend à peine quelques secondes. Ça nous permettrait d'avoir le contexte...

2. le code ne doit pas être si "secret" que ça j'imagine. Tu pourrais au moins nous le fournir.

3. Rien. J'attends que tu daignes faire un effort...

Bonjour ThauThème,

Merci pour ta réponse même si je la trouve un poil inutilement énervée...

J'ai jugé inutile le partage de mes documents pour plusieurs raisons mais la principale était qu'au vu de ma demande, je ne voyais pas l’intérêt du fait de ma demande "générale" que je voulais par la suite adapter à mon cas.

Si tu considère que ma demande nécessite effectivement un partage de mes documents, je vais essayer d'en créer un anonyme qui soit exploitable.

Merci

Re,

Moi c'était pour le bonus que je voulais voir le code mais bon... C'est ton problème après tout.

Je vous envoie la première version d'une partie de mon document mais elle correspond dans les grandes lignes à mon travail en cours.

Le code est rudimentaire (je suis plus que novice) mais l'intérêt pour moi est qu'il soit fonctionnel. Je me pencherai sur la simplification de mes codes lorsque j'aurai un peu plus de pratique.

J'espère que ce fichier suffira sinon, dites-moi ce qu'il faut d'autre.

Merci!!!

6a-mand.xlsm (147.25 Ko)

Re,

J'ai parcouru tout le code et je n'y vois rien qui fait allusion au nom du classeur. Ce qui signifie que tu peux le renommer comme tu veux, le code sera toujours fonctionnel.

En revanche, à plusieurs reprises tu ouvres, édites et enregistres, un fichier nommé : 1.Protocole Evaluation du Comportement verbal ABA.xlsm.

Si c'est de lui que tu veux parler dans le bonus, le nom du classeur en cours ne change rien non plus et tu pourras toujours l'ouvrir sans rien modifier au code actuel. Sinon sois plus précis car ta requête na plus rien à voir avec le code du fichier joint...

Pour ta première question le code à affecter au bouton :

Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim NOM As String 'déclare la variable NOM
Dim CA As String 'déclare la variable CA (Chemin d'Accès)
Dim DC As Workbook 'déclare la variable CC (Classeur Copie)

Set CS = ThisWorkbook 'définit le classeur source CS
NOM = CS.Worksheets(1).Range("A1").Value 'définit le NOM
If NOM = "" Then 'condition : si le NOM est vide
    MsgBox "Vous devez renseigner le nom dans la cellule A1 !" 'message
    With CS.Worksheets(1) 'prend en compte le premier onglet du classeur source CS
        .Activate 'active l'onglet
        .Range("A1").Select 'sélectionne la cellule A1
    End With 'fin de la prise en compte du premier onglet du classeur source CS
    Exit Sub 'sort de la procédure
End If 'fin de la condition
CA = CS.Path & "/" 'définit le chemin d'accès CA
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
Set CC = CS.SaveAs(CA & NOM, 51) 'définit le classeur copie CC (en l'enregistrant sous)
If Err <> 0 Then 'condition : si une erreur a été générée
    MsgBox "la cellule A1 contient un ou plusieurs caractères non autorisés dans le nom du fichier ! Opération annulée..." 'message
    With CS.Worksheets(1) 'prend en compte le premier onglet du classeur source CS
        .Activate 'active l'onglet
        .Range("A1").Select 'sélectionne la cellule A1
    End With 'fin de la prise en compte du premier onglet du classeur source CS
    Exit Sub 'sort de la procédure
End If 'fin de la condition
On Error GoTo 0 'annule la gestion des erreur
CC.Close True 'ferme le classeur copie en enregistrant les modifications (on aurait pu mettre False, sans enregistrer, c'était pareil...)

Ça va, s'est pas trop énervé là ?...

Bonjour ThauThème,

Merci pour ta réponse.

Effectivement, c'est bien le classeur 1.Evaluation... dont je parlais dans le « bonus ».

Concernant ta proposition, merci beaucoup, je vais la tester dès ce soir!

Étant un grand débutant, il y a des « logiques » que je n’ai pas, notamment sur le travail sur le code des autres, donc j’ai été surpris de ta première réponse. Désolé si j’ai été un peu susceptible. Quoi qu’il en soit, merci d’avoir tout de même pris le temps de me proposer cette solution!

Rechercher des sujets similaires à "creer copie classeur nom specifie"