1. Ignorer l'erreur de formule #N/A
Dans mon message #8 Quel voyage d'Array en Array avec Excel VBA !, vous trouverez la prise en compte de la formule nationale beaucoup plus claire sur deux lignes en tête de module car on a isolé le nom du classeur matrice.xls dans une constante de chemin -- à part -- nommé nameXlsHermes.
Voir dans le message #8, lignes 46 à 56 la partie Else pour appliquer la formule nationale, dont voici l'extrait significatif :
Pour avoir un code lisible, il devient obligatoire d'indenter le code avec des TAB au lieu de la solution de facilité qui consiste à aligner chaque instruction sur la marge gauche sans aucune tabulation car on ne voit pas la structure des imbrications.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 If strCity <> vbNullString Then ' La ville en région a été identifiée Cells(indRow, colCity) = strCity Else ' Applique la formule nationale s'il y a typeNational à partir de C6 varNational = Cells(indRow, colNational).Value If VarType(varNational) = vbError Then ' En cas d'erreur de formule varNational = vbNullString ' Absorbe l'erreur "#N/A" sans la corriger End If If varNational = typeNational Then ' Dans la France entière Cells(indRow, colCity).Formula = strFormulaNational Else Cells(indRow, colCity) = vbNullString End If End If
2. Formule nationale dans la constante strFormulaNational
- Comparer votre ligne générant la formule nationale après le bug du #N/A.
Cette ligne est beaucoup trop longue à cause du chemin du classeur matrice.xls dans la formule.- Comparer avec la même ligne 9 ci-dessus beaucoup plus simple car la formule est fixe même si elle est relative avec son premier paramètre "RC[2]".
La formule peut être définie en constante en tête de module avec un nom significatif comme strFormulaNational préfixé de "str" signifiant String.
3. Supprimer automatiquement les erreurs #N/A générées par une formule
Vous trouverez dans le code du message #8, l'utilitaire RemoveErrorNA() qui corrige automatiquement les erreurs #N/A générées par une formule dans un Range.
Etant donné que je n'ai pas de classeur matrice.xls nommé matrice hermes quelque part dans P:, l'application de la formule nationale a généré #N/A en B11 comme indiqué dans le jeu de test fourni. Cela aide beaucoup le lecteur de fournir un jeu de test minimal puis le résultat attendu.
Dans la fenêtre d'Exécution immédiate (Ctrl+G) du VBE (Visual Basic Editeur) d'Excel, copier-coller et valider par ENTER :
L'erreur de formule #N/A en B11 a été automatique corrigée. La cellule B11 est maintenant vide pour accueillir ultérieurement peut-être une ville de départ d'un prochain voyage.
Code : Sélectionner tout - Visualiser dans une fenêtre à part RemoveErrorNA Range("B:B")
___________
En bas de ce message s'il vous a apporté des éléments de réponse pertinents, pensez également à voter en cliquant sur le bouton vertci-dessous.
Partager