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

XL 2013 Remplacer erreur message compilation par msgbox

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

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

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
 
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
 
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.


 
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

- 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

Discussions similaires

  • Question Question
Réponses
7
Affichages
371
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…