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