De l'utilité de certains "On Error…"

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

cabsen

XLDnaute Junior
Bonjour le forum,

Je n'arrive pas à comprendre l'intérêt des On Error… dans les deux macros suivantes (trouvées je ne sais plus trop où) :

Code:
Sub CacheBarres()

    On Error Resume Next

    With Application
        .DisplayFullScreen = True
        .CommandBars("Full Screen").Visible = False
        .CommandBars("Worksheet Menu Bar").Enabled = False
    End With
    
    On Error GoTo 0
    
End Sub
et
Code:
Sub AfficheBarres()

    On Error Resume Next
    
    With Application
        .DisplayFullScreen = False
        .CommandBars("Worksheet Menu Bar").Enabled = True
    End With
    
    On Error GoTo 0
    
End Sub

Je pense pouvoir retirer ces deux scripts mais je ne suis pas sûr des conséquences. Quelqu'un saurait-il m'éclairer sur cette question ?

D'avance merci !
 
Re : De l'utilité de certains "On Error…"

Bonjour


Le On error ne sert (s'il sert) dans ce cas precis que si la ou les CommandBar n'existent pas

Si elles n'existent pas, Excel renverra une erreur qui la est controlée, si ces commandBar existent, le controle d'erreur ne sert à rien
 
Re : De l'utilité de certains "On Error…"

Merci wilfried_42,

Mais dans ce cas, s'agit-il de barres rares ? au point d'utiliser un On Error ?

Ne puis-je pas plutôt tester si elles existent et agir en conséquence ? (je me méfie de l'emploi abusif de ces commandes 😉)
 
Re : De l'utilité de certains "On Error…"

Hello Wilfried Cabsen,
pour avoir testé ce code il y a quelques jours dans un fil suivi, il n'y a rien d'abusif dans les "On Error" il permet juste de continuer ton code si les barres de menus sont présentes/absentes sans t'afficher un menu d'erreur "débogage" pourquoi se méfier???
A++
TheLio
 
Re : De l'utilité de certains "On Error…"

Bonjour Thelio,

Malgré ma courte expérience en VBA, j'ai tout de même l'impression que dans un grand nombre de cas les On Error… servent juste à s'épargner du codage. C'est sans doute un peu puriste, mais je préfère avoir mené ma réflexion jusqu'à son terme, et donc envisagé et anticipé tous les cas possibles avant de faire fleurir ces fleurs de mauvais augure… 🙂
 
Re : De l'utilité de certains "On Error…"

re: bonjour lionel

Pour terminer sur les On error, personnellement je les utilises seulement dans les cas ou je suis certain que ma ligne peut provoquer une erreur et que cette erreur soit connue et si l'on veut volontaire

2 exemples :

Creation d'un repertoire : La creation d'un repertoire se fait simplement
MkDir monrep : Neanmoins, quand le repertoire existe, cela provoque une erreur
donc :
On error resume next
MkDir monrep
On error Goto 0
Plus flagrant : Ajout d'un commentaire dans une cellule, l'ajout d'un commentaire dans une cellule provoque une erreur lorsqu'il y en a deja un, donc je detruits le commentaire avant, mais quand il n'y en a pas ca provoque une autre erreur lol
donc :
Code:
    On Error Resume Next
    Range("A1").Comment.Delete
    On Error GoTo 0
    Range("A1").AddComment "Cellule active " & Target.Address

Mais en aucun cas utiliser la gestion des erreurs pour une raison inconnue
 
Re : De l'utilité de certains "On Error…"

Bonjour Cabsen, Thelio, Wilfried

@Wilfried🙂
pour tester le commentaire tu peux utiliser un code comme ci dessous :

Code:
Dim c As Comment
Set c = Range("A1").Comment
If Not c Is Nothing Then c.Delete

on doit pouvoir tester également si un répertoire existe...
Perso trouve ceci plus propre, mais ce n'est qu'un avis...

bonne journée.
@+
 
Re : De l'utilité de certains "On Error…"

Hello,
Pour ma part, je l'utilise frequement dans la création d'une feuille nommée...
Si la feuille est déjà présente, j'ai un message d'erreur donc : On error m'est bien utile dans le cas présent
A++
 
Re : De l'utilité de certains "On Error…"

Re

pour tester un répertoire :

Code:
Sub test()
'activer la reference Microsoft scripting Runtime
Dim fso As Scripting.FileSystemObject, dossier As String, x As Boolean
Set fso = CreateObject("Scripting.FileSystemObject")
dossier = "C:\Documents and Settings\Mon_Nom\Mesdocuments\Excel\"
x = fso.FolderExists(dossier & "NomSousDossierRecherche")
If x = True Then MsgBox "dossier existe"
End Sub

un peu plus long, mais bon....

@+
 
Re : De l'utilité de certains "On Error…"

Re:

Je suis d'accord avec toi pierrot, on peut tout tester avant de provoquer une erreur et de la gerer, mais à la fin, le temps d'execution d'une macro ne risque t il pas d'etre ralenti ?

M'enfin je cherche des excuses à une vielle habitude 😀
 
- 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

Réponses
5
Affichages
548
  • Question Question
Microsoft 365 Problème de date
Réponses
5
Affichages
331
Réponses
10
Affichages
630
Réponses
5
Affichages
830
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
428
Retour