portee et persistance de variables..

Le
Emile63
Bonjour a tous,
j'ai plusieurs fichiers Excel (et Word) avec lesquels je travaille
durant la journée, et je souhaiterais lancer une macro a l'ouverture
de l'application qui me permette quand j'enregistre, modifie ou quitte
les documents (sensibles), faire une copie de sauvegarde sur ma clé
USB automatiquement.
A cet effet je souhaiterais me servir d'une macro de ce type, glanée
pour Word, mais je n'arrive pas à la faire fonctionner avec Excel (Ni
avec Word).
Est-ce que quelqu'un pourrait me mettre sur la voie, :-)

J'essaie d'abord de mettre une table (persistante) en mémoire des
différents fichiers importants mais les variables ne persistent pas
Puis ça boîte de tous les cotés
Merci d'avance pour votre aide,

Emile
=
-
Sub TableDesFichiersASauvegarder (MaCle, Mondocument)
Dim Mondocument(10) As String
Mondocument(0) = "MonDocument_ImportantA.xls"
Mondocument(1) = "MonDocument_ImportantB.xls"
Mondocument(2) = "MonDocument_ImportantC.xls"
Mondocument(3) = "MonDocument_ImportantD.xls"
Mondocument(4) = "MonDocument_ImportantE.xls"
Mondocument(5) = "MonDocument_ImportantF.xls"
Mondocument(6) = "MonDocument_ImportantG.xls"
Mondocument(7) = "MonDocument_ImportantH.xls"
Mondocument(8) = "MonDocument_ImportantI.xls"
Mondocument(9) = "MonDocument_ImportantJ.xls"
MaCle= "F:Backup"

End Sub

Sub Copie()
Dim Fichier1 As String, Fichier2 As String ', MaCle As String,
MonDocument As String
On Error Resume Next
Call TableDesFichiersASauvegarder (MonDocument , MaCle )
Set Fic = ActiveWorkbook
Fic.Save
Fichier1 = Fic.FullName
Fichier2 = MaCle & Fic.Name
Fic.Close
FileCopy Fichier1, Fichier2
Documents.Open Fichier1
End Sub

Sub FileSave()
'Dim Mondocument As String
If ActiveWorkbook.Name = Mondocument Then
Call Copie
Else
ActiveWorkbook.Save
End If
End Sub

Private Sub Document_Close()
If ActiveWorkbook.Saved = False Then
Call TableDesFichiersASauvegarder
Application.ActiveWorkbook.SaveAs FileName:=MaCle & Mondocument
End If
End Sub
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Emile63
Le #21102351
Bonjour a tous,

Jusqu'a present y'a pas trop d'idees / suggestions sur mon sujet. :-
(

Si je formule ma question differemment, je dirais:
Comment faire pour qu'une variable s'inisialise a l'ouverture d'excel
et reste permanente, quelque soit le nombre de documents qu'on traite
durant la session.
De plus, si cette variable est une table.
Merci de votre aide,

Emile
Modeste
Le #21103941
Bonsour® Emile63 avec ferveur ;o))) vous nous disiez :

