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

Afficher un MsgBox à la place d'une erreur d'éxecution

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

RONIBO

XLDnaute Impliqué
Bonjour,

Je possède de ce code.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim A%, M$
If Target.Count > 1 Then Exit Sub
If Not Intersect(Me.Range("J5:J32"), Target) Is Nothing Then
If Target.Value = "OUI" And Not Target.Offset(0, -8).Value Like "Fact*" Then
With Target.Offset(0, -8)
A = Right(.Value, 4)
M = Left(.Value, Len(.Value) - 5)
End With
On Error Resume Next
Workbooks.Open "E:\Mes Documents\Duplicata\Gestion Immobilière\Quittance de Loyer\Quittance de Loyer.xlsm"
On Error GoTo 0
With Workbooks("Quittance de Loyer.xlsm").Worksheets("Quittance de Loyer")
   .Range("AX4").Value = M
   .Range("AY4").Value = A
End With
End If
End If
End Sub

Le problème est que le fichier en question (Quittance de Loyer.xlsm) se trouve sur un disque dur externe.

Lorsque je disque dur n'est pas branché sur l'ordinateur et que j'exécute ce macro, je bloque sur cette ligne :
Code:
With Workbooks("Quittance de Loyer.xlsm").Worksheets("Quittance de Loyer")

S'qui est normal.

Mais pour éviter cette erreur je souhaite afficher un MsgBox du genre : Le disque dur n'est pas connecté

J'espère que je me suis fait comprendre.

Merci d'avance

A bientôt
 
Re : Afficher un MsgBox à la place d'une erreur d'éxecution

Bonjour,

en remplaçant : on error resume next par : on error goto fin

et devant l'instruction End Sub :
fin:
msgbox("Fichier non présent dans le répertoire")

a+
 
Re : Afficher un MsgBox à la place d'une erreur d'éxecution

Bonjour RONIBO

A l'aveugle je diraispour la gestion d'erreur:

VB:
On Error Resume Next
Workbooks.Open "E:\Mes Documents\Duplicata\Gestion Immobilière\Quittance de Loyer\Quittance de Loyer.xlsm"
If Err Then
    Err.Clear
    MsgBox "Le disque E n'est pas actif" & vbLf & _
    "Arrêt du traitement", 64, "Erreur"
    Exit Sub
End If

Cordialement

EDIT Bonjour CHALET53.
EDIT2 Bonjour Dranreb

@ CHALET53: J'ai peur que, sans vérification de la présence d'erreur, le message ne s'affiche "à tous coups" ; )
 
Dernière édition:
Re : Afficher un MsgBox à la place d'une erreur d'éxecution

Bonjour.
Ou bien, juste avant le On Error GoTo 0 mettez If Err Then MsgBox "Ouverture impossible", vbCritical, "Worksheet_Change": Exit Sub
 
Re : Afficher un MsgBox à la place d'une erreur d'éxecution

Bonjour,

Tout d'abord merci à vous tous 🙂

J'ai essayé tous les codes, mais je bloque sur les trois codes lol

CHALET53 : Merci pour le code, j'ai une erreur de compilation sur cette ligne
On Error GoTo fin

Efgé et Dranreb : Merci à vous aussi 🙂, j'ai le même problème pour les deux codes proposés, le code fonctionne bien, même très bien car le message (mgsbox) s'affiche même quand le disque dur est branché 😀

Une solution à ce petit problème?

Vous voulais un fichier exemple peu être

A+
 
Re : Afficher un MsgBox à la place d'une erreur d'éxecution

salut

et ainSi...
Code:
On Error GoTo 1
  Workbooks.Open "E:\Mes Documents\Duplicata\Gestion Immobilière\Quittance de Loyer\Quittance de Loyer.xlsm"
  Exit Sub
1 If Err Then
    Err.Clear
    MsgBox "Le disque E n'est pas actif ou" & vbLf & _
    "le chemin est erroné ou" & vbLf & _
    "le fichier n'y est pas !", 64, "Opération invalidée..."
  End If
 
Re : Afficher un MsgBox à la place d'une erreur d'éxecution

Bonjour Si...

Merci pour ton code, c'est à peu près s'que je voulais 🙂

Par contre je perds cette partie :
.Range("AX4").Value = M
.Range("AY4").Value = A

Je joints un fichier exemple pour mieux comprendre (à extraire dans c: svp)

Merci
 

Pièces jointes

Re : Afficher un MsgBox à la place d'une erreur d'éxecution

Re à tous, Bonjour SI

@RONIBO,

Il y quand même un détail qui m'échappe.
Tu ouvres le classeur Quittance de Loyer.xlsm à chaque modification de cellule, soit (bien que cela me parraisse un peu "lourd" à l'utilisation.
La question est : Quand le fermes tu ?

Les erreurs que tu rencntre avec la proposition de Dranreb et la mienne viennent certainement de là.

Soit tu ferme le classeur à la fin (et donc tu le reouvre à chaque fois), soit tu mets une vétrification pour savoir si il est déja ouvert.

Par exemple:
VB:
Sub test_2()
Dim Wkb As Workbook
On Error Resume Next
Set Wkb = Workbooks("Quittance de Loyer.xlsm")
If Err Then Err.Clear
If Wkb Is Nothing Then Workbooks.Open "E:\Mes Documents\Duplicata\Gestion Immobilière\Quittance de Loyer\Quittance de Loyer.xlsm"
If Err Then
    Err.Clear
    MsgBox "Le disque E n'est pas actif" & vbLf & _
    "Arrêt du traitement", 64, "Erreur"
    Exit Sub
End If
End Sub

Cordialement
 
Re : Afficher un MsgBox à la place d'une erreur d'éxecution

Re,

Le message apparait des que Quittance de Loyer.xlsm s'ouvre. Alors qu'il ne devrait pas s'afficher, je m'en sert comme modèle si tu veux, je le complète grâce à des cellules du fichier "Gestion", (regarde le ficher exemple, tu comprendras mieux je pense)

Le code est à mettre dans un module, de la feuille Quittance ou l'autre?

Réponse à ta question : Quand je le ferme, j'ai mis ca :
Sub Auto_Close()
ThisWorkbook.Saved = True
End Sub

Pour éviter de l'enregistrer, comme je t'ai di je m'en sert seulement comme modèle

A+
 
Dernière édition:
- 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
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
2
Affichages
772
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…