Bonjour à tous, je me permet de vous contacter pour bénéficier de votre aide
J'utilise le VBA pour communiquer avec un analyseur de spectre.
Au départs je dois rentrer 3 changer " Nom Prenom Projet" qui creer un nouveau excel.
A la fin de cette étape, ma macro se connecte automatique à l'analyseur de spectre. Mais lors de soucis de connexion ou X raisons je peux avoir des messages d'erreur.
Quand ca arrive j'ai personnalisé avec ce message
J'ai toujours un message avec "Débogage" qui me renvoie vers le code. C'est contraignant car l'erreur n'est pas du au code et il me fait quitter la page excel, ce que je ne souhaite pas.
Et voici le code qui me permet de me connecter à l'analyseur :
VB:
Public Sub OpenConnexion()
'This sub open the connexion with the ASA
'Variable declaration
Dim command As String
Dim buff As String
'Variable Initialization
Set ioMgr = New VisaComLib.ResourceManager
Set instrument = New VisaComLib.FormattedIO488
'Connexion
command = "TCPIP::" & ipASA & "::inst0::INSTR" [COLOR=rgb(226, 80, 65)]=> Permet la connexion[/COLOR]
On Error GoTo ErrorConnexion
Set instrument.IO = ioMgr.Open(command, openTimeout:=500000)
Exit Sub
ErrorConnexion:
buff = MsgBox("Connection error with the Spectrum Analyser" & vbCrLf & "Check that the ethernet cable is plug in" & vbCrLf & "Check that the IP address of the ASA is the same specified in the configuration sheet", vbOKOnly)
If vbOKOnly Then
command = "TCPIP::" & ipASA & "::inst0::INSTR"
Set instrument.IO = ioMgr.Open(command, openTimeout:=500000)
End If
End Sub
J'aimerai savoir comment, en appuyant sur le bouton Ok de ma page d'erreur crée, je pouvais enlever le message d'erreur système. Ce qui m'éviterai d'aller sur la page VBA et, de reprendre la "manipulation", "la continuité" du code comme avant l'erreur.
En gros : Si c'est une erreur de branchement du cable ethernet : Quand j'appuie sur Ok ca m'affiche pas l'erreur et me laisse sur ma page Excel avec ma manip.
Je m'excuse si je n'ai pas étais hyper clair ou assez technique.
Merci d'avance pour votre aide.
Bonsoir.
Il est préférable d'utiliser On Error Resume Next, c'est généralement plus facile à écrire avec des If Err Then derrière l'instruction en erreur.
Sinon arrangez vous pour exécuter une instruction Resume pour sortir du mode de gestion d'erreur avant toute autre instruction susceptible de provoquer une nouvelle erreur alors qu'il est déjà dans ce mode.
J'ai vu des choses sur On Error Resume Next mais je ne souhaite pas continuer la procédure si j'ai une erreur.
Tous mon code fonctionne et j'essaie de palier aux erreurs manuelles, par l'utilisateur.
C'est pour cela que je souhaite ne cas d'erreur, arrêter la procedure et la reprendre juste avant l'erreur
Ex : L'utilisateur oublie de brancher son cable Ethernet => message d'erreur => procédure s’arrête. Utilisateur rebranche => ca fonctionne
Sans avoir de debug ou de message d'erreur système
Alors enlevez toutes les instructions après le MsgBox ! À quoi servent-elles ?
Si vous vouliez poursuivre l'exécution normalement à partir de l'instruction qui a provoqué erreur il y faudrait une instruction Resume, mais surtout pas, dans la routine de gestion d'erreur, du code qui peut replanter à son tour !
Édition: Mettez vous bien en tête que l'effet du On Error GoTo ErrorConnexion est désactivé derrière cette étiquette jusqu'à exécution d'une instruction Resume. Toute nouvelle erreur se produisant avant celle ci se solde par un plantage avec le message système que vous souhaitez éviter.