Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Réinitialisation d'un petit tableau

  • Initiateur de la discussion Initiateur de la discussion Chri8Ed
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Chri8Ed

XLDnaute Occasionnel
Bonjour à tous

J'ai réalisé un petit tableau avec 3 cellules d'entrée de données (A1:C1)
A partir de ces 3 cellules, j'obtiens un résultat en D1

Je souhaiterais que mon tableau se réinitialise toutes les 30 secondes environs en
1) En effaçant les 3 cellules A1, B1 et C1
2) En replaçant la cellule active en A1 toutes les 30 secondes environs (Le curseur doit donc être sur A1)

Je souhaiterais aussi que :
Une entrée en B1 doit effacer la cellule C1 si celle-ci est pleine
Inversement une entrée en C1 doit effacer B1 si celle-ci est pleine

SI quelques fois quelqu'un a réalisé ce genre de macros peut m'aider
Merci d'avance

Je joins un exemple
(Je n'ai pas mis les calculs car cela alourdit le fichier et ne me pose pas de problème)

A+
 

Pièces jointes

Re : Réinitialisation d'un petit tableau

Bonjour.

Dans un module standard :
VB:
Option Explicit
Private Temps As Date

Sub Proc()
Temps = 0
Application.EnableEvents = False
Feuil1.[A1:C1].Value = Empty
Application.EnableEvents = True
Application.Goto Feuil1.[A1]
Planifier
End Sub

Sub Planifier()
If Temps <> 0 Then Exit Sub
Temps = Now + TimeSerial(0, 0, 30)
Application.OnTime Temps, "Proc"
End Sub

Sub Déplanifier()
If Temps = 0 Then Exit Sub
Application.OnTime Temps, "Proc", Schedule:=False
Temps = 0
End Sub

Si une modification de cellule B1 ou C1 doit remettre à 0 le décompte des 30 secondes, dans le module de la feuille :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$1" Then
   Application.EnableEvents = False
   Me.[C1].Value = Empty
   Application.EnableEvents = True
ElseIf Target.Address = "$C$1" Then
   Application.EnableEvents = False
   Me.[B1].Value = Empty
   Application.EnableEvents = True
Else: Exit Sub: End If
Déplanifier
Planifier
End Sub
 
Dernière édition:
Re : Réinitialisation d'un petit tableau

Oui j'avais vu et pas trop compris.
Ça marche en remplaçant partout "Procédure" par "Proc"
Ajouter aussi Planifier avant la End Sub de la Sub Proc

Et dans ThisWorkbook :
VB:
Private Sub Workbook_Open()
Planifier
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Déplanifier
End Sub
 
Re : Réinitialisation d'un petit tableau

Ah oui, j'avais oublié de signaler ça aussi: C'est pas TimeValue mais TimeSerial.
et aussi dans Déplanifier c'est Schedule:=False
En fait je n'ai mis, après tests, le code définitif du poste #2 qu'à 10h 30.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
531
Réponses
12
Affichages
1 K
Réponses
8
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…