Automatisation Microsoft Flow, Tutoriels VBA, interfaces Power BI

Utiliser ISERROR lors ses automatisations en VBA

Tester les valeurs qui vont rentrer dans vos automatisations, dès le début ou au moment opportun, pour gagner en temps et efficacité 

Modèles prêt à l'emploi, Projets Excel-VBA complets

A automatiser un certain nombre de tâches, on arrive rapidement à ne plus vérifier tous les outputs (données ou actions) que produit notre code. Laissé passer certaines exécutions avec une erreur peut complètement bloquer ce que vous avez pris du temps à mettre en place, ou pire encore, vous demander un temps fou pour réparer.

Nous allons voir ensemble comment utiliser ISERROR en automatisation VBA en détail au sein de MS Excel. 

  • A quel endroit est-il judicieux de placer ce test ? 
  • Comment tester au choix une cellule unique ou une plage entière ? 
Imaginons que vous utilisez un code VBA pour envoyer automatiquement par mail, une plage de votre feuille de calcul, un tableau que vous venez d’actualiser. Ainsi vous faites cette opération une ou plusieurs fois par jour, et vous ne traiter plus chaque opération avec la même concentration. Il serait intéressant de tester systématiquement que le tableau que vous envoyez ne contient pas d’erreur, d’autant plus si les données de ce tableau sont réutilisées par un autre code…

Tester si une cellule unique contient une erreur avant de continuer son code

Votre code ne repose que sur une valeur unique, où bien la somme de vos valeurs ne doit absolument comporter une erreur ? Alors le code suivant est idéal pour s’assurer que votre code s’exécutera si et seulement si la valeur testée est conforme à ce que vous attendez : 

Sub CodeTestErreurCellule ()
'Test d'une cellule


If IsError(Range("B1").Value) Then
MsgBox ("Il y a une erreur dans la cellule testée")
Exit Sub'le code s'arrête ici
End If

'Suite du code si pas d'erreur dans la cellule

End Sub

Tester si une plage de cellule contient une erreur avant de continuer son code

Pourquoi pas tester plus large ? Dans la majorité des cas, on choisira de tester une plage entière, comme un tableau, avant de laisser la suite de son code s’exécuter. On s’assure ainsi de la validité de nos données et on réduit considérablement les possibilités d’erreur ou l’envoi de données erronées : 


Sub CodeTestErreurPlage
'Test d'une plage de cellule

Set PlageATester = Sheets("mafeuille").Range("C2:D20")

For Each Cell In PlageATester

    If IsError(Cell.Value) Then 'Test si les inputs ne sont pas en erreur
    MsgBox ("Il y a une  valeur en erreur dans les inputs testés en " & Cell.Address)
    Exit Sub
    End If

Next Cell

'Suite du code si pas d'erreur  dans la plage

End Sub

Bonus : Tester si une plage de cellule contient une erreur ou des valeurs nulles


Sub CodeTestErreurPlageZero
'Test d'une plage de cellule

Set PlageATester = Sheets("mafeuille").Range("C2:D20")

For Each Cell In PlageATester

    If IsError(Cell.Value) Or (Cell.Value = 0) Then 'Test si les inputs ne sont pas en erreur
    MsgBox ("Il y a une  valeur en erreur/nul dans les inputs testés en : " & Cell.Address)
    Exit Sub
    End If

Next Cell

'Suite du code si pas d'erreur ou de zero dans la plage

End Sub

Prenez quelques secondes pour

nous évaluer !, nous encourager avec un don !, partager ce contenu !
[kkratings]