Fonction IsNumeric – Attention aux guillemets

Bonjour à tous,

xl-en-bref 1 1En bref : attention à la fonction VBA "IsNumeric", car cette fonction va retourner Vrai (True), même pour une chaîne de caractère comme "1".

Je suis en train de travailler sur des fonctions très spécifiques pour la prochaine formation VBA avancé sur les arrays !
Il va être très complet et super utile 🙂

Au passage, je suis tombé sur la fonction IsNumeric et une "limite" assez dangereuse (source : Cheap Pearson).

Ce code va ainsi retourner 12, au lieu de 3 !

Sub test_AttentionIsNumeric()
Dim V1 As Variant
Dim V2 As Variant
V1 = "1"
V2 = "2"
If IsNumeric(V1) = True Then
If IsNumeric(V2) = True Then
MsgBox V1 + V2
End If
End If
End Sub

Donc, il faut faire très attention à la fonction IsNumeric, car elle va retourner la valeur Vraie (True), même s'il s'agit d'une string (chaîne de caractères), et le '+' va se comporter comme un '&'.

[EDIT]: suite à un commentaire de Raphaël, vous pouvez faire une conversion des strings avant utilisation, en utilisant ces fonctions : CDbl ou CLng. Il existe d'autres fonctions de conversion pour d'autres cas de figure : CStr, CVar, CDate, etc.

A bientôt.

Gaëtan

7 règles d’or pour appréhender un fichier Excel complexe !

7 regles images 1Bonjour à tous,

Cela va surement vous arriver : vous démarrez une nouvelle mission et vous devez mettre à jour et/ou perfectionner un fichier méga-complexe. Pas de panique !

De façon à éviter des grosses catastrophes, voici une série de règles d'or pour y arriver au mieux.
Bien sur, si vous voyez d'autres aspects, n'hésitez-pas à commenter ci-dessous :-).

Comme me l'a fait remarquer mon ami Dominique H., ces règles sont itératives et l'ordre dépend du projet : "Pour ma part, je documente plus rapidement qu'il n'est conseillé par cette méthode. Autrement dit, j'alterne des actions visant à une compréhension locale et les actions visant à une compréhension globale. Donc une alternance de top-down et bottom-up.". Merci Dominique !

1. Sauvegardez !

Faites une copie du dossier contenant les fichiers, assurez-vous que les sauvegardes soient faites régulièrement et travaillez sur la copie de sauvegarde dans un premier temps

En effet, si vous ouvrez un fichier complexe, il y a de fortes chances que des liaisons avec d'autres fichiers soient actives.

De fait, sauvegardez non seulement le fichier, mais aussi les fichiers liés. Si les fichiers sont tous dans le même répertoire, faites une copie du répertoire.

copier 1

De manière générale, je tente d'éviter les liaisons entre fichiers, mais cela n'est pas toujours possible.
Pour voir les liaisons : Onglet Données, Modifier les liens.
liaison_fichier_externe 1

Idéalement, travaillez sur le fichier de sauvegarde pour le comprendre en profondeur avant de modifier le fichier original.

2. Discutez avec l'auteur et les utilisateurs du fichier

Ca peut sembler évident, mais si l'auteur du fichier est encore joignable, cela peut vous faire gagner un temps considérable.
Passez au moins deux heures avec l'auteur du fichier pour comprendre la philosophie du fichier, la structure globale et les points délicats du fichier.
Discutez aussi avec les utilisateurs pour comprendre comment le fichier est utilisé.

3. Prenez votre temps

Si le fichier est très complexe, plusieurs jours sont parfois nécessaires pour comprendre toute la structure du fichier.

4. Documentez

C'est aussi un excellent moyen de s'assurer que l'on maîtrise complétement le fichier.
Pour cela :
- créez une feuille ou un document word dédié à la documentation.
- ajoutez des commentaires directement dans les cellules - clic droit, ajouter un commentaire, ou via l'onglet Révision :
novueau-commentaire 1

