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 :

Algorithmique classique vs fonctions Excel [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Membre expérimenté
    Homme Profil pro
    chef de projet transverse MOE
    Inscrit en
    Janvier 2015
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : chef de projet transverse MOE
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2015
    Messages : 121
    Par défaut Algorithmique classique vs fonctions Excel
    Bonjour,

    j'ai un background classique d'ingénieur informaticien généraliste, donc bon en algorithmique, en conception mais sans connaissance précise des spécificités des différents langages. c'est notamment le cas du VBA appliqué à Excel dont je ne connais que peu de fonctions.
    J'ai donc une tendance à écrire moi-même des macros de tri, de copie de l'information, etc..., qu'on peut probablement résumer en quelques lignes avec les fonctions Excel ou les méthodes d'objets VBA Excel qui vont bien, et à ne pas chercher dans les docs les fonctions / méthodes en question pour partir sur une solution que je connais.

    Une question que je me pose: Est ce que les performances de ces fonctions / méthodes sont optimales? ou est ce que si on traite de gros volumes de données il vaut mieux écrire soit même les algorithmes pour maitriser les performances de notre application?
    Globalement, je voudrais savoir si le surcout de temps de codage d'un algo classique est justifié par un gain de performance et si je dois vraiment considérer le fait d'aller me palucher la doc Excel Vba pour coder comme un vrai spécialiste du vba Excel

    Merci d'avance...

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Comme pour tout langage (informatique ou non), pour pouvoir le parler, il faut apprendre la grammaire et le vocabulaire.

    Perso, quand j'ai commencé VBA, j'avais déjà une demi-douzaine d'autre langages dans mes besaces.
    J'ai commencé par me farcir quelques listes en entier, celle des fonction mais aussi celle des trois principaux objets : Range, Worksheet et Workbook plus Application qui est la base de tout.
    On ne retient pas tout, bien sûr, mais ensuite on sait au moins ce qui existe.
    https://docs.microsoft.com/fr-fr/off...r-applications
    https://docs.microsoft.com/fr-fr/pre...4(v=office.15)
    https://docs.microsoft.com/fr-fr/pre...7(v=office.15)
    https://docs.microsoft.com/fr-FR/off...Excel.Workbook
    https://docs.microsoft.com/fr-fr/off...cation(object)

    On peut rajouter à ça que toutes les fonctions Excel sont accessibles en VBA, via Evaluate ou WorksheetFunction.

    Bon appétit !

    Une question que je me pose: Est ce que les performances de ces fonctions / méthodes sont optimales? ou est ce que si on traite de gros volumes de données il vaut mieux écrire soit même les algorithmes pour maitriser les performances de notre application?
    D'après mon expérience, ce qui peut se faire par une méthode ou une fonction spécifique à Excel (comme des tris, des filtre, des recherches, etc) est toujours plus rapide que des boucles.

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour à tous,

    je confirme, les fonctions sont bien optimisées, écrites dans un langage comme le C.
    Mieux que ce que tu pourrais faire en tenant compte qu'en plus vba est interprété, et n'est pas réputé pour sa vitesse comparé à un langage compilé.
    Si tu tiens vraiment à optimiser des parties tu pourrais plutôt regarder à créer des dll qui, elles, seront performantes.
    eric

  4. #4
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    Bonjour,
    déjà il ne faut pas mélanger les genre, Excel est un tableur et de ce fait il est utile pour mettre en valeur des tableaux. Beaucoup voient Excel comme une base de données, même dans le vocabulaire !
    En fait ce que l’on recherche dans les algorithmes c’est d’automatiser des tâches qu’Excel est capable d’effectuer !

    Comme le dit Pierre Fauconnier, il faut envisager Excel avant VBA !
    Vue ton cursus, je ne pourrais que te conseiller te faire ton analyse comme d’habitude sans te soucier de la syntaxe !
    Note que le générateur de macro est un très bon didacticiel !

  5. #5
    Membre expérimenté
    Homme Profil pro
    chef de projet transverse MOE
    Inscrit en
    Janvier 2015
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : chef de projet transverse MOE
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2015
    Messages : 121
    Par défaut
    Ok merci pour les infos
    Je vais prendre un peu de temps pour décortiquer les objets de base et voir toutes leurs fonctions existantes.

  6. #6
    Rédacteur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2013
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 1 029
    Par défaut
    Citation Envoyé par Tylert Voir le message
    Une question que je me pose: Est ce que les performances de ces fonctions / méthodes sont optimales? ou est ce que si on traite de gros volumes de données il vaut mieux écrire soit même les algorithmes pour maitriser les performances de notre application?
    Globalement, je voudrais savoir si le surcout de temps de codage d'un algo classique est justifié par un gain de performance et si je dois vraiment considérer le fait d'aller me palucher la doc Excel Vba pour coder comme un vrai spécialiste du vba Excel
    Bonjour.
    A ma connaissance, les performances des fonctions intégrées d'EXCEL sont optimales... pour des "petits" volumes.
    Pour les gros volumes il faut parfois faire autrement.
    Par exemple avec RECHERCHEV pour comparer une liste de 1 million de lignes avec une autre de 10 000, ça prend 9 minutes, et 15 heures pour deux listes d'un million de lignes chacune.
    Alors qu'avec une fonction "maison" rechercher 10 000 numéros de téléphone parmi une liste d'un million d'autres ne prend plus que 10 secondes, 2 minutes pour les deux listes d'un million.
    C'est expliqué dans le tome 6 (voir ma signature).
    Même si EXCEL n'est pas fait pour gérer les métadonnées.

    Attention, écrire des fonctions personnelles comme celle-ci demande un temps fou.
    Tu en gagneras en récupérant celles des codes source joints à mes mémentos.

    Si tu cherches une documentation pour apprendre rapidement EXCEL je te conseille mon tutoriel (voir le tome 1 de ma signature)

    Quant au VBA, même s'il n'est pas fait pour cela, il permet aux plus joueurs de faire autre chose que de l'EXCEL : Programmation graphique, problème du voyageur de commerce, cryptographie, SQL, opérations sur des nombres de plusieurs centaines de chiffres (voir les différents liens de ma signature).

    Mais généralement on utilise le VBA pour automatiser des traitements que EXCEL sait faire (comme dit plus haut) ou pour faire des traitements sur mesure à la demande des utilisateurs.
    Faut être un peu dingue pour faire autre chose que de l'EXCEL avec EXCEL.

  7. #7
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    Pour complèter je dirai que le volume ne plaide pas en faveur d'Excel.
    Un très grand nombre de lignes avec quelques formules et Excel à la nosé!

    Comme dirait Clément Marcotte Excel n'est pas une SGBD.

  8. #8
    Membre expérimenté
    Homme Profil pro
    chef de projet transverse MOE
    Inscrit en
    Janvier 2015
    Messages
    121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : chef de projet transverse MOE
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2015
    Messages : 121
    Par défaut
    Mon utilisation d'Excel et du VBA est la suivante:

    J'avais envie de gérer des stats de mes parties de cartes.
    j'ai commencé par une feuille excel de données et des tableaux de stats rempli avec des formules excel.
    Puis j'ai fait des formulaires pour la saisie des tournois, la correction des données, l'affichage des stats, etc... etc... donc une appli avec quelques algo complexes (Gestion de pairing dans un tournoi par exemple) et du chargement de données pour traitement et affichage.

    Je sais que j'aurais du passer à minima sous access, mais c'est payant (enfin la version légale) et j'aime utiliser Excel pour le confort que ca m'apporte en terme de station de travail. Pas besoin d'apprendre l'HTML, le GWT ou l'angular, pas besoin d'apprendre le CSV, pas besoin d'installer un poste de travail, de configurer une connexion entre une base de données et mon serveur eclipse.
    Pour mes besoins, c'est presque parfait Bref, je suis une feignasse, j'ai pas eu le courage de me lancer dans un truc qui demande encore plus de temps

    Un jour je m'y mettrais sérieusement et je transformerais mon code en java / C# / .Net ou autre avec une vraie base de données, un vrai back-end et un vrai front end. A la retraite probablement

    Un autre point fort d'Excel pour moi: C'est un logiciel présent sur énormément de plateformes et tu peux refiler ton soft facilement. Du coup le partage avec mes amis du fichier est simple (surtout qu'ils ne sont pas forcément informaticiens).

  9. #9
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    L'argumentation de la feignanise est la seule qui vaille et on ne peut plus respectables.

    Pour le reste visual studio comunity et SQL serveur sont entièrement gratuit contrairement à Excel!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utilisation fonction excel dans ACCESS: Ereur de compilation
    Par mat_lefebvre dans le forum Access
    Réponses: 2
    Dernier message: 22/03/2006, 10h44
  2. [VB.NET][Excel] utiliser des fonction Excel comme xlToRight
    Par Alexj51 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 01/03/2006, 12h10
  3. fonction excel
    Par semur dans le forum Excel
    Réponses: 4
    Dernier message: 24/01/2006, 17h41
  4. [VBA][Débutante] Fonction Excel avec Boucle
    Par Inelukia dans le forum Macros et VBA Excel
    Réponses: 32
    Dernier message: 11/01/2006, 19h31
  5. Fonction excel: trouvé un numéro de ligne
    Par Nanid dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 28/09/2005, 14h52

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