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

cacher boite de dialogue solver

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

L

LAMAN

Guest
bonjour
s'il vous plait priere de me communiquer la methode pour cacher la boite de dialogue qui s'affiche lors de l'execution d'un macro contenant une solution solveur dans une boucle ce message empeche l'execution de la boucle jusqua la fin de traitement et je suis obligé de cliquer sur enter de la boite resultat du solveur pour qu'il passe au suivant et ainsi de suite ImageShack - Image Hosting :: sanstitrejo8.png
 
Re : cacher boite de dialogue solver

Bonjour Laman, bienvenue sur le forum,

Essayez en écrivant :

Application.DisplayAlerts = False avant l'endroit du message et

Application.DisplayAlerts = True après

A+

Edit : sinon placez avant l'endroit du message : SendKeys "~"
 
Dernière édition:
Re : cacher boite de dialogue solver

Bonjour,

Voici une méthode qui POURRAIT solutionner votre problème.
Attention, c'est compliqué.

FAITES UN TEST SUR UNE COPIE DE VOTRE CLASSEUR

Copiez le code ci-dessous dans un module standard de votre classeur.

Code:
[COLOR="Blue"]'### L'affectation au variant MesTitres ###
'### sera à adapter plus bas            ###
Dim MesTitres As Variant

Dim OnTimer&

Private Declare Function SendMessage& Lib "user32" _
  Alias "SendMessageA" (ByVal hwnd As Long, _
  ByVal wMsg As Long, ByVal wParam As Long, lParam As Any)
Private Declare Function FindWindow& Lib "user32" _
  Alias "FindWindowA" (ByVal lpClassName As String, _
  ByVal lpWindowName As String)
Private Declare Function SetTimer& Lib "user32" _
  (ByVal hwnd As Long, ByVal nIDEvent As Long, _
  ByVal uElapse As Long, ByVal lpTimerFunc As Long)
Private Declare Function KillTimer& Lib "user32" _
  (ByVal hwnd As Long, ByVal nIDEvent As Long)
Private Declare Function GetWindowText& Lib "user32" _
  Alias "GetWindowTextA" _
  (ByVal hwnd As Long, ByVal lpString As String, _
   ByVal cch As Long)
'___________________________
Private Sub CloseMsgBox()
Dim HwndMsgBox&
Dim i&
Dim Ch$
Dim Tampon&
Dim reponse&
For i& = LBound(MesTitres) To UBound(MesTitres)
  HwndMsgBox& = FindWindow(vbNullString, MesTitres(i&))
  If HwndMsgBox& > 0 Then Exit For
Next i&
If HwndMsgBox& > 0 Then
  Ch$ = Space(1024)
  Tampon& = Len(Ch$)
  reponse& = GetWindowText(HwndMsgBox&, Ch$, Tampon&)
  Ch$ = Trim(Replace(Ch$, Chr$(0), ""))
  SendMessage HwndMsgBox&, &H10, 0, ByVal 0&
End If
End Sub
'___________________________
Private Sub RunTimer(Delai&)
If OnTimer& > 0 Then OffTimer
OnTimer& = SetTimer(0, 0, ByVal Delai&, AddressOf CloseMsgBox)
End Sub
'___________________________
Private Sub OffTimer()
If OnTimer& > 0 Then
  OnTimer& = KillTimer(0&, OnTimer&)
  OnTimer& = 0
End If
End Sub[/COLOR]


[COLOR="Red"]    '############################################
    '### CE QUI SUIT EST VOTRE CODE A ADAPTER ###
    '############################################
'___________________________
Sub maMacro()

  '*** Code traitement avant appel au solveur ***
  
'///// à ajouter à votre code ////
OnTimer& = 0
Call RunTimer(Delai:=0)
'### Mettre les titres des MsgBox à        ###
'### cacher dans le Array du Variant       ###
'### MesTitres. Cette instruction peut     ###
'### être placée en tête de la procédure   ###
'### maMacro MAIS avant l'usage du solveur ###
MesTitres = Array("Résultat du solveur", "un autre", "etc")

'---- Ici la boucle où le solveur s'exécute ----
'for truc= 1 To 10
  'Utilisation du solveur
'Next truc
'---- Fin de la boucle ----
Call OffTimer
'/////////////////////////////////

  '*** Code traitement après appel au solveur ***

End Sub[/COLOR]

Ne changez pas la partie en bleu .
En revanche pour la partie en rouge, il faut que vous adaptiez le code en
insérant, aux bons endroits, votre propre code (en distinguant le pré-traitement du solveur,
la boucle avec le solveur, le post-traitement du solveur).

Enfin le mieux est d'essayer. Dites moi si cela fonctionne.

Cordialement.

PMO
Patrick Morange
 
Re : cacher boite de dialogue solver

merci pour vos reponse job75 et pmo2 j'ai trouvé la solution a ce problme en utilisant les lignes suivantes :
SolvSolve UserFinish:=True
SolvFinish KeepFinal:=2

merci encore une autre fois
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
21
Affichages
2 K
S
Réponses
1
Affichages
756
secours
S
N
Réponses
12
Affichages
5 K
Nplayer76
N
P
Réponses
3
Affichages
1 K
Pierrotv136
P
R
Réponses
4
Affichages
38 K
rsilence
R
P
Réponses
2
Affichages
3 K
pascalmartin
P
P
Réponses
13
Affichages
2 K
V
Réponses
3
Affichages
2 K
vines78
V
C
Réponses
2
Affichages
1 K
chnicolas
C
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…