Excel, macro: enregistrement et fermeture du fichier en cas d'inactivité pendant 10 (tps à voir)

Hello les copains,

Je sais qu'il existe des forums dédiés à Excel mais je tente ma chance sur Lynkoa car je vois qu'il y a des connaisseurs et de plus je n'y connais pas grand chose en macro.

Le but de cette macro est qu'elle se lance à l'ouverture du fichier et qu'au bout d'un certain temps d'inactivité de celui-ci il s'enregistre et se ferme. Nous sommes à plusieurs à utiliser se fichier et sur des sites différents et de plus nous quittons régulièrement nos postes de travail donc s'il l'un d'entre nous oublie de le quitter ça embête les autres.

MERCI D'AVANCE POUR VOS RÉPONSES ^_^

Bonjour,

Pour le lancement d'une macro à l'ouverture de Excel, des pistes sur http://www.commentcamarche.net/forum/affich-1903604-vba-executer-une-macro-a-l-ouverture-de-excel

et pour le timer sur https://www.developpez.net/forums/d24813/logiciels/microsoft-office/excel/macros-vba-excel/timer-feuille-excel/

Cordialement,

1 « J'aime »

Merci d.roger, je regarderai si j'y arrive et si je comprends quelque chose. 

Voici un fichier qui devrait se fermer après 30 secondes sans y toucher (du moins ça fonctionne chez moi).

J'ai utilisé dans ThisWorkbook :

Sub Workbook_open()
    Compteur = 0
    Feuil1.Tempo
End Sub

Et dans Feuil1 :

Dim Compteur As Integer

Sub Tempo()
    Application.OnTime Now + TimeValue("00:00:01"), "Feuil1.maMacro"
End Sub

Sub maMacro()
    Compteur = Compteur + 1
    If Compteur = 30 Then
        Workbooks("Classeur test.xlsm").Save
        ActiveWorkbook.Close
        Exit Sub
    End If
    
    Feuil1.Tempo
End Sub

Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count = 0 Then
        Compteur = 0
        Feuil1.Tempo
    End If
End Sub

Bien sûr c'est juste un test donc à vérifier, améliorer, etc

Cordialement,

 


classeur_test.xlsm

Quelques modifications suite à différents tests :

J'ai utilisé dans ThisWorkbook :

Sub Workbook_open()
    Compteur = 0
    Feuil1.Tempo
End Sub

Et dans Feuil1 :

Dim Compteur As Integer

Sub Tempo()
    Application.OnTime Now + TimeValue("00:01:00"), "Feuil1.maMacro"
End Sub

Sub maMacro()
    Compteur = Compteur + 1
    If Compteur = 10 Then
        Workbooks("Classeur test.xlsm").Save
        ActiveWorkbook.Close
        Exit Sub
    End If
    Feuil1.Tempo
End Sub

Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count <> 0 Then
        Compteur = 0
    End If
End Sub

Les modifications principales sont dans la fonction Worksheet_Change avec If Target.Count = 0 qui devient If Target.Count <> 0 ainsi que la suppression de la ligne Feuil1.Tempo.

Cordialement,


classeur_test.xlsm

je ne comprend pas, je n'y arrive pas... Quand j'ouvre votre fichier excel ça bug...


enregistrement_et_fermeture_du_fichier_en_cas_dinactivite_pendant_10.jpg

Là il me dit L'indice n'appartient pas à le sélection


lindice_nappartient_pas_a_le_selection.png

Message que je n'ai jamais eu pendant mes tests, je suis sur Excel 2010. Je ne sais pas si cela peut avoir un impact.

Code final :

J'ai utilisé dans ThisWorkbook :

Sub Workbook_open()
    Compteur = 0
    Feuil1.Tempo
End Sub

Et dans Feuil1 :

Dim Compteur As Integer

Sub Tempo()
    Application.OnTime Now + TimeValue("00:01:00"), "Feuil1.maMacro"
End Sub

Sub maMacro()
    Compteur = Compteur + 1
    If Compteur = 10 Then
        Workbooks(ThisWorkbook.Name).Save
        ActiveWorkbook.Close
        Exit Sub
    End If
    
    Feuil1.Tempo
End Sub

Sub Worksheet_Change(ByVal Target As Range)
    If Target.Count <> 0 Then
        Compteur = 0
    End If
End Sub


classeur_test.xlsm
2 « J'aime »