réinitilisation d'une macro

  • Initiateur de la discussion Initiateur de la discussion Luigi
  • 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 !

Luigi

XLDnaute Occasionnel
Bonjour à tous,

J’ai un problème je souhaite réinitialiser une macro avant sont exécution mais je ne trouve pas la solution. Ma première macro déclenche la deuxième en fonction quand cellule B7=1 et cette deuxième macro s’exécute toute les 10s, quand la valeur de B7 =0 la deuxième macro ne s’exécute plus. Jusqu'à là c’est Ok, mais quand la valeur B7=1 la deuxième macro s’exécute mais je n’est plus le cycle de 10s, d’où la volonté de réinitialiser ma deuxième macro lors de sont exécution. Quelqu’un peut-il m’aider, merci

Macro 1

Private Sub Worksheet_Change(ByVal Target As Range)
If Range("b7").Value = 1 Then
CreaFichierDebit1
End If
End Sub

Macro 2

Sub CreaFichierDebit1()
'
' CreaFichierDebit1 Macro
' Macro enregistrée le 29/10/2008 par lneves
'
Sheets("DonneesAuto").Select
If Range("b7").Value = 1 Then
ChDir "U:\QUALITE\QC\Q-DAS\Q-Das _ Suivi débit en fonderie\TestMacro"
Workbooks.OpenText Filename:="U:\QUALITE\QC\Q-DAS\Q-Das _ Suivi débit en fonderie\TestMacro\Débit1.DFQ", _
Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
Array(2, 1))
Windows("DonnéesAutomate_New.xls").Activate
Sheets("DonneesDebit1").Select
Cells.Select
Selection.Copy
Windows("Débit1.DFQ").Activate
Cells.Select
ActiveSheet.Paste
ActiveWindow.LargeScroll Down:=-1
ActiveWorkbook.SaveAs Filename:="U:\QUALITE\QC\Q-DAS\Q-Das _ Suivi débit en fonderie\TestMacro\Répertoire d'export\Débit1" & Format(Now, " yy-mm-dd @ hh\h mm\m ss\s") & ".DFQ" _
, FileFormat:=xlTextPrinter, CreateBackup:=False
ActiveWorkbook.Close SaveChanges:=False
End If
Application.OnTime Now + TimeValue("00:00:10"), "CreaFichierDebit1"
DoEvents
End Sub
 
Re : réinitilisation d'une macro

Bonjour,
Sans pouvoir tester et à priori, en annulant le paramétrage précédent de OnTime lorsque B7 passe à 0
Private Sub Worksheet_Change(ByVal Target As Range)
Temps = Now + TimeValue("00:00:10")
If Range("B7") = 1 Then
Application.OnTime Temps, "CreaFichierDebit1"
Else
On Error Resume Next
Application.OnTime Temps, "CreaFichierDebit1", , False
End If

End Sub

Edit : enlève le OnTime dans ce que tu appelles ta macro2
A+
kjin
 
Dernière édition:
Re : réinitilisation d'une macro

Re,
A la suite de ce fil
https://www.excel-downloads.com/threads/reinitilisation-dune-macro.107482/
J'ai testé avec un fichier et des données bidons avant de te soumettre le code et chez moi c'est OK
Comment est modifiée la cellule B7 ?
Y a t-il un temps de latence entre les chgts de valeurs en B7, parce que le seul soucis que j'ai rencontré c'est qu' une procédure entamée va jusqu'à son terme.
Fait passer le code complet et mieux encore, un extrait du fichier débarrassé de toutes les données inutiles pour les tests.
A+
kjin
 
Re : réinitilisation d'une macro

Le changement dans la cellule "B7" se fait manuellement, quand je fais le test:

1° quand la cellule "B7" passer à 1 il faut attendre 10s pour la "macro2" s'éxecute, je voudrais qu'elle soit exécuté directement.

2° la "macro2" s'éxecute qu'une seul fois, je pensais qu'avec la fonction Application.OnTime tant que la cellule "B7" a la valeur 1 la "macro2" toute en boucle avec une fréquence de 10s.
je fais peut-être quelque chose qui bloque la boucle
 
Re : réinitilisation d'une macro

Re,
Essaie comme ceci

Dans le module de la feuille

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$7" And Target = 1 Then
CreaFichierDebit1
Else
StopMacro
End If
End Sub

Dans un module standard
Code:
Sub CreaFichierDebit1()
ChDir "U:\QUALITE\QC\Q-DAS\Q-Das _ Suivi débit en fonderie\TestMacro"
Workbooks.OpenText Filename:="U:\QUALITE\QC\Q-DAS\Q-Das _ Suivi débit en fonderie\TestMacro\Débit1.DFQ", _
Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, _
Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
Array(2, 1))
Windows("DonnéesAutomate_New.xls").Activate
Sheets("DonneesDebit1").Select
Cells.Select
Selection.Copy
Windows("Débit1.DFQ").Activate
Cells.Select
ActiveSheet.Paste
ActiveWindow.LargeScroll Down:=-1
ActiveWorkbook.SaveAs Filename:="U:\QUALITE\QC\Q-DAS\Q-Das _ Suivi débit en fonderie\TestMacro\Répertoire d'export\Débit1" & Format(Now, " yy-mm-dd @ hh\h mm\m ss\s") & ".DFQ" _
, FileFormat:=xlTextPrinter, CreateBackup:=False
ActiveWorkbook.Close SaveChanges:=False
Application.OnTime Now + TimeValue("00:00:10"), "CreaFichierDebit1"
DoEvents
End Sub

Sub StopMacro()
On Error Resume Next
Application.OnTime Now + TimeValue("00:00:10"), "CreaFichierDebit1", , False
End Sub

Je ne peux évidemment pas tester avec tes données
A+
kjin
 
Dernière édition:
Re : réinitilisation d'une macro

merci Kjin

je n'ai pas pu encore testé, je le ferai dés demain matin. J'ai actuellment un autre code qui a l'air de fonction aussi.

Var = Timer

Do While Timer - Var < 10
DoEvents
Loop

mais il également que je le test.
 
- 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
4
Affichages
720
Réponses
7
Affichages
820
Réponses
5
Affichages
680
Réponses
9
Affichages
864
Réponses
10
Affichages
982
W
  • Résolu(e)
Réponses
17
Affichages
2 K
Retour