Dupliquer un workbook

marrek

XLDnaute Nouveau
Bonjour,

j'ai un workbook "vide" que differentes personnes doivent remplir. J'aimerais créer une base de donnée de ces classeurs une fois remplis!
Ma question est donc la suivante:

Existe-t-il une macro permettant de dupliquer le fichier initial "classeur0" (et donc toutes les valeurs/formules/formes.... qui y sont attachées), d'enregistrer cette réplique sous le nom: "C:\marrek\"nomprojet-date-ajout perso", tout en gardant le fichier initial au meme nom et ouvert.
ça c'est mon premier problème.
Le second c'est que le "classeur0" a des macros qui réinitialise les valeurs a son ouverture (workbook open) et que si on duplique betement le classeur on aura perdu les données à l'ouverture de la réplique si celle -ci est fermée.
Est il possible de copier le classeur sauf ces fameuses macro?

Pouvez vous m'aider, please!!!
J'ai vu par ci par là, quelques codes comme ci dessous, mais rien d'utile et de compréhensible avec mon faible niveau


Sub EnvoiMail()
Dim NF$, Wbk As Workbook
ActiveWorkbook.Save
On Error Resume Next
NF = "M:\Demande de congé du " & Format(Date, "ddmmyyyy") & ".xls"

En vous remerciant
M.
 

tototiti2008

XLDnaute Barbatruc
Re : Dupliquer un workbook

Bonjoue marrek,

pour la copie d'un classeur, fouille du côté de

Activeworkbook.SaveCopyAs "C:\temp\copie.xls"

pour la 2ème partie, plus compliqué.
Moi je te proposerais plutôt de désactiver les évènements avant d'ouvrir la copie du classeur

Application.EnableEvents = False

puis ne pas oublier de réactiver

Application.EnableEvents = True

Mais si tu veux vraiment supprimer le code, fouille de ce côté là :

Visual Basic Editor - Club des décideurs et professionnels en Informatique
 

marrek

XLDnaute Nouveau
Re : Dupliquer un workbook

Bonjour tototiti2008, et merci de m'aider!

Alors oui j'aimerais bien faire ce que tut proposes sauf que je n'ai aucune idée (débutant un jour...débutant toujours il semblerait) de comment faire cela.
Du coup je te propose de faire cela directement sur le code en question si ce n'est pas trop te demander!!?

Voici le code qui montre les évenementiels à désactiver lors de l'enregistrment sous un nouvel enregistrement:
Code:
Private Sub Workbook_Open()
'on masque une feuille qui nous sert pour extraire des recettes suivant un filtre élaboré
' Macro à recopier pour copier dans chque cache de cible les changement de données.
'C'est sur les caches que seront effectué les renvois dans les listes
'qui sont affichées dans pour l'étude
ActiveWorkbook.Sheets("maFeuilleAttente").Activate
'
'je copie dans le cache les données de la feuille cible1,
'pour prendre en compte dans mes calculs les évolutions futures (ajout de préoccupation ...)
Application.CommandBars("Formatting").Visible = False
Application.CommandBars("Standard").Visible = False
Application.CommandBars("Worksheet Menu Bar").Enabled = False

ActiveWindow.DisplayWorkbookTabs = False 'je désactive l'affichage des onglets "feuil"

Application.ScreenUpdating = False ' je bloque l'ecran sur la feuille "maFeuilleAttente"
Dim i As Integer
Dim j As String
Dim k As Integer
Dim l As Integer
'macro à copier à dans les feuilles données cibles si on fait un changement de donnée, pour avoir les répercussions directes

For i = 1 To 14
    j = i

    Sheets("Données Cible" & j).Select
    Range("E9:F100").Select
    Selection.Copy
    Sheets("Cachecible" & j).Visible = True
    Sheets("Cachecible" & j).Select
    Range("A4").Select
    ActiveSheet.Paste
    
    Sheets("Données Cible" & j).Select
    Range("M9:P100").Select
    Selection.Copy
    Sheets("Cachecible" & j).Select
    Range("C4").Select
    ActiveSheet.Paste
Sheets("Données Cible" & j).Select
Range("A6").Select
    
    
Next i
For i = 1 To 14
    j = i
Sheets("Cachecible" & j).Visible = True
Next i

For i = 1 To 14
    j = i
Sheets("Données cible" & j).Tab.ColorIndex = 4
Next i
 '[COLOR="DarkGreen"]voici ce qu'il faudrait désactiver: je ne veux pas que la réinitialisation  (le fait de mettre des "?" dans les cellules au démarrage) se fasse lors d'un nouvel enregistrement "saveAs"...[/COLOR]
For i = 1 To 14
    j = i

    Sheets("Cible" & j).Select
  
            For k = 4 To 36
            If IsEmpty(Cells(k, 3)) = False Then
            Cells(k, 4).Value = "?"
            End If
        Next k
       '-- Appliquer une couleur jaune à l'onglet de la Feuil1
    Sheets("Cible" & j).Tab.ColorIndex = 6
Next i
 ' je fais appel au module "initialisation2"
 Sheets("Bilan").Select
For l = 3 To 61
   
        If IsEmpty(Cells(l, 1)) = False And Cells(l, 1).Value <> "Validation possible ?" Then
        Cells(l, 3).Value = "?"
        ElseIf Cells(l, 1).Value = "Validation possible ?" Then Exit For
        End If
Next l
[COLOR="darkgreen"]'fin de la partie evenementielle qui pose probleme[/COLOR]
Sheets("Calcul").Visible = False
Sheets("MOA").Visible = False
Application.ScreenUpdating = True
ActiveWindow.DisplayWorkbookTabs = True


Application.CommandBars("Formatting").Visible = True
Application.CommandBars("Standard").Visible = True
Application.CommandBars("Worksheet Menu Bar").Enabled = True
Sheets("Bilan").Select
UsfMenu.Show

End Sub

Ene esperant ne pas trop forcer la main!
je vous remercie bcp
cordialement
 

marrek

XLDnaute Nouveau
Re : Dupliquer un workbook

Re,
et du coup si je désire emepecher l'evenementiel d'ouverture en totalité, comment il faudrait que je fasse?
Parce que forcement le code suivant ne marchepas...

Private Sub Sauvegarder ()
Application.EnableEvents (workbooks open())= False
Activeworkbook.SaveCopyAs "C:\temp\copie.xls"
End sub

En vous remerciant
 

Discussions similaires

Statistiques des forums

Discussions
312 435
Messages
2 088 396
Membres
103 838
dernier inscrit
noureddine