XL 2013 Remplacer erreur message compilation par msgbox

Etn

XLDnaute Occasionnel
Bonjour tout le monde,

Est-il possible de remplacer le message d'erreur lorsqu'une macro est mal programmée (contient des erreurs de Sub et function) par un msgbox ?

J'ai joint un fichier au cas où.

Bonne journée,

Etn
 

Pièces jointes

  • macro erreur.xlsm
    14.3 KB · Affichages: 34

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Etn, bonjour le forum,

La gestion ds erreurs se fait souvent en fin de macro après un Exit Sub qui permet d'être inopérante si il n'y a pas d'erreur. Voici un exemple où j'ai remplacé dqzdqsds qui refuse carrément d'être compilé par Range(dqzdqsds).Select :


VB:
Sub macroerreur()
On Error GoTo GestErr 'gestion des erreurs (en cas dérreur va à l'étiquette "GestErr"

'ton code ici
Range(dqzdqsds).Select 'ligne générant une erreur

Exit Sub 'fin de la procédure

GestErr: 'étiquette
Err.Clear 'supprime l'erreur
MsgBox "le programme a générée l'erreur : " & Err.Number & "! " & Err.Description & "." 'message
End Sub
 

Etn

XLDnaute Occasionnel
Bonjour Robert et merci pour ton aide.

Alors j'ai essayé de l'appliquer à mon code mais le fait d'y ajouter un range(code).select pose problème dans l'execution du code d'origine.
Voila le code d'origine :
VB:
Sub Macro4()
Dim MaVal, message As String, message2 As String
message = Range("M10").Value
message2 = Range("M11").Value
MaVal = Sheets("Simulation").Range("N17").Value
  SolverOk SetCell:="$D$19", MaxMinVal:=3, ValueOf:=MaVal, ByChange:="$D$11,$D$9" _
  , Engine:=1, EngineDesc:="GRG Nonlinear"
  SolverSolve UserFinish:=True
 
If Range("M10") <> "" Then
MsgBox message, vbExclamation
End If
If Range("M11") <> "" Then
MsgBox message2, vbExclamation
End If
End Sub

Voila ce que j'ai essayé :
VB:
Sub Macro4()
On Error GoTo GestErr
Dim MaVal, message As String, message2 As String
message = Range("M10").Value
message2 = Range("M11").Value
MaVal = Sheets("Simulation").Range("N17").Value
  SolverOk SetCell:="$D$19", MaxMinVal:=3, ValueOf:=MaVal, ByChange:="$D$11,$D$9" _
  , Engine:=1, EngineDesc:="GRG Nonlinear"
  SolverSolve.Select UserFinish:=True
  
If Range("M10") <> "" Then
MsgBox message, vbExclamation
End If
If Range("M11") <> "" Then
MsgBox message2, vbExclamation
End If
Exit Sub 'fin de la procédure

GestErr:  'étiquette
Err.Clear 'supprime l'erreur
MsgBox "le programme a générée l'erreur : " & Err.Number & "! " & Err.Description & "." 'message
End Sub

En cas d'erreur ce sont les SolverOk et SolverSolve qui sont en jaune.

Etn
 

Robert

XLDnaute Barbatruc
Repose en paix
Re,

Je ne comprends pas. Normalement si une erreur est générée, quelle qu'elle soit, ça renvoie à la gestion des erreurs. Ce n'est pas le cas ? Je n'ai jamais utilisé Solver mais sans le fichier je ne pourrais pas faire mieux.


 

Etn

XLDnaute Occasionnel
Re,

Je t'ai joint le fichier.
Le solveur est un valeur cible amélioré (modifie plusieurs cellules et peut ajouter des contraintes), néanmoins pour l'activer (disponible dans l'onglet données), il faut tout d'abord l'activer dans "option/complément/solveur".

Pour l'activer il faut cliquer sur le bouton "Activer solveur" qui exécute une macro qui active le solveur.

Si on ne l'active pas et qu'on clique directement sur le bouton "Actualiser" (bouton qui active la macro copiée plus haut), on a un message d'erreur de compilation.

Mais je te laisse essayer tu comprendras mieux. Ouvre le fichier et clique directement sur "Actualiser", c'est le message d'erreur qui apparaitra que je ne veux plus.

Etn
 

Pièces jointes

  • Outil solveur.xlsm
    27.1 KB · Affichages: 39

Discussions similaires

Réponses
1
Affichages
113
Réponses
8
Affichages
223
Réponses
3
Affichages
501

Statistiques des forums

Discussions
312 100
Messages
2 085 292
Membres
102 852
dernier inscrit
Badrcola26