Fermeture automatique après inactivité Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Avatar du membre
eriiic
Passionné d'Excel
Passionné d'Excel
Messages : 9'710
Appréciations reçues : 446
Inscrit le : 7 février 2010
Version d'Excel : 2010fr

Message par eriiic » 18 juillet 2019, 11:54

Bonjour,

Une seule macro peut tourner à la fois.
Cependant tu peux l'interrompre pour laisser le système traiter les événements en attente.
Essaie en insérant un DoEvents appelé régulièrement dans ta macro (dans une boucle par exemple).

Perso j'opterai plutôt pour une case à cocher sur feuille (ou un ToggleButton) que tu testerais pour savoir si tu dois mettre fin à ta macro. Toujours avec un DoEvents régulier dans ta macro pour traiter les événements.
Ton InputBox est trop 'prenant'.
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.
(les Shadoks)

En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
T
Tchio77
Membre habitué
Membre habitué
Messages : 68
Appréciation reçue : 1
Inscrit le : 24 avril 2014
Version d'Excel : 2016

Message par Tchio77 » 18 juillet 2019, 12:33

Bonjour à toi et merci pour ta réponse.

Enfaite, le but est de pouvoir fermer le fichier car il peut-être utilisé par plusieurs personne.
Si le fichier n'est pas fermé, alors les autres ne peuvent pas l'utiliser.

J'ai essayé en partagé, mais ne fonctionne pas avec les macros.

Le DoEvents marcherais mais pas si l'InputBox est ouvert et en attente, alos ne fonctionne pas.

Je joint mon fichier au cas où..
Merci pour votre aide,
Douchette4.xlsm
(25.25 Kio) Téléchargé 6 fois
Il n'y a que ceux qui ne font rien qui ne se trompent jamais :wink:
Avatar du membre
eriiic
Passionné d'Excel
Passionné d'Excel
Messages : 9'710
Appréciations reçues : 446
Inscrit le : 7 février 2010
Version d'Excel : 2010fr

Message par eriiic » 18 juillet 2019, 18:59

Mais il ne faut pas scanner dans un Inputbox, tu t'y prends mal.
Utilise une cellule dédiée, et tu utilises son événement Change pour traiter chaque scan.
A la fin du traitement tu resélectionnes ta cellule dédiée pour préparer le scan suivant.
Ex avec B1 :
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$B$1" Then
        ' scan validé
        ' traitement
        ' ...
        ' ...
        ' préparer scan suivant
        Application.EnableEvents = False
        [B1].ClearContents
        [B1].Select
        Application.EnableEvents = True
    End If
End Sub
Et ton programme de traitement du scan me parait scabreux. J'ai renoncé à comprendre. Tu devrais mieux préparer ton besoin et repartir d'une feuille blanche.
eric

PS : il faut absolument définir le paramètre LookAt de ton .Find() avec :=xlWhole ou :=xlPart
Sinon il dépend de la dernière recherche manuelle faite, source de bug.
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.
(les Shadoks)

En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message