Associer 3 macros de sauvegarde

Mister Binaire

XLDnaute Occasionnel
Bonsoir le Forum,

Voila j'ai ma première macro de sauvegarde (voir -ci dessous ) qui fonctionne très bien.

Cependant, lors de la sauvegarde du fichier, je voudrais que la première feuille de ce fichier (Sommaire) soit sauvegarder dans un autre fichier nommer " Data Manager" et que le nom de l'onglet du Fichier de "Data Manager" prenne le nom de la sauvegarde du fichier. On m'a donné deux autres macro pour le faire (Voir en dessous de la macro de sauvegarde) mais je ne sais pas mixer le tout.

Merci de votre aide..

Sub Sauvegarde()
Dim Chemin As String, Fichier As String
If ActiveWorkbook.Saved = True Then Exit Sub
'Prise en compte des éléments variables
Chemin = "Z:\PROCESS\LABO\06-Etudes en Cours\"
Fichier = Range("B2").Value & " " & Range("B3")
'Alertes utilisateur
'Type1 : Dossier non disponible
If Right(Chemin, 1) <> "\" Then MsgBox "Chemin non conforme , manque le \ à la fin ": Exit Sub
If Dir(Chemin & "\", vbDirectory) = "" Then MsgBox " Attention, Dossier de stockage non disponible": Exit Sub

'Type2 : Nom du fichier non renseigné
If Range("B2").Value = "" Or Range("B3").Value = "" Or Fichier = "" Then MsgBox " Attention, Merci de renseigner le Numéro de la Demande et le Nom du Produit pour Sauvegarder": Exit Sub
If Dir(Chemin & Fichier) <> "" Then
If MsgBox("Fichier déjà existant , voulez vous continuer", vbYesNo) = vbNo Then Exit Sub
End If
Application.DisplayAlerts = False ' Désactive les alertes en validant l'action par défaut
On Error Resume Next ' s'il y a une erreur sur la prochaine ligne , l'on exécute la ligne suivante
ActiveWorkbook.SaveAs Chemin & Fichier, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
If Err Then ' si 'il y a eu une erreur
'échec de lecture ou d'écriture à partir d'un fichier.
If Err.Number = 1004 Then MsgBox "échec de lecture ou d'écriture à partir d'un fichier."
' Liste et message appropriés en fonction des erreur rencontrées
'Exemple
If Err.Number = 75 Then MsgBox "Erreur d'accès chemin/fichier (erreur 75)"
End If
On Error GoTo 0 'Rend la main au gestionnaire d'erreur
Application.DisplayAlerts = True ' Réactivation des alertes
End Sub

Sub a() ')
Dim NOMSVG$
NOMSVG = ThisWorkbook.Name
Sheets("Sommaire").Copy
ActiveWorkbook.Sheets(1).Name = Split(NOMSVG, ".")(0)
End Sub

Sub b()
Sheets("Sommaire").Copy After:=Workbooks("Data Manager.xlsm").Sheets(Sheets.Count)
End Sub
 

Staple1600

XLDnaute Barbatruc
Re : Associer 3 macros de sauvegarde

Bonsoir à tous


Mister Binaire
Tu vas créer combien de fils pour cette question ?
https://www.excel-downloads.com/threads/sauvegarde-dune-feuille-dans-un-autre-classeur.226722/
https://www.excel-downloads.com/threads/aide-sur-cette-macro-de-sauvegarde.223964/
https://www.excel-downloads.com/threads/ameliorer-une-macro-de-sauvegarde.223864/

Et toujours pas de fichier joint dès le premier message ...
Cela en deviendrait presque pénible...:rolleyes:
(Mais comme nous sommes dimanche, j'opterai pour risible et/ou perfectible :rolleyes:)
 
Dernière édition:

Mister Binaire

XLDnaute Occasionnel
Re : Associer 3 macros de sauvegarde

Bonjour Stample1600, Bonjour le Forum,

Tu as raison, trois fils, mais pourquoi trois ?

Tout simplement parce que mes autres fils ont été abandonnés et que je n'ai plus de réponse à ce sujet.

Alors j'essaie de relancer le sujet comme je le peux en espérant que quelqu’un puisse m'aider.

Il est vrai que je n'ai rien mis en PJ mais la question que je me suis posé avant de poster est : Le fichier est il nécessaire pour associer ces trois macros ?.

Mais bon afin de respecter la charte du forum, je vais remettre le fichier source.

Comptant sur ta compréhension ...

Merci de ton aide,
 

Pièces jointes

  • STD Work Trame DT 8.21 .zip
    282.3 KB · Affichages: 11
  • STD Work Trame DT 8.21 .zip
    282.3 KB · Affichages: 44
  • STD Work Trame DT 8.21 .zip
    282.3 KB · Affichages: 14

Staple1600

XLDnaute Barbatruc
Re : Associer 3 macros de sauvegarde

Bonsoir tous

Mister Binaire
Bonjour Stample1600, Bonjour le Forum,
Tout simplement parce que mes autres fils ont été abandonnés et que je n'ai plus de réponse à ce sujet.
:confused:
C'est au demandeur de faire vivre son fil en faisant des ups (se répondre à soi-même) si les réponses tardent à venir.
Et lorsque up il y a, le demandeur peut en profiter pour ajouter détails précisions et pièce jointe (si absente)

Où se situe ta difficulté exactement ?
Cependant, lors de la sauvegarde du fichier, [je voudrais que la première feuille de ce fichier (Sommaire) soit sauvegarder dans un autre fichier nommer " Data Manager"] = macro b et que *le nom de l'onglet du Fichier de "Data Manager" prenne le nom de la sauvegarde du fichier.

Ma macro a crée une copie de la feuille Sommaire dans un nouveau classeur vierge
Ma macro b copie la feuille Sommaire dans le fichier (ouvert) nommée Data Manager.xlsm

*: donc pour ceci utiliser par exemple quelque chose dans ce style
VB:
Sub c()
Dim Chemin As String, Fichier As String
Fichier = Sheets(1).Range("B2").Value & " " & Sheets(1).Range("B3").Value ' adapter le  nom de la feuille si besoin
Sheets("Sommaire").Copy After:=Workbooks("Data manager.xlsm").Sheets(Workbooks("Data manager.xlsm").Sheets.Count)
ActiveWorkbook.Sheets("Sommaire").Name = Fichier
End Sub

Je te laisse faire essais et adaptations (en espérant que tu ne crées pas un énième fil ... ;) )
 

Mister Binaire

XLDnaute Occasionnel
Re : Associer 3 macros de sauvegarde

Bonsoir Le forum, Staple1600,

Merci de ta réponse Staple1600.

J'ai collé les deux lignes de macro mais l'opération ne donne pas le résultat souhaité.

Je m'explique le fichier en PJ est un STD (Trame Maîtresse) lors de la sauvegarde la macro va prendre les datas en B2 & B3 pour créer le nom du fichier qui deviendra alors le fichier de travail du collaborateur il doit donc être identique à la trame Maîtresse. En simultanée la feuille "Sommaire" doit être copiée dans dans le fichier "Data Manager" et l'onglet du fichier "Data manager" porter le nom de la sauvegarde du fichier du collaborateur. La macro n'apporte pas ce travail souhaitée elle enregistre uniquement la feuille sommaire et non tout le fichier sous le nom donné par le collaborateur et l'onglet porte le nom de la sauvegarde . Le fichier data manager lui ne contient aucune donnée contenu dans la page sommaire et l'onglet porte le nom de sommaire à la place du nom de la sauvegarde du fichier du collaborateur.

En PJ les deux fichiers et ci-dessous la macro modifiée: (j'ai du faire des erreurs)



Te remerciant par avance de ton aide..

Sub Sauvegarde()
Dim Chemin As String, Fichier As String
If ActiveWorkbook.Saved = True Then Exit Sub
'Prise en compte des éléments variables
Chemin = "C:\Users\Jean-Philippe\Downloads\"
Fichier = Range("B2").Value & " " & Range("B3")
Sheets("Sommaire").Copy After:=Workbooks("Data Manager.xlsm").Sheets(Workbooks("Data Manager.xlsm").Sheets.Count)
ActiveWorkbook.Sheets("Sommaire").Name = Fichier
'Alertes utilisateur
'Type1 : Dossier non disponible
If Right(Chemin, 1) <> "\" Then MsgBox "Chemin non conforme , manque le \ à la fin ": Exit Sub
If Dir(Chemin & "\", vbDirectory) = "" Then MsgBox " Attention, Dossier de stockage non disponible": Exit Sub

'Type2 : Nom du fichier non renseigné
If Range("B2").Value = "" Or Range("B3").Value = "" Or Fichier = "" Then MsgBox " Attention, Merci de renseigner le Numéro de la Demande et le Nom du Produit pour Sauvegarder": Exit Sub
If Dir(Chemin & Fichier) <> "" Then
If MsgBox("Fichier déjà existant , voulez vous continuer", vbYesNo) = vbNo Then Exit Sub
End If
Application.DisplayAlerts = False ' Désactive les alertes en validant l'action par défaut
On Error Resume Next ' s'il y a une erreur sur la prochaine ligne , l'on exécute la ligne suivante
ActiveWorkbook.SaveAs Chemin & Fichier, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
If Err Then ' si 'il y a eu une erreur
'échec de lecture ou d'écriture à partir d'un fichier.
If Err.Number = 1004 Then MsgBox "échec de lecture ou d'écriture à partir d'un fichier."
' Liste et message appropriés en fonction des erreur rencontrées
'Exemple
If Err.Number = 75 Then MsgBox "Erreur d'accès chemin/fichier (erreur 75)"
End If
On Error GoTo 0 'Rend la main au gestionnaire d'erreur
Application.DisplayAlerts = True ' Réactivation des alertes
End Sub
 

Pièces jointes

  • Data Manager.xlsm
    30.9 KB · Affichages: 28
  • Data Manager.xlsm
    30.9 KB · Affichages: 25
  • Data Manager.xlsm
    30.9 KB · Affichages: 18
  • DT 12-30-96 MRX2145.xlsm
    33 KB · Affichages: 26

Staple1600

XLDnaute Barbatruc
Re : Associer 3 macros de sauvegarde

Bonsoir à tous

Mister Binaire
On peut lire dans ton premier message
je voudrais que la première feuille de ce fichier (Sommaire) soit sauvegarder dans un autre fichier nommer " Data Manager"
C'est donc ce que fait la macro b
la macro c fait un peu plus

La macro n'apporte pas ce travail souhaitée elle enregistre uniquement la feuille sommaire et non tout le fichier sous le nom donné par le collaborateur et l'onglet porte le nom de la sauvegarde
Certes, mais il s'agit rarement pour moi de livrer un code clé en mains (fonctionnel de A à Z)
Je me situe plus dans la dispense de codes VBA (ou formules) à l' attention du demandeur afin de l'inviter à mettre les mains dans le cambouis.
A tester, tâtonner, adapter le code VBA fourni.
Bref, il me semble utile que le demandeur mouille la chemise pour résoudre sa question.
S'il attend du tout cuit, alors que son attente soit douce ;)

J'aurai préféré lire des questions sur telle ou ligne de code (si tu ne les comprends pas) plutôt qu'un simple :
"ça marche pas"
 

Mister Binaire

XLDnaute Occasionnel
Re : Associer 3 macros de sauvegarde

Bonjour le Forum, Staple1600,


Je comprends bien ta démarche Staple1600, mais je suis loin d'être un pro dans le VBA.

Alors si tu pourrais expliquer à l'apprenti pourquoi le code tel que je l'ai placé aujourd'hui ne donne pas le résultat escompté cela serait super sympa.

Pour mémoire :

1) Sauvegarde en entier du fichier à partir de la trame maîtresse qui portera le nom des variables B2 & B3.
2) En simultanée sauvegarde de la page sommaire de ce fichier dans le fichier Data Manager.
3) Le nom de l'onglet du fichier Data manager portera le nom de la sauvegarde du ficchier.

