comment désactiver une macro avec une autre macro?

albert

XLDnaute Occasionnel
Bonjour à tous et à toutes, forumiens et forumiennes,

Une des mes deux macros effectue un téléchargement toutes les 30 secondes
La seconde télécharge seulement lorsqu’elle est activée

Je voudrais désactiver le téléchargement de la première macro pendant l’exécution de la seconde macro (sinon le graphique utilisant les données de la première macro devient instable)

J’ai essayé de retarder le temps de téléchargement en inscrivant 60000 en Sheets('Feuil1').Cells(1, 10), mais c’est une solution insatisfaisante.

J’ai également essayé de neutraliser la première macro en utilisant
intraday.Enabled = False (nomMacroàNeutraliser. Enabled = False)
ça ne marche pas

quelqu’un aurai une idée, une piste, pour neutraliser cette première macro ???
(il y a peut-être un système de désactivation d’évènements ???)
merci d’avance

albert

&&&&&&&&&&
première macro :
&&&&&&&&&&
Sub intraday()
Sheets('Feuil1').Activate
Columns('A:F').Select
Selection.ClearContents
Range('A1').Select

periode = Sheets('Feuil1').Cells(1, 10) 'Temporisation en secondes

Temps = Now
Increment = periode / (CLng(24 * 60) * 60) ' supprimer le dernier 60 pour une tempo en minutes

While Now < Temps + Increment
DoEvents
Wend
With ActiveSheet.QueryTables.Add(Connection:='URL;, Destination:=[A65536].End(xlUp)(2))
.WebFormatting = xlWebFormattingNone
.WebTables = '8'
.WebDisableDateRecognition = False
.Refresh BackgroundQuery:=False
End With
End Sub
&&&&&&&&&&&&&&&&&
seconde macro :
&&&&&&&&&&&&&&&&&
Sub HISTORIQUE()
Sheets('Feuil2').Activate
Columns('A:F').Select
Selection.Clear
n = Cells(1, 10) 'aujourd'hui

m = n - 365
Range('A1').Select

With ActiveSheet.QueryTables.Add(Connection:= _
'URL; & m & '&dateTo=' & n & '&typeDownload=2' _
, Destination:=[A65536].End(xlUp)(2))
.WebFormatting = xlWebFormattingNone
.Refresh BackgroundQuery:=False
End With

End Sub
[file name=telechargetest_20050620165940.zip size=37320]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/telechargetest_20050620165940.zip[/file]
 

Pièces jointes

  • telechargetest_20050620165940.zip
    36.4 KB · Affichages: 28
F

fraille

Guest
je n'ai pas lu ton code looool Je sais pas si dans ton cas ça marche mais tu peux ajouter une variable booléenne et dire que ce qu'il y a dans ta macro 1 ne s'execute que si la variable booléenne est vraie.
 

albert

XLDnaute Occasionnel
erreur d'envoi pour la pièce jointe, je rectifie
:sick: [file name=TelechargementTest.zip size=33750]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/TelechargementTest.zip[/file]
 

Pièces jointes

  • TelechargementTest.zip
    33 KB · Affichages: 19

albert

XLDnaute Occasionnel
erreur d'envoi pour la pièce jointe, je rectifie
:sick: [file name=TelechargementTest_20050620171033.zip size=33750]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/TelechargementTest_20050620171033.zip[/file]
 

Pièces jointes

  • TelechargementTest_20050620171033.zip
    33 KB · Affichages: 18

Creepy

XLDnaute Accro
Hello all,

Voic mes deux idées fumeuses !!!!

1 - Pourquoi tu ne fais pas une variable Publique genre MacroTourne en Boolean.
Tu mets a true en tout debut de ta 2eme Macro et à False à la fin.
ET dans le premiere tu mets le code suivant :
If MacroTourne=false then
...
ton code
...
end if

et voila comme ca ca ne tourne que quand le 2eme ne tourne pas.

2 - Autre idée fumeuse : Tu rajoute devant toutes les lignes de ta macro 1 des ' (apostrophe) pour passer toutes tes lignes en commentaires. et à la fin de ta macro 2 tu les supprimes.

Mais je pense que cette méthode est trop longue !!

Comme ca en 2mn de réflexion je ferrais la 1ere solution car bcp plus simple !

++

Creepy

PS : je viens de lire la réponse de Fraille : Même chose lol !!!
 

albert

XLDnaute Occasionnel
Bonsoir Creepy,
Je vais essayer tes deux idées ce soir.

Mais déjà, il faut que je corrige le code de la 1ère macro, (c'est mon jour : des doublons dans les envois + des codes erronnés!!!)

pour que le téléchargement s’effectue toutes les 30 secondes, il faut que la macro s’appelle elle-même, donc pour cet exemple il ne faut pas effacer les colonnes => je supprime
Columns('A:F').Select
Selection.ClearContents

et j'ajoute 'CoursJour' en fin de macro

Sub CoursJour()
Sheets('Feuil1').Activate

Range('A1').Select

periode = Sheets('Feuil1').Cells(1, 10) 'Temporisation en secondes

Temps = Now
Increment = periode / (CLng(24 * 60) * 60) ' supprimer le dernier 60 pour une tempo en minutes

While Now < Temps + Increment
DoEvents
Wend
With ActiveSheet.QueryTables.Add(Connection:='URL;, Destination:=[A65536].End(xlUp)(2))
.WebFormatting = xlWebFormattingNone
.WebTables = '8'
.WebDisableDateRecognition = False
.Refresh BackgroundQuery:=False
End With
CoursJour
End Sub

je regarde tes solutions et je te tiens au courant

albert
 

albert

XLDnaute Occasionnel
Re ‘soir,
J’ai écrit Public Sub CoursJour() pour la première macro, puis, dans la seconde
If CoursJour = True Then

CoursJour.Enabled = False
End If

Ça ne marche pas

ta soluce qui consiste à lettre des ' dans le code à partir d'une autre macro, je ne vois pas comment faire

:( :eek:

:)
 

Discussions similaires

Statistiques des forums

Discussions
312 103
Messages
2 085 313
Membres
102 860
dernier inscrit
fredo67