Macro excel pour generer un nom automatiquement

Bonjour,

Je pense qu il faut ke je sois precis dans ce que je raconte, alors voila :

J’ai un premier classeur excel dans lequel je saisie toutes mes informations, cela me rempli automatiquement deux feuilles dans ce meme classeur.

Je sais creer une macro qui automatiquement copie ces deux feuilles et les les enregistres ailleur sur mon PC, mais mon soucis est que je veu que le nom d’enregistrement change a chaque fois.

ke se soit par exemple le n° du compte client qui se mette automatiquement comme nom d’enregistrement, car en se moment sa enregistre sous le nom : “classeur1”

En esperant avoir etait clair, Merci d’avance

@ tres bientot et merci de votre aide

et voila si sa peut aider :

Sheets(Array("Feuil1", "Feuil3")).Select
Sheets("Feuil3").Activate
Sheets(Array("Feuil1", "Feuil3")).Copy
ActiveWorkbook.SaveAs Filename:= _
    "C:\Documents and Settings\commerce dev\Bureau\Classeur8.xls", FileFormat:= _
    xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
    , CreateBackup:=False
ActiveWindow.Close
Range("A32").Select
Sheets("Feuil2").Select

Je ne comprends pas tout à fait l’utilité de toutes les lignes de la macro.
Dans ce qui est donné, il y a de fortes chances pour que la copie s’appelle classeur8 et non classeur1 …

Pour sauvegarder le classeur il suffit d’une ligne :

ActiveWorkbook.SaveAs "le_nom_du_fichier_de_copie"

Si la copie est dans le meme répertoire que le fichier de travail, tu peux même te contenter du nom court, sans référence au chemin complet.

A noter qu’avec cette méthode, tu fermes le document d’origine pour te retrouver dans la copie. Il serait peut être plus judicieux d’utiliser

ActiveWorkbook.[B]SaveCopyAs[/B] "le_nom_du_fichier_de_copie"

En ce qui concerne le nommage du fichier de copie, il suffit de passer par une variable.

Dim CopyName as String
CopyName = "123456"  
ActiveWorkbook.SaveCopyAs CopyName

Et si le numero de compte client figure dans une cellule de l’une des deux feuilles, tu nommes cette cellule (insertion/nom/definir).
En supposant que tu l’aies nommée CompteClient

Dim CopyName as String
[B]CopyName = Range("CompteClient")[/B]  
ActiveWorkbook.SaveCopyAs CopyName

salut je suis sur que tout cela va marcher mais STP, montre moi comment inserer tout cela ds mon code à moi HELP ! ! ! !

Tu as une macro enregistrée, donc tu as un module.
Dans ce module, tu remplaces le contenu de la macro en question par ce que je t’ai donné, tu l’assaisonnes à ton goût (message de confirmation, repositionnement en fin d’action etc …) et le tour est joué.

Sheets("Feuil2").Select
Range("A2").Select
Sheets(Array("Feuil2", "Feuil3")).Select
Sheets("Feuil3").Activate
Sheets(Array("Feuil2", "Feuil3")).Copy
ChDir "C:\Documents and Settings\commerce dev\Bureau"
Dim CopyName As String
CopyName = Range("copie de testdevismacroentiere")
ActiveWorkbook.SaveCopyAs CopyName
ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\commerce dev\Bureau\Classeur1.xls", FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False
ActiveWindow.Close
Sheets("Feuil1").Select
End Sub

Hello alors voila j’ai fait sa comme sa et excel me dit sa :

Erreur de compilation
Erreur de syntaxe

C koi sa encore !!!!

HEllo GCC, merci encore de ton aide super sympa, j’apprecie vraiment le temps passe pour moi, mais cela est la premiere fois que je touche a la programation de macro alors… bref puis je t’envoyer mon fichier pour que tu y jettes un oeil???
Merci d’avance

On ne s’est pas entièrement compris
Je pensais que tu voulais que ta copie se nomme par exemple 123450307.xls, 123450307 étant le numéro d’un compte client
Je supposais que ce numéro figurait quelquepart dans une cellule.

Si c’est le cas, il faut nommer cette cellule
et ensuite y faire référence à travers l’objet Range.

Si cette valeur n’existe pas dans une celule, il faut revoir toute la stratégie du programme de sauvegarde.

Au passage, peux-tu me dire à quoi te servent les lignes en gras dans le code ci dessous ?

Sheets("Feuil2").Select
Range("A2").Select
Sheets(Array("Feuil2", "Feuil3")).Select
Sheets("Feuil3").Activate
Sheets(Array("Feuil2", "Feuil3")).Copy

ChDir "C:\Documents and Settings\commerce dev\Bureau"
Dim CopyName As String
CopyName = Range("copie de testdevismacroentiere")
ActiveWorkbook.SaveCopyAs CopyName
ActiveWorkbook.SaveAs Filename:= _
"C:\Documents and Settings\commerce dev\Bureau\Classeur1.xls", FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False
ActiveWindow.Close

Sheets("Feuil1").Select
End Sub

Edit: des petits pb avec ma mise en gras

alors les lignes en gras servent a creer une copie et c’est cette copie ki doit se nommer d un numero client ki se trouve sur le fichier de saisie, … merci encore de tout les efforts fourni mais puis je t envoyer mon fichier pour ke tu y jette un oeil, sa serait vraiment top de ta part ! merci encore et @ +

ps si oui a kelle adresse ??

En fait, tu ne fais nulle part dans ta macro de copie de tes feuilles.
Ce que tu copies (et c’est ce qu’il faut faire) c’est le classeur complet.
Donc ces lignes peuvent être retirées.
Fais l’essai en les mettant d’abord en commentaire, puis en les supprimant définitivement si confirmation de mon hypothèse.

Encore trop tôt pour des échanges de fichiers. Il faut que tu cherches encore un peu par toi même, avec ta propre démarche d’esprit.
Quand tout fonctionnera, on verra s’il y a lieu ou non d’optimiser.

N’oublie pas que non seulement ton produit doit fonctionner, mais que tu dois ensuite le maintenir. Alors autant le maîtriser de bout en bout dès le début

N’hésite pas à demander s’il reste des choses que tu ne comprends pas

tu as tout a fait raison, mais avoue que naviguer ds les meandres des macros, pour une premiere fois c 'est pas evident du tout du tout ! !