J'espère être clair dans mes explications.

Comptant sur ta compréhension, te remerciant par avance de ton aide..
 

Staple1600

XLDnaute Barbatruc
Re : Associer 3 macros de sauvegarde

Bonsoir à tous

Mister Binaire
La macro affectée au bouton Sauvegarde n'est pas dans ta PJ mais ici
'C:\Users\Jean-Philippe\Downloads\STD Work Trame DT 8.2 .xlsm'!Sauvegarde
Çàcommence mal ;)
1) Sauvegarde en entier du fichier à partir de la trame maîtresse qui portera le nom des variables B2 & B3.
sauf que le fichier contient une Feuil1 vide et un feuille nommée DT 12-30-96 MRX2145
(qui je ne m'abuse correspond à la feuille Sommaire)

Néanmoins voici une trame simple de macro testée
(Un problème apparait à propos des noms présents dans le Gestionnaire de noms, lors de la copie)
Code:
Sub Sauvegarde()
Dim NWBK As Workbook, strPath$, Nom$
strPath = ThisWorkbook.Path & "\"
Nom = ActiveSheet.[B2].Text & " " & ActiveSheet.[B3].Text
ActiveSheet.Copy
Set NWBK = ActiveWorkbook
NWBK.Sheets(1).Name = Nom
NWBK.SaveAs strPath & Nom & ".xlsm", xlOpenXMLWorkbookMacroEnabled
NWBK.Close True
ActiveSheet.Copy After:=Workbooks("Data Manager.xlsm").Sheets(1)
End Sub
Je te laisse tester et ajouter et/ou modifier les tests et MsgBox de ton code initial.

NB: Lors de mes tests, Excel est réglé sur la présence d'une seule feuille lorsqu'on crée un nouveau classeur
(et pas trois ce qui est souvent le réglage par défaut)
 
Dernière édition:

Mister Binaire

XLDnaute Occasionnel
Re : Associer 3 macros de sauvegarde

Merci de ta réponse Staple 1600

Ci-dessous la macro modifié avec tes lignes de code et qui fonctionne enfin comme je le voulais (je mets des commentaires sur les lignes de code pour mieux comprendre leur fonctionnement).

En PJ le fichier Data Manager pour que tu vois le travail accomplit.

Cependant, j'ai encore besoin de ton aide : Si le collaborateur modifie son fichier source puis le sauvegarde le nom de son fichier n'est pas écrasé et remplacer dans le fichier data Manager . Comment faire pour que cela fonctionne ?

Merci par avance de ton aide .

Sub Sauvegarde()
Dim NWBK As Workbook, strPath$
Dim Chemin As String, Fichier As String
If ActiveWorkbook.Saved = True Then Exit Sub
Chemin = "C:\Users\Jean-Philippe\Downloads\"
Fichier = Range("B2").Value & " " & Range("B3")

'Alertes utilisateur
'Type1 : Dossier non disponible
If Right(Chemin, 1) <> "\" Then MsgBox "Chemin non conforme , manque le \ à la fin ": Exit Sub
If Dir(Chemin & "\", vbDirectory) = "" Then MsgBox " Attention, Dossier de stockage non disponible": Exit Sub
'Type2 : Nom du fichier non renseigné
If Range("B2").Value = "" Or Range("B3").Value = "" Or Fichier = "" Then MsgBox " Attention, Merci de renseigner le Numéro de la Demande et le Nom du Produit pour Sauvegarder": Exit Sub
If Dir(Chemin & Fichier) <> "" Then
If MsgBox("Fichier déjà existant , voulez vous continuer", vbYesNo) = vbNo Then Exit Sub
End If
Application.DisplayAlerts = False ' Désactive les alertes en validant l'action par défaut
On Error Resume Next ' s'il y a une erreur sur la prochaine ligne , l'on exécute la ligne suivante
ActiveWorkbook.SaveAs Chemin & Fichier, FileFormat:=xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False 'Sauvegarde du Fichier Master
ActiveSheet.Copy After:=Workbooks("Data Manager.xlsm").Sheets(1) 'Copie de la feuille 1 dans le Data Manager
ActiveWorkbook.Sheets("Sommaire").Name = Fichier 'L'onglet Sommaire Prend le nom du Fichier de Sauvegarde

If Err Then 'Si il y a eu une erreur
'échec de lecture ou d'écriture à partir d'un fichier.
If Err.Number = 1004 Then MsgBox "échec de lecture ou d'écriture à partir d'un fichier."
' Liste et message appropriés en fonction des erreur rencontrées
'Exemple
If Err.Number = 75 Then MsgBox "Erreur d'accès chemin/fichier (erreur 75)"
End If
On Error GoTo 0 'Rend la main au gestionnaire d'erreur
Application.DisplayAlerts = True ' Réactivation des alertes
End Sub
 

Pièces jointes

  • Data Manager.xlsm
    49.7 KB · Affichages: 23
  • Data Manager.xlsm
    49.7 KB · Affichages: 27
  • Data Manager.xlsm
    49.7 KB · Affichages: 23

Discussions similaires

Statistiques des forums

Discussions
312 098
Messages
2 085 267
Membres
102 845
dernier inscrit
Baticle.geo