MOA_Excel
XLDnaute Nouveau
Bonjour !
Tout d'abord je vous remercie de l'intérêt porté à cette demande.
Niveau = Je me débrouille sur Excel mais mes compétences s'arrêtent dès lors qu'il faut toucher à VBA. Je me limite à des enregistrements lorsque je dois utiliser une macro. Raison pour laquelle je me permets de solliciter votre aide.
Contexte = j'ai enregistré une macro afin de procéder aux actions suivantes :
1 - J'ouvre un fichier maître dans lequel j'ai traité des infos qui sont prêtes à être importées dans un outil (mapping)
2 - Je me place sur l'onglet dans lequel se trouvent les infos traitées
3 - J'ouvre un nouveau fichier et j'enregistre celui-ci en le nommant via un copié/collé que je fais d'une cellule à partir du fichier maître (je reprends la date du jour + la date de la réservation des commandes à effectuer, le tout en format texte)
4 - Je copie/colle les données depuis l'onglet du fichier maître vers le nouveau fichier ouvert en valeur puis je les convertis en format texte
Problématique = Tout fonctionne à un détail prêt qui fait tout foirer : l'enregistrement de macro fige le nom que je colle au nouveau fichier. Exemple : si nous sommes le 04/08/21 et que je réserve pour le 05/08/21, j'ai un libellé du nouveau fichier qui va être "Resa du 04-08-21 pour le 05-08-21". Le jour suivant, alors même que la cellule du fichier maître concernée affiche "Resa du 05-08-21 pour le 06-08-21" et que la macro copie/colle pour nommer le nouveau fichier créé chaque jour, le nouveau fichier va toujours s'appeler "Resa du 04-08-21 pour le 05-08-21".
La question est donc : comment rendre variable le nom que je donne au nouveau fichier créé et enregistré chaque jour selon la cellule prévue à cet effet dans le fichier maître ?
Données = Afin de faciliter l'appréhension du sujet, je vous propose ci-joint le code qui s'est créé automatiquement lors de l'enregistrement (j'ai modifié les libellés professionnels par sécurité) et qui fait apparaître le nom à attribuer au nouveau fichier de façon figée et non en tant que variable selon le copié/collé présent dans l'enregistrement à partir de la cellule qui s'actualise quotidiennement.
Egalement, je vous propose ci-dessous le copié/collé du code :
Sub GENERER_FICHIER_IMPORT()
'
' GENERER_FICHIER_IMPORT Macro
'
'
Sheets("Référentiel").Select
Range("X29").Select
Selection.Copy
Workbooks.Add
Application.CutCopyMode = False
ChDir "\\CHEMIN DU FICHIER DANS LE SERVEUR"
ActiveWorkbook.SaveAs Filename:= _
"\\CHEMIN DU FICHIER DANS LE SERVEUR\Resa du mercredi-04-08-2021 pour le jeudi-05-08-2021.xlsx" _
, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Windows("ETL_Proto_Sud_Client1_V8.xlsm").Activate
Sheets("Résa pour le SUD").Select
Cells.Select
Selection.Copy
Windows("Resa du mercredi-04-08-2021 pour le jeudi-05-08-2021.xlsx").Activate
Cells.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWorkbook.Save
ActiveWindow.Close
Range("B4").Select
End Sub
Je vous remercie par avance de votre retour. Si vous avez besoin de précisions, je me tiens disponible pour y répondre.
Excellente journée
Bien cordialement
Tout d'abord je vous remercie de l'intérêt porté à cette demande.
Niveau = Je me débrouille sur Excel mais mes compétences s'arrêtent dès lors qu'il faut toucher à VBA. Je me limite à des enregistrements lorsque je dois utiliser une macro. Raison pour laquelle je me permets de solliciter votre aide.
Contexte = j'ai enregistré une macro afin de procéder aux actions suivantes :
1 - J'ouvre un fichier maître dans lequel j'ai traité des infos qui sont prêtes à être importées dans un outil (mapping)
2 - Je me place sur l'onglet dans lequel se trouvent les infos traitées
3 - J'ouvre un nouveau fichier et j'enregistre celui-ci en le nommant via un copié/collé que je fais d'une cellule à partir du fichier maître (je reprends la date du jour + la date de la réservation des commandes à effectuer, le tout en format texte)
4 - Je copie/colle les données depuis l'onglet du fichier maître vers le nouveau fichier ouvert en valeur puis je les convertis en format texte
Problématique = Tout fonctionne à un détail prêt qui fait tout foirer : l'enregistrement de macro fige le nom que je colle au nouveau fichier. Exemple : si nous sommes le 04/08/21 et que je réserve pour le 05/08/21, j'ai un libellé du nouveau fichier qui va être "Resa du 04-08-21 pour le 05-08-21". Le jour suivant, alors même que la cellule du fichier maître concernée affiche "Resa du 05-08-21 pour le 06-08-21" et que la macro copie/colle pour nommer le nouveau fichier créé chaque jour, le nouveau fichier va toujours s'appeler "Resa du 04-08-21 pour le 05-08-21".
La question est donc : comment rendre variable le nom que je donne au nouveau fichier créé et enregistré chaque jour selon la cellule prévue à cet effet dans le fichier maître ?
Données = Afin de faciliter l'appréhension du sujet, je vous propose ci-joint le code qui s'est créé automatiquement lors de l'enregistrement (j'ai modifié les libellés professionnels par sécurité) et qui fait apparaître le nom à attribuer au nouveau fichier de façon figée et non en tant que variable selon le copié/collé présent dans l'enregistrement à partir de la cellule qui s'actualise quotidiennement.
Egalement, je vous propose ci-dessous le copié/collé du code :
Sub GENERER_FICHIER_IMPORT()
'
' GENERER_FICHIER_IMPORT Macro
'
'
Sheets("Référentiel").Select
Range("X29").Select
Selection.Copy
Workbooks.Add
Application.CutCopyMode = False
ChDir "\\CHEMIN DU FICHIER DANS LE SERVEUR"
ActiveWorkbook.SaveAs Filename:= _
"\\CHEMIN DU FICHIER DANS LE SERVEUR\Resa du mercredi-04-08-2021 pour le jeudi-05-08-2021.xlsx" _
, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Windows("ETL_Proto_Sud_Client1_V8.xlsm").Activate
Sheets("Résa pour le SUD").Select
Cells.Select
Selection.Copy
Windows("Resa du mercredi-04-08-2021 pour le jeudi-05-08-2021.xlsx").Activate
Cells.Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWorkbook.Save
ActiveWindow.Close
Range("B4").Select
End Sub
Je vous remercie par avance de votre retour. Si vous avez besoin de précisions, je me tiens disponible pour y répondre.
Excellente journée
Bien cordialement