J'ai une petite macro qui me permet de suivre un par un
le développement d'un graphique. Pour avoir un temps
d'arrêt après chaque pas, je n'ai rien trouver de mieux
que de faire apparaître une msgbox (vbyesno) qui me
démande si je veux continuer ou arrêter le processus.
Le problème est que je ne peux pas naviguer dans
le classeur etc. pendant ces temps d'arrêt..
Comment donc créer quelquechose d'analogue à la
fonction "rechercher" intégrée qui laisse la main libre
pour la manipulation des objets ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
anonymousA
Bonjour,
utiliser un UF non modal avec un bouton avec une variable de niveau module dans le UF qui sera incrémentée chaque fois que tu cliqueras sur le bouton pour relancer la suite de la macro. Si le UF non modal prend trop de place sur l'écran, on peut utiliser en écrivant une procédure la possibilité de minimiser/maximiser le UF dans la barre des taches.
Cette macro pourrait être appelée par l'evenement click du commandbutton et en passant par paramètre à la macro la valeur de la variable de niveau module, ta macro ne ferait qu'un certain nombre de choses. Si par contre, ta macro , pour fonctionner d'une étape à l'autre , a besoin d'éléments de l'étape précédente, il te faudra conserver ces éléments dans des variables de niveau module du UF.
Exemple à mettre dans le module du UF
Dim bt as integer
Private Sub CommandButton1_Click() mamacro bt End Sub
Sub mamacro(valbouton as integer)
select case valbouton
case 0 'Faire le 1er pas Case 1 'Faire le second pas
'et ainsi de suite
end select
end sub
A+
Bonjour,
utiliser un UF non modal avec un bouton avec une variable de niveau
module dans le UF qui sera incrémentée chaque fois que tu cliqueras
sur le bouton pour relancer la suite de la macro. Si le UF non modal
prend trop de place sur l'écran, on peut utiliser en écrivant une
procédure la possibilité de minimiser/maximiser le UF dans la barre
des taches.
Cette macro pourrait être appelée par l'evenement click du
commandbutton et en passant par paramètre à la macro la valeur de la
variable de niveau module, ta macro ne ferait qu'un certain nombre de
choses. Si par contre, ta macro , pour fonctionner d'une étape à
l'autre , a besoin d'éléments de l'étape précédente, il te faudra
conserver ces éléments dans des variables de niveau module du UF.
Exemple à mettre dans le module du UF
Dim bt as integer
Private Sub CommandButton1_Click()
mamacro bt
End Sub
Sub mamacro(valbouton as integer)
select case valbouton
case 0
'Faire le 1er pas
Case 1
'Faire le second pas
utiliser un UF non modal avec un bouton avec une variable de niveau module dans le UF qui sera incrémentée chaque fois que tu cliqueras sur le bouton pour relancer la suite de la macro. Si le UF non modal prend trop de place sur l'écran, on peut utiliser en écrivant une procédure la possibilité de minimiser/maximiser le UF dans la barre des taches.
Cette macro pourrait être appelée par l'evenement click du commandbutton et en passant par paramètre à la macro la valeur de la variable de niveau module, ta macro ne ferait qu'un certain nombre de choses. Si par contre, ta macro , pour fonctionner d'une étape à l'autre , a besoin d'éléments de l'étape précédente, il te faudra conserver ces éléments dans des variables de niveau module du UF.
Exemple à mettre dans le module du UF
Dim bt as integer
Private Sub CommandButton1_Click() mamacro bt End Sub
Sub mamacro(valbouton as integer)
select case valbouton
case 0 'Faire le 1er pas Case 1 'Faire le second pas
'et ainsi de suite
end select
end sub
A+
michdenis
Bonjour JeNeVois,
Si tu désires seulement un temps d'attente ... il y a ceci :
5 = délai de 5 secondes
'--------------------- Sub Test() Attente 5 End Sub '--------------------- Sub Attente(Sec As Double) Dim T As Double, A As Double
A = Timer: T = A + Sec
Do While T > Timer DoEvents 'Pas obligatoire ... Loop
End Sub '---------------------
Salutations!
"JeNeVois" a écrit dans le message de news:
Bonjour,
J'ai une petite macro qui me permet de suivre un par un le développement d'un graphique. Pour avoir un temps d'arrêt après chaque pas, je n'ai rien trouver de mieux que de faire apparaître une msgbox (vbyesno) qui me démande si je veux continuer ou arrêter le processus. Le problème est que je ne peux pas naviguer dans le classeur etc. pendant ces temps d'arrêt.. Comment donc créer quelquechose d'analogue à la fonction "rechercher" intégrée qui laisse la main libre pour la manipulation des objets ?
Merci d'avance pour toute réponse
Bonjour JeNeVois,
Si tu désires seulement un temps d'attente ... il y a ceci :
5 = délai de 5 secondes
'---------------------
Sub Test()
Attente 5
End Sub
'---------------------
Sub Attente(Sec As Double)
Dim T As Double, A As Double
A = Timer: T = A + Sec
Do While T > Timer
DoEvents 'Pas obligatoire ...
Loop
End Sub
'---------------------
Salutations!
"JeNeVois" <JeNeVois@discussions.microsoft.com> a écrit dans le message de news:
0471D7F4-3DB9-486E-8952-BEBF5A3CB107@microsoft.com...
Bonjour,
J'ai une petite macro qui me permet de suivre un par un
le développement d'un graphique. Pour avoir un temps
d'arrêt après chaque pas, je n'ai rien trouver de mieux
que de faire apparaître une msgbox (vbyesno) qui me
démande si je veux continuer ou arrêter le processus.
Le problème est que je ne peux pas naviguer dans
le classeur etc. pendant ces temps d'arrêt..
Comment donc créer quelquechose d'analogue à la
fonction "rechercher" intégrée qui laisse la main libre
pour la manipulation des objets ?
Si tu désires seulement un temps d'attente ... il y a ceci :
5 = délai de 5 secondes
'--------------------- Sub Test() Attente 5 End Sub '--------------------- Sub Attente(Sec As Double) Dim T As Double, A As Double
A = Timer: T = A + Sec
Do While T > Timer DoEvents 'Pas obligatoire ... Loop
End Sub '---------------------
Salutations!
"JeNeVois" a écrit dans le message de news:
Bonjour,
J'ai une petite macro qui me permet de suivre un par un le développement d'un graphique. Pour avoir un temps d'arrêt après chaque pas, je n'ai rien trouver de mieux que de faire apparaître une msgbox (vbyesno) qui me démande si je veux continuer ou arrêter le processus. Le problème est que je ne peux pas naviguer dans le classeur etc. pendant ces temps d'arrêt.. Comment donc créer quelquechose d'analogue à la fonction "rechercher" intégrée qui laisse la main libre pour la manipulation des objets ?
Merci d'avance pour toute réponse
JeNeVois
Bonjour,
je n'ai pas encore essayé cette possibilité, mais, à prémière vue, une difficulté me semble résider dans le fait qu'il s'agit des arrêts à l'intérieur d'une boucle d'une macro plus longue et qu'il est donc impossible de la rélancer depuis le début. Faudrait-il alors isoler cette boucle et en faire une sub indépendante ? Et dans ce cas ne faudrait-il alors pas 2 boutons, l'un pour initialiser la macro et l'autre pour le processus ? Et à quoi sert en fait l'incrémentation et quelle variable passer à la macro avec le SelectCase ? Je dois avouer que je me sens un peu bredouille...
salutations
Bonjour,
utiliser un UF non modal avec un bouton avec une variable de niveau module dans le UF qui sera incrémentée chaque fois que tu cliqueras sur le bouton pour relancer la suite de la macro. Si le UF non modal prend trop de place sur l'écran, on peut utiliser en écrivant une procédure la possibilité de minimiser/maximiser le UF dans la barre des taches.
Cette macro pourrait être appelée par l'evenement click du commandbutton et en passant par paramètre à la macro la valeur de la variable de niveau module, ta macro ne ferait qu'un certain nombre de choses. Si par contre, ta macro , pour fonctionner d'une étape à l'autre , a besoin d'éléments de l'étape précédente, il te faudra conserver ces éléments dans des variables de niveau module du UF.
Exemple à mettre dans le module du UF
Dim bt as integer
Private Sub CommandButton1_Click() mamacro bt End Sub
Sub mamacro(valbouton as integer)
select case valbouton
case 0 'Faire le 1er pas Case 1 'Faire le second pas
'et ainsi de suite
end select
end sub
A+
Bonjour,
je n'ai pas encore essayé cette possibilité,
mais, à prémière vue, une difficulté me
semble résider dans le fait qu'il s'agit
des arrêts à l'intérieur d'une boucle d'une
macro plus longue et qu'il est donc
impossible de la rélancer depuis le début.
Faudrait-il alors isoler cette boucle et en
faire une sub indépendante ?
Et dans ce cas ne faudrait-il alors pas
2 boutons, l'un pour initialiser la macro
et l'autre pour le processus ?
Et à quoi sert en fait l'incrémentation
et quelle variable passer à la macro
avec le SelectCase ?
Je dois avouer que je me sens un peu
bredouille...
salutations
Bonjour,
utiliser un UF non modal avec un bouton avec une variable de niveau
module dans le UF qui sera incrémentée chaque fois que tu cliqueras
sur le bouton pour relancer la suite de la macro. Si le UF non modal
prend trop de place sur l'écran, on peut utiliser en écrivant une
procédure la possibilité de minimiser/maximiser le UF dans la barre
des taches.
Cette macro pourrait être appelée par l'evenement click du
commandbutton et en passant par paramètre à la macro la valeur de la
variable de niveau module, ta macro ne ferait qu'un certain nombre de
choses. Si par contre, ta macro , pour fonctionner d'une étape à
l'autre , a besoin d'éléments de l'étape précédente, il te faudra
conserver ces éléments dans des variables de niveau module du UF.
Exemple à mettre dans le module du UF
Dim bt as integer
Private Sub CommandButton1_Click()
mamacro bt
End Sub
Sub mamacro(valbouton as integer)
select case valbouton
case 0
'Faire le 1er pas
Case 1
'Faire le second pas
je n'ai pas encore essayé cette possibilité, mais, à prémière vue, une difficulté me semble résider dans le fait qu'il s'agit des arrêts à l'intérieur d'une boucle d'une macro plus longue et qu'il est donc impossible de la rélancer depuis le début. Faudrait-il alors isoler cette boucle et en faire une sub indépendante ? Et dans ce cas ne faudrait-il alors pas 2 boutons, l'un pour initialiser la macro et l'autre pour le processus ? Et à quoi sert en fait l'incrémentation et quelle variable passer à la macro avec le SelectCase ? Je dois avouer que je me sens un peu bredouille...
salutations
Bonjour,
utiliser un UF non modal avec un bouton avec une variable de niveau module dans le UF qui sera incrémentée chaque fois que tu cliqueras sur le bouton pour relancer la suite de la macro. Si le UF non modal prend trop de place sur l'écran, on peut utiliser en écrivant une procédure la possibilité de minimiser/maximiser le UF dans la barre des taches.
Cette macro pourrait être appelée par l'evenement click du commandbutton et en passant par paramètre à la macro la valeur de la variable de niveau module, ta macro ne ferait qu'un certain nombre de choses. Si par contre, ta macro , pour fonctionner d'une étape à l'autre , a besoin d'éléments de l'étape précédente, il te faudra conserver ces éléments dans des variables de niveau module du UF.
Exemple à mettre dans le module du UF
Dim bt as integer
Private Sub CommandButton1_Click() mamacro bt End Sub
Sub mamacro(valbouton as integer)
select case valbouton
case 0 'Faire le 1er pas Case 1 'Faire le second pas
'et ainsi de suite
end select
end sub
A+
anonymousA
un exemple complet . à mettre dans le module du UF que tu afficheras en non modal. Ce qui suit nécéssite bien sur pour être plus robuste une gestion d'erreur, mais le principe est là. J'ai volontairement laissé l'instruction MsgBox valbouton bien qu'elle soit inutile pour te montrer où on veut en venir.
Dim CtChart As Chart, bt As Integer
Sub Chartcreate(valbouton As Integer)
MsgBox valbouton
Dim sh As Worksheet Set sh = ActiveSheet
Select Case valbouton
Case 0 '1ere étape Set rng = sh.Range("A1:C10") Set oChart = sh.ChartObjects.Add(0, 0, 200, 100) 'oChart.Name = "toto" Set CtChart = oChart.Chart
With CtChart .ChartType = xlColumnClustered .SetSourceData Source:=rng End With
Case 1 '2eme étape With CtChart .SeriesCollection(2).Interior.ColorIndex = 6 End With
Case 2 '3eme étape With CtChart .SeriesCollection(1).ApplyDataLabels End With
End Select
End Sub Private Sub CommandButton1_Click()
Chartcreate bt bt = bt + 1
End Sub
A+
un exemple complet .
à mettre dans le module du UF que tu afficheras en non modal. Ce qui
suit nécéssite bien sur pour être plus robuste une gestion d'erreur,
mais le principe est là. J'ai volontairement laissé l'instruction
MsgBox valbouton bien qu'elle soit inutile pour te montrer où on veut
en venir.
Dim CtChart As Chart, bt As Integer
Sub Chartcreate(valbouton As Integer)
MsgBox valbouton
Dim sh As Worksheet
Set sh = ActiveSheet
Select Case valbouton
Case 0
'1ere étape
Set rng = sh.Range("A1:C10")
Set oChart = sh.ChartObjects.Add(0, 0, 200, 100)
'oChart.Name = "toto"
Set CtChart = oChart.Chart
With CtChart
.ChartType = xlColumnClustered
.SetSourceData Source:=rng
End With
Case 1
'2eme étape
With CtChart
.SeriesCollection(2).Interior.ColorIndex = 6
End With
Case 2
'3eme étape
With CtChart
.SeriesCollection(1).ApplyDataLabels
End With
un exemple complet . à mettre dans le module du UF que tu afficheras en non modal. Ce qui suit nécéssite bien sur pour être plus robuste une gestion d'erreur, mais le principe est là. J'ai volontairement laissé l'instruction MsgBox valbouton bien qu'elle soit inutile pour te montrer où on veut en venir.
Dim CtChart As Chart, bt As Integer
Sub Chartcreate(valbouton As Integer)
MsgBox valbouton
Dim sh As Worksheet Set sh = ActiveSheet
Select Case valbouton
Case 0 '1ere étape Set rng = sh.Range("A1:C10") Set oChart = sh.ChartObjects.Add(0, 0, 200, 100) 'oChart.Name = "toto" Set CtChart = oChart.Chart
With CtChart .ChartType = xlColumnClustered .SetSourceData Source:=rng End With
Case 1 '2eme étape With CtChart .SeriesCollection(2).Interior.ColorIndex = 6 End With
Case 2 '3eme étape With CtChart .SeriesCollection(1).ApplyDataLabels End With