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 :

optimisation du code vba (array)


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Bonjour,

    Voilà une chose que j’avais vu avec Marc-L à mes débuts les crochets :
    Ceux-ci servent à faire une évaluation et donc une autre façon d’écrire un Evaluate

    https://docs.microsoft.com/fr-fr/off...ation.evaluate
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  2. #2
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut Ryu

    Citation Envoyé par RyuAutodidacte Voir le message
    [...]
    Pour moi, ça n'apporte rien de plus à Evaluate (que j'utilise constamment) puisque dans la plupart des cas, l'argument de Evaluate est une chaine qui doit être recomposée, ce qui empêche dont l'utilisation des crochets droits.

    D'ailleurs, le lien que tu donnes le dit: les crochets droits peuvent amener de la concision. Ok, mais je préfère souvent, voire toujours, la lisibilité du code à la concision... C'est comme la déclaration des variables avec le préfixe plutôt que le As... A part parler un langage d'initié pour épater la galerie, je ne vois pas trop...

    Mais à nouveau, chacun son style de code
    "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...
    ---------------

  3. #3
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    C’était Juste une précision pour ceux qui ne connaissent pas ou mal cette écriture
    PS : Je fais au plus simple lorsque j’envoie un message de mon phone dans les transports
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  4. #4
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    En fait, le problème de la syntaxe avec crochets droits, c'est qu'on croit que ça pointe vers une plage ou une cellule, alors qu'en fait, comme l'explique le lien donné par Ryu, ça ne pointe vers rien du tout, ça évalue une expression.

    Ca fait longtemps que j'avais envie de faire un billet sur ce qu'on appelle erronément une plage nommée. Car en fait, la plage nommée, ça n'existe pas. Lorsque, dans une cellule, on utilise =Paramètres!$B$1, appelle-t-on cela une plage? Non bien sûr, on appelle cela une... formule...

    Nom : 2019-05-31_210216.png
Affichages : 245
Taille : 8,0 Ko

    Dès lors, pourquoi appelle-t-on Prime une plage nommée? On devrait l'appeler Formule nommée, non? Quand je dis cela en formation, on me regarde avec des yeux ronds comme des soucoupes, mais appeler cela plage nommée masque le fait que l'on peut écrire des formules auxquelles on donne un nom, formules qui sont simples ou complexes, et qui peuvent utiliser des références absolues ou... relatives, comme dans l'exemple suivant où l'on utilise une formule nommée pour multiplier par 3 la valeur de la cellule qui se trouve à gauche de celle qui utilise la formule nommée et que j'utilise en B1 et en B2 pour faire référence respectivement à A1 et A2.

    Nom : 2019-05-31_210456.png
Affichages : 229
Taille : 14,8 Ko


    On ne fait d'ailleurs rien d'autre que de créer une formule nommée lorsque l'on crée des listes de validation en cascade.

    Nom : 2019-05-31_211507.png
Affichages : 247
Taille : 18,7 Ko

    Nom : 2019-05-31_211625.png
Affichages : 236
Taille : 10,0 Ko

    Nom : 2019-05-31_211518.png
Affichages : 237
Taille : 9,1 Ko


    Donc, la notation à crochets droits ne renvoie pas à une plage, mais à l'évaluation de ce qu'on a mis entre crochets, qui peut être une plage, parmi d'autres types de valeurs.

    Nom : 2019-05-31_212157.png
Affichages : 244
Taille : 4,8 Ko



    En plus de l'absence de saisie semi-automatique, une différence entre la notation à crochets droits et Evaluate réside dans le fait qu'avec les crochets, on pratique le hard coding puisque ce qui est à évaluer est en dur, alors qu'Evaluate permet de modifier le texte avant de le passer à Evaluate.
    "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...
    ---------------

  5. #5
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Re

    … comme l'explique le lien donné par Ryu, ça ne pointe vers rien du tout, ça évalue une expression.
    … …
    … …
    En effet, et comme cela a été évoqué dans la discussion avant (les Crochets), j'ai jugé utile d'en donné juste l'explication (auteur de la discussion : étudiant) via le lien et non des conseils d'utilisations (n'est pas le but dans cette discussion).

    Pierre il ait bien d'avoir ajouté ce + d'explications pour ceux qui débutent et +


    PS : pour ma part moi aussi j'utilise Evaluate
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour
    comme je disais on peut même créer un tableau 2 dim avec ce raccourci de evaluate

    Nom : Capture.JPG
Affichages : 243
Taille : 55,1 Ko

    et maintenant que tout le monde est d'accords sur la définition de l'expression "[....]"
    je répète donc ce que j'ai dis plus haut
    écrire comme ca c'est demander a vba de calculer((EVALUER)) cette expression que ce soit pour un range ou autre
    donc écrire [A1] c'est évaluer l'expression et le résultat sera un range

    ? typename(evaluate("A1"))
    Range
    ? typename([A1])
    Range
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Au passage... Rigolo, non? Ca veut dire qu'en plus du "late binding" (ben oui, Ce n'est qu'à l'exécution que le type de la donnée manipulée est évalué), ça demande à l'interpréteur de regarder d'abord dans les variables, en ce compris les globales, puis dans les fonctions s'il a quelque chose qui correspond au nom entre crochets, avant d'aller le chercher dans Excel... Tout cela pour mettre des crochets à la place de Range

    Nom : 2019-06-02_110845.png
Affichages : 219
Taille : 21,8 Ko





    Pour moi, c'est définitivement "non" à la notation par crochets droits...
    "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...
    ---------------

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour Pierre,
    Bravo pour cette belle démonstration
    Je n'ai jamais utilisé cette annotation, très en vogue sur certains sites
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. [XL-2007] optimisation du code vba excel
    Par Maxim0 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/07/2011, 15h43
  2. [Toutes versions] Optimiser le code VBA (gestion de liste)
    Par BAHIRI dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/03/2011, 01h10
  3. [XL-2007] Optimiser un code VBA pour accélérer l'éxécution
    Par Rayanea dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 01/08/2010, 15h18
  4. Optimisation de code VBA
    Par MartinezGarcia dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 25/02/2008, 13h11
  5. Réponses: 13
    Dernier message: 20/04/2006, 15h37

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