Bonjour à tous,
Je viens vers vous après avoir fini mon code pour voir si certains de vous arrive à me l'optimiser (à me le faire tourner plus rapidement quoi) .
C'est 3 codes de workbook qui s'active : -lorsqu'on sauvegarde
-lorsqu'on ouvre
-lorsqu'on modifie une cellule
Ces 3 code on pour but de surveiller un fichier (qui contient ces codes) et de transmettre ces infos à un fichier excel autre qui sert de registre pour dire : là à tel heure lui à ouvert le fichier à modifié tant de cellule et à sauvegarder ou non le fichier
Cela sans que l'utilisateur vois le code s'executer.
La boucle with est là pour se placer dans une case vide pour ne pas réécrire par dessus .
Dans mon fichier registre j'ai en haut de chaque colone : " nom d'utilisateur" puis "date" puis "modifé" puis "nombre de modif" puis s"auvegarde" tout ca sur la meme ligne
Voici mon code
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim fichier As String
Dim Feuil1 As Object
fichier = "I:\Process NOVA Fonte\Service procédés\Privé\Enduits\validation enduit eau Z5\Dossier Projet Validation\Docs projets\fichier registre.xls"
Application.ScreenUpdating = False
Workbooks.Open Filename:="I:\Process NOVA Fonte\Service procédés\Privé\Enduits\validation enduit eau Z5\Dossier Projet Validation\Docs projets\fichier registre.xls"
Application.ActiveWorkbook.Sheets("feuil1").Range("D1").Activate
Do While Not (IsEmpty(ActiveCell))
Selection.Offset(1, 0).Select
Loop
Selection.Offset(-1, 1).Select
ActiveCell.Value = "fichier sauvegarder"
Application.ActiveWorkbook.Save
Application.ActiveWorkbook.Close
Application.ScreenUpdating = True
End Sub
Private Sub Workbook_Open()
Dim fichier As String
Dim Feuil1 As Object
fichier = "I:\Process NOVA Fonte\Service procédés\Privé\Enduits\validation enduit eau Z5\Dossier Projet Validation\Docs projets\fichier registre.xls"
user = Environ("username")
Application.ScreenUpdating = False
Workbooks.Open Filename:="I:\Process NOVA Fonte\Service procédés\Privé\Enduits\validation enduit eau Z5\Dossier Projet Validation\Docs projets\fichier registre.xls"
Application.ActiveWorkbook.Sheets("feuil1").Range("A1").Activate
Do While Not (IsEmpty(ActiveCell))
Selection.Offset(1, 0).Select
Loop
ActiveCell.Value = user
Selection.Offset(0, 1).Select
ActiveCell.Value = Now()
Application.ActiveWorkbook.Save
Application.ActiveWorkbook.Close
Application.ScreenUpdating = True
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim fichier As String
Dim Feuil1 As Object
fichier = "I:\Process NOVA Fonte\Service procédés\Privé\Enduits\validation enduit eau Z5\Dossier Projet Validation\Docs projets\fichier registre.xls"
Application.ScreenUpdating = False
Workbooks.Open Filename:="I:\Process NOVA Fonte\Service procédés\Privé\Enduits\validation enduit eau Z5\Dossier Projet Validation\Docs projets\fichier registre.xls"
Application.ActiveWorkbook.Sheets("feuil1").Range("B1").Activate
Do While Not (IsEmpty(ActiveCell))
Selection.Offset(1, 0).Select
Loop
Selection.Offset(-1, 1).Select
ActiveCell.Value = "Modification de"
Selection.Offset(0, 1).Select
ActiveCell.Value = ActiveCell.Value + 1
Application.ActiveWorkbook.Save
Application.ActiveWorkbook.Close
Application.ScreenUpdating = True
End Sub
Voilà j'espère que ce n'est pas trop indigeste et que vous pourrez m'aidez
Merci d'avance
Je viens vers vous après avoir fini mon code pour voir si certains de vous arrive à me l'optimiser (à me le faire tourner plus rapidement quoi) .
C'est 3 codes de workbook qui s'active : -lorsqu'on sauvegarde
-lorsqu'on ouvre
-lorsqu'on modifie une cellule
Ces 3 code on pour but de surveiller un fichier (qui contient ces codes) et de transmettre ces infos à un fichier excel autre qui sert de registre pour dire : là à tel heure lui à ouvert le fichier à modifié tant de cellule et à sauvegarder ou non le fichier
Cela sans que l'utilisateur vois le code s'executer.
La boucle with est là pour se placer dans une case vide pour ne pas réécrire par dessus .
Dans mon fichier registre j'ai en haut de chaque colone : " nom d'utilisateur" puis "date" puis "modifé" puis "nombre de modif" puis s"auvegarde" tout ca sur la meme ligne
Voici mon code
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Dim fichier As String
Dim Feuil1 As Object
fichier = "I:\Process NOVA Fonte\Service procédés\Privé\Enduits\validation enduit eau Z5\Dossier Projet Validation\Docs projets\fichier registre.xls"
Application.ScreenUpdating = False
Workbooks.Open Filename:="I:\Process NOVA Fonte\Service procédés\Privé\Enduits\validation enduit eau Z5\Dossier Projet Validation\Docs projets\fichier registre.xls"
Application.ActiveWorkbook.Sheets("feuil1").Range("D1").Activate
Do While Not (IsEmpty(ActiveCell))
Selection.Offset(1, 0).Select
Loop
Selection.Offset(-1, 1).Select
ActiveCell.Value = "fichier sauvegarder"
Application.ActiveWorkbook.Save
Application.ActiveWorkbook.Close
Application.ScreenUpdating = True
End Sub
Private Sub Workbook_Open()
Dim fichier As String
Dim Feuil1 As Object
fichier = "I:\Process NOVA Fonte\Service procédés\Privé\Enduits\validation enduit eau Z5\Dossier Projet Validation\Docs projets\fichier registre.xls"
user = Environ("username")
Application.ScreenUpdating = False
Workbooks.Open Filename:="I:\Process NOVA Fonte\Service procédés\Privé\Enduits\validation enduit eau Z5\Dossier Projet Validation\Docs projets\fichier registre.xls"
Application.ActiveWorkbook.Sheets("feuil1").Range("A1").Activate
Do While Not (IsEmpty(ActiveCell))
Selection.Offset(1, 0).Select
Loop
ActiveCell.Value = user
Selection.Offset(0, 1).Select
ActiveCell.Value = Now()
Application.ActiveWorkbook.Save
Application.ActiveWorkbook.Close
Application.ScreenUpdating = True
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim fichier As String
Dim Feuil1 As Object
fichier = "I:\Process NOVA Fonte\Service procédés\Privé\Enduits\validation enduit eau Z5\Dossier Projet Validation\Docs projets\fichier registre.xls"
Application.ScreenUpdating = False
Workbooks.Open Filename:="I:\Process NOVA Fonte\Service procédés\Privé\Enduits\validation enduit eau Z5\Dossier Projet Validation\Docs projets\fichier registre.xls"
Application.ActiveWorkbook.Sheets("feuil1").Range("B1").Activate
Do While Not (IsEmpty(ActiveCell))
Selection.Offset(1, 0).Select
Loop
Selection.Offset(-1, 1).Select
ActiveCell.Value = "Modification de"
Selection.Offset(0, 1).Select
ActiveCell.Value = ActiveCell.Value + 1
Application.ActiveWorkbook.Save
Application.ActiveWorkbook.Close
Application.ScreenUpdating = True
End Sub
Voilà j'espère que ce n'est pas trop indigeste et que vous pourrez m'aidez
Merci d'avance
Dernière édition: