Bonjour a tous,
j'ai plusieurs fichiers Excel (et Word) avec lesquels je travaille
durant la journ=E9e, 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=E9
USB automatiquement.
A cet effet je souhaiterais me servir d'une macro de ce type, glan=E9e
pour Word, mais je n'arrive pas =E0 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=E9moire des
diff=E9rents fichiers importants mais les variables ne persistent pas...
Puis =E7a bo=EEte de tous les cot=E9s...
Merci d'avance pour votre aide,
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 =3D ActiveWorkbook
Fic.Save
Fichier1 =3D Fic.FullName
Fichier2 =3D MaCle & Fic.Name
Fic.Close
FileCopy Fichier1, Fichier2
Documents.Open Fichier1
End Sub
Sub FileSave()
'Dim Mondocument As String
If ActiveWorkbook.Name =3D Mondocument Then
Call Copie
Else
ActiveWorkbook.Save
End If
End Sub
Private Sub Document_Close()
If ActiveWorkbook.Saved =3D False Then
Call TableDesFichiersASauvegarder
Application.ActiveWorkbook.SaveAs FileName:=3DMaCle & Mondocument
End If
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Emile63
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
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,
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
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
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
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
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
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,
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
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" a écrit dans le message de groupe de discussion :
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,
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
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" <sanz.emile@gmail.com> a écrit dans le message de groupe de discussion :
3dd50404-fbad-45e4-a24c-0817f6cf3024@a5g2000yqi.googlegroups.com...
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,
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
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" a écrit dans le message de groupe de discussion :
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,
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
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 '-------------------------------------------
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
'-------------------------------------------
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
Merci Michdenis pour ton aide. :-)
Je test tous ça (ce prochain Week-end) et repasserai pour te tenir au courant.
Cordialement,
Emile
Merci Michdenis pour ton aide. :-)
Je test tous ça (ce prochain Week-end) et repasserai pour te tenir au
courant.