Écriture de fonctions / vb01exerc1 K. Zampieri, Version 20 octobre 2013 Table des matières 1 Clé d un numéro de Sécurité Sociale / vb01exerc1 2 2 Code EAN13 à partir d un ISBN / vb01exerc2 3 2.1 Codes ISBN et code EAN13......................... 3 2.2 Fonctions et procédures............................ 4 Introduction Mots-Clés VBA, Excel. Requis Tableur. Comprend [Minot-X2 :c7 :ex01], [Minot-X2 :c7 :ex02]. Cet exercice contient plusieurs sous-exercices qui définit et teste des fonctions : Clé d un numéro de Sécurité Sociale, Code EAN à partir d un ISBN. 1
Bureautique vb01exerc1, October 20, 2013 2 1 Clé d un numéro de Sécurité Sociale / vb01exerc1 La clé d un numéro de Sécurité Sociale (les deux derniers chiffres) se calcule comme suit : 1. Faites la division par 97 du numéro (sans la clé). 2. Otez 97 du reste de cette division pour obtenir le résultat. Activez Microsoft Visual Basic et insérez (si besoin) un module. Touches [Alt F11] puis menu Insertion>Module. Écrivez une fonction nosecu(n) qui calcule et renvoie la clé d un numéro de Sécurité Sociale n (réel). Validez votre fonction avec la solution. @[vb01-nosecua1] Écrivez une procédure test_nosecu qui demande et saisit un numéro de sécurité sociale dans num (chaine de caractères) jusqu à ce que la chaine soit numérique et de longueur 13. Affichez l invite : Entrez votre numéro de Sécurité Sociale (13 positions) Calculez la clé dans un entier cle. La fonction cdbl(x) convertit une chaine de caractères x en un réel. Affichez (où [x] désigne le contenu de x) : Votre clé est [cle] Validez votre procédure avec la solution. @[vb01-testnosecu1]
Bureautique vb01exerc1, October 20, 2013 3 2 Code EAN13 à partir d un ISBN / vb01exerc2 2.1 Codes ISBN et code EAN13 Code ISBN L ISBN est le numéro d identification mondial de tout livre ; il signifie International Standard Book Number. La longueur de ce code est constante (10 caractères) mais sa structure interne varie, ce qui lui donne des caractéristiques très particulières. Les zones sont séparées par des tirets sans que ceux-ci soient toujours obligatoires. Le ou les premiers chiffres indiquent la zone linguistique : par exemple, tous les livres en langue française commencent par un 2. Les chiffres suivants indiquent l éditeur : plus l éditeur est important, plus le numéro est court. Les chiffres suivants indiquent le numéro d ordre du livre chez l éditeur ; le fait que l éditeur important dispose d un «petit» code lui laisse plus de «place» pour un plus grand nombre de livres. Le dernier chiffre (ou lettre) est une clé dont on verra le calcul plus loin. Code EAN L EAN signifie European Article Number ; on parle d EAN13 pour désigner la codification à 13 positions. Il s agit d une codification européenne plus connue sous le nom de code-barre. La structure du code-barre est très complexe et n a pas besoin d être expliquée ici. Retenez seulement que le premier numéro indique le pays de fabrication : tous les codesbarres commençant par un 3 indiquent un produit de fabrication française sauf... les livres, dont le code-barre commence toujours par 978, quel que soit le pays. Algorithme suivant : L algorithme de passage d un ISBN vers l EAN13 correspondant est le 1. Prenez les neuf premiers caractères de l ISBN : on oublie donc le chiffre clé final et les tirets. Exemple : le code ISBN 2-87858-190-3 devient 287858190. 2. Faites précéder les neuf caractères par 978 (l exemple devient 978287858190). 3. Multipliez chacun des chiffres alternativement par 1 et 3 puis additionnez chaque produit. 4. Calculez le reste de la division par 10 de cette somme des produits. 5. Recherchez la clé dans la table d équivalence du tableau suivant : Reste Clé Reste Clé 0 0 5 5 1 9 6 4 2 8 7 3 3 7 8 2 4 6 9 1 6. Concaténez la clé obtenue avec les neuf caractères du point 2 pour obtenir le code EAN13. (Certaines maisons d édition ne font pas de distinction entre la clé de l ISBN et celle de l EAN).
Bureautique vb01exerc1, October 20, 2013 4 Exemple Soit le code ISBN 2-87858-190-3. 1. Il devient 287858190. 2. Il devient 978287858190. 3. On a : 9*1+7*3+8*1+2*3+8*1+7*3+8*1+5*3+8*1+1*3+9*1+0*3=116 4. Ceci donne 6. 5. Ce qui donne 4. 6. Finalement le code EAN est 9782878581904. 2.2 Fonctions et procédures Activez Microsoft Visual Basic et insérez (si besoin) un module. Touches [Alt F11] puis menu Insertion>Module. Écrivez l en-tête d une fonction ISBNVersEAN(vISBN) qui calcule et renvoie l EAN d un ISBN visbn (chaine de caractères). Premier traitement : Retirez les tirets, concaténez le radical 978 à gauche et ne gardez que les 12 premiers caractères. Dans l ordre, utilisez la fonction Replace, l opérateur & et la fonction Left. Deuxième traitement : Multipliez soit par 1 soit par 3 chaque chiffre du code et stockez au fur à mesure le résultat pour le sommer avec le cumul (entier) déjà obtenu. Orientation La boucle fera 12 itérations et à chacune d elle, extrayer le k-ème caractère et multipliez-le par 1 ou 3 selon la parité de l itération. La fonction Mid est l équivalent de la fonction STXT d Excel. Troisième traitement : On peut remarquer que le tableau d équivalence est une «inversion» de chiffres entre 1 et 9 : 1 équivaut à 9, 2 à 8, 3 à 7, etc. Il est donc clair que la formule Y=10-X où X est le chiffre connu et Y est le chiffre résultant de l équivalence, donne la méthode de calcul. Seul le 0 déroge à la règle car son équivalence est 0 : on sera donc obligé d utiliser un Si (son équivalent en programmation) pour traiter cette exception. Écrivez ce troisième traitement et retournez la valeur de l EAN. Validez votre fonction avec la solution. @[vb01-isbnverseana1]
Bureautique vb01exerc1, October 20, 2013 5 Écrivez une procédure test_calculean qui demande un ISBN dans ISBN (chaine de caractères), puis calcule et affiche l EAN correspondant. Affichez : Votre ISBN? // invite Le code EAN13 est... // résultat Testez avec les exemples d exécution. Validez votre procédure avec la solution. @[vb01-testcalculean1]