Mon programme n'affiche pas au bon moment la boite de dialogue

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

guainflo

XLDnaute Junior
Bonjour,

Mon problème est que mon programme n'effectue pas les opérations dans l'ordre souhaité.
Je veut qu'il trace le graphique puis ensuite qu'il affiche une boite de dialogue à l'écran comme dans l'ordre écrit dans le programme ci-dessous.
Là, il affiche la boite et ensuite lorsque j'ai appuyé sur l'un des 3 boutons, il affiche la courbe, on dirait qu'il affiche en premier la boite et après il effectue le prg du début à la fin.

Comment faire?

Sub prg_graphe() 'début du prg principal

... 'il calcule les points pour tracer le graphe et les mets dans une feuille

Call trace 'appel le programme pour tracer le graphe et ensuite afficher la boite

end sub 'fin du prg principal



Sub trace() 'début du prg pour tracer le graphe

... 'trace le graphe

FRM_test.Show 'affiche une boite à l'écran avec 3 bouton

End sub 'fin du prg pour tracer le graphe



Prgs liés aux 3 boutons de la boite de dialogue :

Private Sub BTN_moins_Click()
Worksheets("Graphecaract").Select
Range("H3") = Range("H3") + pas_grand
FRM_test.Hide
End Sub

Private Sub BTN_plus_Click()
Worksheets("Graphecaract").Select
Range("H3") = Range("H3") - pas_grand
FRM_test.Hide
End Sub

Private Sub BTN_validegraphe_Click()
fin = 1
FRM_test.Hide
End Sub
 

Pierrot93

XLDnaute Barbatruc
Re : Mon programme n'affiche pas au bon moment la boite de dialogue

Bonjour guainflo

pas sur du tout... mais sans voir le fichier difficile à dire... A tout hasard, si tu as une ligne de code comme ci-dessous, supprime là, sinon essaye en utilsant la méthode "repaint"...

Code:
Application.ScreenUpdating = False

bon après midi
@+
 

guainflo

XLDnaute Junior
Re : Mon programme n'affiche pas au bon moment la boite de dialogue

Re,

J'ai ajouté une boucle dans le prg principale :

Do Until fin = 1
Call trace
Loop

Et mis fin =0 dans les 2 boutons (+) et (-).

Tant que l'on appui pas sur le bouton valider (il reste dans la boucle), soit on appui sur + ou -.
La courbe est retracé avec une modification.

Tous marche bien dans les calculs saut qu'il n'affiche que la boite de dialogue, autant de fois que l'on a appuyé sur + ou -, et il n'affiche la courbe seulement lorsque l'on a valider c'est à dire que l'on affiche plus la boite de dialogue (il a fini le programme).
 

guainflo

XLDnaute Junior
Re : Mon programme n'affiche pas au bon moment la boite de dialogue

Merci Pierrot93, en supprimant les lignes "Application.ScreenUpdating = False" sa marche nickel.

J'ai 2 autres problèmes :

Le premier est qu'il affiche la première fois le graphique à la bonne dimension, mais après il affiche le graphique sans les dimensions données dans mon programme (voir prg en bas). Je pense qu'il faut nommer le graphe à un endroit et lorque je le supprime, il faut donner ce nom.

Le deuxième est que je voudrais positionné à un endroit précis la boite de dialogue sur l'écran, comment faire si c'est possible.

ActiveSheet.ChartObjects("Graphique 1").Delete
Charts.Add
ActiveChart.ChartType = xlXYScatterSmoothNoMarkers
ActiveChart.SetSourceData Source:=Sheets("Graphecaract").Range("N3:O43"), PlotBy _
:=xlColumns
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).Name = "=""Caractéristique à vide tendance"""
ActiveChart.SeriesCollection(2).XValues = "=Graphecaract!R3C2:R15C2"
ActiveChart.SeriesCollection(2).Values = "=Graphecaract!R3C3:R15C3"
ActiveChart.SeriesCollection(2).Name = "=""Caractéristique à vide d'origine"""
ActiveChart.Location Where:=xlLocationAsObject, Name:="Graphecaract"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Caractéristiques à vide"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "Courant d'excitation (A)"
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Tension à vide (V)"
End With
With ActiveChart.Axes(xlCategory)
.HasMajorGridlines = True
.HasMinorGridlines = False
End With
With ActiveChart.Axes(xlValue)
.HasMajorGridlines = True
.HasMinorGridlines = False
End With
ActiveChart.HasLegend = True
ActiveChart.Legend.Select
Selection.Position = xlRight
ActiveSheet.Shapes("Graphique 1").IncrementLeft -160.75
ActiveSheet.Shapes("Graphique 1").IncrementTop -90#
ActiveSheet.Shapes("Graphique 1").ScaleWidth 1.8, msoFalse, _
msoScaleFromTopLeft
ActiveSheet.Shapes("Graphique 1").ScaleHeight 1.5, msoFalse, _
msoScaleFromTopLeft
 

Pierrot93

XLDnaute Barbatruc
Re : Mon programme n'affiche pas au bon moment la boite de dialogue

Re

comme je le disais :

pas sur du tout... mais sans voir le fichier difficile à dire... A tout hasard, si tu as une ligne de code comme ci-dessous, supprime là, sinon essaye en utilsant la méthode "repaint"...
Application.ScreenUpdating = Falsebon après midi

pas top cet usf qui ne se ferme pas, "hide" ne fais que masquer l'usf... De plus dans ta boucle un "show" qui le réaffiche...
 

guainflo

XLDnaute Junior
Re : Mon programme n'affiche pas au bon moment la boite de dialogue

La boite de dialogue ne me pose plus de problème, c'est le graphe qui est dimensionné qu'une seul fois aux valeurs redéfinies dans le programme, lors du 2ème passage dans la boucle, le graphe est affiché au milieu est en petit.
 

Discussions similaires

Statistiques des forums

Discussions
315 283
Messages
2 118 013
Membres
113 408
dernier inscrit
lausablk