Jusqu'a present y'a pas trop d'idees / suggestions sur mon sujet.
:- (

Si je formule ma question differemment, je dirais:
Comment faire pour qu'une variable s'inisialise a l'ouverture d'excel
et reste permanente, quelque soit le nombre de documents qu'on traite
durant la session.
De plus, si cette variable est une table.




pour creer la variable :
Application.ExecuteExcel4macro "SET.NAME(""Emile"",TRUE)"

pour utiliser la variable :
MsgBox Application.ExecuteExcel4Macro("Emile")

pour une table (Ma_plage) :
Application.ExecuteExcel4Macro "SET.NAME(""Ma_Plage"",Feuil1!R1C1:R1C4)"

voir les explications et détails là :
http://xcell05.free.fr/pages/prog/hnamespace.htm#Particularités
Emile63
Le #21106401
Bonjour Modeste,

Merci pour cette explication (+lien) ;-)
J'avoue que ça complique un peu. C'est pas ce que "je pensais".... Et
dépasse mon niveau VBA. :-((
Je m'étais imaginé une macro "générique" qui reconnaissant (ou non) le
nom de certains fichiers détermines (dans une table en variable), et
si oui, en faisait également une copie (SaveAs) sur ma clé USB.
Sauf aide"divine" sur le sujet, je crois que je vais devoir revoir un
peu l'idée... En mettant sur chaque fichier à garder ces codes VBA
permettant la copie de mes fichiers sur la clé.
Encore merci pour ton aide,

emile
michdenis
Le #21107681
Bonjour,

Voici une façon de faire. La procédure suppose
qu'il n'y a qu'un disque dur amovible de brancher et
que c'est sur ce dernier où tu veux faire l'enregistrement.

Il est suggéré d'effectuer la sauvegarde dans un fichier
temporaire directement sur le disque dur et de le copier
dans un deuxième temps sur le disque amovible.

Tu copies ce qui suit dans un module standard.
À tester, je n'ai pas à portée de la main de type de bidule !

'-------------------------------------------------
Sub test()
Dim MonFichier As String, Nom As String
Dim MonLecteur As String, Prêt As Boolean

MonLecteur = RemovableDisk(MonLecteur)
If MonLecteur <> "" Then
Prêt = EstPret(MonLecteur)
Else
MsgBox "Aucun disque amovible détecté."
End If
If MonLecteur <> "" And Prêt = True Then
Nom = ThisWorkbook.Name
'Enregistrement sur le DD de la sauvegarde
'temporairement
Fichier = "c:MonFichierExcel_Temp.xls"
ThisWorkbook.SaveCopyAs Fichier
VBA.FileCopy Fichier, MonLecteur & Nom
'destruction du fichier temporaire
Kill Fichier
Else
MsgBox "Le lecteur amovible n'est pas prêt."
End If
End Sub
'-------------------------------------------------

Function RemovableDisk(MonLecteur As String)
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\" & strComputer & "rootcimv2")
Set colDisks = objWMIService.ExecQuery _
("Select * from Win32_LogicalDisk")
For Each Objdisk In colDisks
'2 constante numérique pour disque dur "removable"
If Objdisk.DriveType = 2 Then
RemovableDisk = Objdisk.Name & ""
Exit Function
End If
Next
End Function
'-------------------------------------------------
Function EstPret(Lecteur As String)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set colDrives = objFSO.Drives
For Each objdrive In colDrives
If Lecteur = objdrive & "" Then
If objdrive.IsReady = True Then
EstPret = objdrive.IsReady
End If
End If
Next
End Function
'-------------------------------------------------




"Emile63"
Bonjour a tous,
j'ai plusieurs fichiers Excel (et Word) avec lesquels je travaille
durant la journée, et je souhaiterais lancer une macro a l'ouverture
de l'application qui me permette quand j'enregistre, modifie ou quitte
les documents (sensibles), faire une copie de sauvegarde sur ma clé
USB automatiquement.
A cet effet je souhaiterais me servir d'une macro de ce type, glanée
pour Word, mais je n'arrive pas à la faire fonctionner avec Excel (Ni
avec Word).
Est-ce que quelqu'un pourrait me mettre sur la voie, :-)

J'essaie d'abord de mettre une table (persistante) en mémoire des
différents fichiers importants mais les variables ne persistent pas...
Puis ça boîte de tous les cotés...
Merci d'avance pour votre aide,

Emile
-------------------------------------------------------------------------------------------
Sub TableDesFichiersASauvegarder (MaCle, Mondocument)
Dim Mondocument(10) As String
Mondocument(0) = "MonDocument_ImportantA.xls"
Mondocument(1) = "MonDocument_ImportantB.xls"
Mondocument(2) = "MonDocument_ImportantC.xls"
Mondocument(3) = "MonDocument_ImportantD.xls"
Mondocument(4) = "MonDocument_ImportantE.xls"
Mondocument(5) = "MonDocument_ImportantF.xls"
Mondocument(6) = "MonDocument_ImportantG.xls"
Mondocument(7) = "MonDocument_ImportantH.xls"
Mondocument(8) = "MonDocument_ImportantI.xls"
Mondocument(9) = "MonDocument_ImportantJ.xls"
MaCle= "F:Backup"

End Sub

Sub Copie()
Dim Fichier1 As String, Fichier2 As String ', MaCle As String,
MonDocument As String
On Error Resume Next
Call TableDesFichiersASauvegarder (MonDocument , MaCle )
Set Fic = ActiveWorkbook
Fic.Save
Fichier1 = Fic.FullName
Fichier2 = MaCle & Fic.Name
Fic.Close
FileCopy Fichier1, Fichier2
Documents.Open Fichier1
End Sub

Sub FileSave()
'Dim Mondocument As String
If ActiveWorkbook.Name = Mondocument Then
Call Copie
Else
ActiveWorkbook.Save
End If
End Sub

Private Sub Document_Close()
If ActiveWorkbook.Saved = False Then
Call TableDesFichiersASauvegarder
Application.ActiveWorkbook.SaveAs FileName:=MaCle & Mondocument
End If
End Sub
michdenis
Le #21108181
Remplace cette section "sub Test()" par celle-ci :

N.B- Le principe serait le même s'il y avait plusieurs
disques amovibles... il faudrait simplement ajouter
une interaction avec l'usager pour lui demander de
retenir le disque dur amovible où l'enregistrement
doit s'effectuer.

'-------------------------------------------
Sub test()
Dim MonFichier As String, Nom As String
Dim MonLecteur As String, Prêt As Boolean

MonLecteur = RemovableDisk(MonLecteur)
If MonLecteur <> "" Then
Prêt = EstPret(MonLecteur)
If Prêt = False Then
MsgBox "Le lecteur amovible n'est pas prêt."
Exit Sub
End If
Else
MsgBox "Aucun disque amovible détecté."
Exit Sub
End If
'Nom actuel du Classeur
Nom = ThisWorkbook.Name
'Enregistrement sur le DD de la sauvegarde
'temporairement
Fichier = "c:MonFichierExcel_Temp.xls"
ThisWorkbook.SaveCopyAs Fichier
VBA.FileCopy Fichier, MonLecteur & Nom
'destruction du fichier temporaire
Kill Fichier
End Sub
'-------------------------------------------
Emile63
Le #21110981
Merci Michdenis pour ton aide. :-)

Je test tous ça (ce prochain Week-end) et repasserai pour te tenir au
courant.

Cordialement,

Emile
Publicité
Poster une réponse
Anonyme