5. Comprenez parfaitement la structure globale

Il s'agit ici de prendre connaissance de toutes les feuilles qui existent dans le fichier.

- Par exemple, assurez vous que vous connaissez les feuilles masquées, clic droit sur une feuille :
feuilles_masquees 1

- ou encore les feuilles masquées via VBA (xlSheetVeryHidden).
Ouvrez l'éditeur de visual basic et regardez si des feuilles ont la propriétés XLVeryHidden - ALT+F11, sélectionnez la feuille, touche F4 pour afficher les propriétés :
xlSheetVeryHidden 1

6. Affinez la compréhension des formules

Voici quelques outils que l'on peut combiner :
- Sur une cellule qui contient un calcul qui utilise plusieurs cellules de la feuille >> clic dans la barre de formule pour avoir un visuel sur les cellules concernées - leurs bordures se colorent tout comme leurs références dans la formule. Merci à Laurent J. pour la suggestion.
- Utilisez les outils d'audit, pour repérer les antécédents et les dépendants.
- Affichez toutes les formules.
- Évaluez les formules.

audit

- Une alternative plus rapide pour évaluer les formules consiste à sélectionner une partie de la formule et appuyer sur F9 pour calculer cette sélection.
ATTENTION à ne pas valider cette formule, sinon vous allez rendre le fichier inutilisable. Donc utilisez la touche ECHAP au lieu d'entrée pour sortir de la formule sans valider.
Voir aussi ici pour une explication plus détaillée.

toucheF9

- ATTENTION, si vous voyez des { } autour des formules, il s'agit de formules matricielles qui sont validées par CTRL+MAJ+ENTREE, donc si vous devez les éditer, sortez de la formule avec ECHAP, mais ne validez surtout pas avec seulement la touche ENTREE. Si vous devez modifier la formule, validez avec CTRL+MAJ+ENTREE.
formule-matricielle

- Connaissez vos noms. Souvent dans des fichiers complexes, de nombreux noms ont été créés et il convient donc de bien les analyser.
Pour cela, utilisez le Gestionnaire de noms, disponible dans l'onglet Formules :

- Utiliser l'outil espion pour visualiser simultanément des changements dans plusieurs endroits du fichier
fenetre-espion 1

Gestionnaire-de-noms 1
Vous pouvez aussi coller la liste des noms pour faire une analyse plus fine :
coller-liste-noms

7. Comprendre le code VBA

On pourrait refaire une longue liste pour ce point, mais il est essentiel de bien comprendre le code VBA du fichier.
Pour cela, utilisez les outils de débogage :
- Ajout d'un point d'arrêt en cliquant dans la marge
vba-point-arret 1
- Déroulement pas à pas avec les touches de raccourci appropriées
VBA-pas-a-pas
- Utilisation des espions
vba-espion 1

Et il y a encore pleins d'autres en VBA, mais ca sera pour une prochaine fois !

Je vous invite à commenter pour partager votre propres trouvailles :-).

A bientôt.

Gaëtan

Explosif ! Eclatez vos neurones !

Au sens figuré, bien sur !!!

Bref, n'oubliez pas les packs proposés ici :

Formations Excel & VBA — Achats groupés

Et pour terminer, voici le commentaire de Stéphane, qui vient juste de finir d'étudier les CD sur VBA avancé (vol. 1 et 2) ! 🙂
---------
Bonjour Gaëtan,

Je tenais à vous remercier pour les cours VBA 1 & 2 que j'ai acheté
sur votre site.
Grace à ces cours, j'ai pu enfin finaliser le projet que je souhaitais
faire pour mon travail à savoir associer sur le même userform la
gestion automatique d'un formulaire de saisie ainsi que la gestion
d'une table de données avec les listbox avec recherche dynamique et
avec critères et distribution du fichier pour les clients.

ET TOUT CA EN UN CLIC !

Merci encore.

Stéphane.
------------

Gaëtan