IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

problème de déclaration de variable [XL-2007]


Sujet :

Macros et VBA Excel

  1. #21
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par eriiic Voir le message
    Je ne comprend pas bien ce rejet des variables publiques[...]
    Une variable publique contrevient aux règles qui président à une bonne architecture de code car elle impose un couplage fort entre les procédures qui l'utilise et l'application dans son ensemble. Cela veut dire que les procédures/fonctions qui utilisent des variables publiques sont fortement liées à leur déclaration/valorisation. Cela amène aux difficultés que je décris ci-dessous. Ce couplage fort entre les procédures/fonctions est pour moi la raison principale qui me fait rejeter l'emploi des variables publiques. Dans les codes que j'écris, je cherche toujours à écrire les procédures/fonctions les plus courtes possibles, recevant uniquement les arguments qu'elles ont a traiter et pouvant être testées de façon autonome. La première action pour bien gérer les erreurs est de les prévenir, et utiliser une architecture à couplage faible permettant des tests autonomes est certainement la meilleure prévention des erreurs en programmation.

    Une variable publique pouvant être modifiée par n'importe quelle partie du code, une procédure/fonction pourrait utiliser une variable mal initialisée ou modifier la valeur d'une variable publique alors que ce n'est pas désiré. La maintenance, la vérification et l'évolution du code sont ainsi rendues plus ardues, car il faut à chaque fois s'assurer que les variables publiques utilisées sont correctement valorisées.

    Les bugs, lors des tests ou en prod, lorsqu'ils ne sont pas correctement gérés par des On Error (et je lis malheureusement des inepties sur le forum au sujet de la gestion des erreurs exceptions, rejetée par des personnes qui n'en maîtrisent pas les mécanismes), amènent à réinitialiser les variables publiques, ce qui rend le code instable et, à nouveau, difficilement testable, maintenable et évolutif.

    Les tests sont rendus plus compliqués à réaliser car il faut à chaque fois s'assurer que les variables publiques ont les valeurs attendues. On ne peut donc réaliser des "tests unitaires" ou à tout le moins tester correctement les procédures/fonctions isolément.

    Les variables publiques "ne meurent pas". Elles restent donc en mémoire jusqu'à la mort du projet, ce qui peut être préjudiciable aux performances, selon leur taille et le contexte dans lequel elles ont été utilisées.

    Les codes qui utilisent des variables publiques sont difficilement réutilisables dans d'autres configurations et/ou d'autres projets. Il faut à chaque fois les modifier et les adapter, lorsque cela est possible. Or, réutiliser des procédures/fonctions génériques, outre la rentabilité financière de l'opération, permet une rentabilité technique car on réutilise des procédures/fonctions paramétrées qui ont été testées et validées, dégageant le programmeur de cette tâche fastidieuse, chronophage et non rentable. La paramétrisation de procédures/fonctions que l'on rend génériques permet au contraire d'utiliser les briques logicielles ainsi créées. Cette "générisation" du code par l'utilisation des paramètres permet une augmentation de l'abstraction par la réutilisation de code, dégageant le développeur du besoin de réinventer la roue à chaque nouveau développement. La systématisation de l'utilisation d'outils paramétrables rend la programmation plus facile, plus fluide, plus stable, plus maintenable et, in fine, plus rentable (temps, argent). L'utilisation de variables publiques est incompatible avec cet objectif de systématisation du code.


    Pour moi, les variables publiques existent en VBA (et pas dans tous les langages, même s'il y en a d'autres qui les permettent) parce que la volonté de Microsoft était de "simplifier la programmation" au détriment de la rigueur et de la bonne architecture. Je pense qu'on peut s'en passer dans tous les cas (ou presque). D'autres aberrations existent en VBA comme les Exit, mais cela ne signifie pas que ce soit une bonne pratique de les utiliser.

    My two cents, comme on dit
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  2. #22
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Je fais confiance à ton retour d'expérience sur le développement de gros projets, et présenté comme ça je vois les bénéfices de variables plus 'sûres'.
    C'est vrai que nul n'est à l'abri d'une erreur de variable, et que ça peut être long à trouver.
    Ceci dit, pas sûr que j'ai le courage de travailler ainsi vu que je me limite à de petits développements sans prétention. Surtout s'il y a 10 variables ou plus concernées
    Bon, à mes tout débuts c'était déclarer toutes les variables que je trouvait pénible. Maintenant je le fais sans réfléchir.
    On va essayer d'y aller par petites touches, progressivement
    eric

  3. #23
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour Pierre,
    Citation Envoyé par Pierre Fauconnier Voir le message
    Une variable publique contrevient aux règles qui président à une bonne architecture de code car ...
    Wouah ! Excellente argumentation
    J'enregistre le lien du post pour le replacer ...
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Problème de déclaration de variable
    Par popy67 dans le forum Débuter avec Java
    Réponses: 6
    Dernier message: 15/01/2009, 13h09
  2. [Débutant] Problème de déclaration de variable
    Par cagri dans le forum MATLAB
    Réponses: 10
    Dernier message: 13/06/2008, 12h20
  3. Réponses: 2
    Dernier message: 15/11/2007, 15h15
  4. [Configuration] Problème de déclaration de variable en php5
    Par domray dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 11/04/2007, 01h22
  5. Réponses: 8
    Dernier message: 03/11/2006, 15h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo