Quel Iste êtes vous ?

Misange

XLDnaute Barbatruc
Re : Quel Iste êtes vous ?

Bonsoir R@chid et les autres.
Oui mais… qu'est-ce qui explique que tu ne perçoive pas l'aspect bien plus ludique encore du VBA ?
Je ne parle pas de son interaction avec les cellules de la feuille: celle ci doit de toute façon toujours être réduite au minimum possible et de façon groupée à l'entrée comme à la sortie. Non c'est tout ce qu'il est capable de faire entre les deux sur des tableaux. C'est passionnant !
Ne serait-ce pas lié à une peur du temps ?
Amicalement.

Je suis bien d'accord avec toi, écrire une macro c'est très rigolo. On fait des trucs qu'on ne peut absolument pas faire par formule. Perso j'aime bien les deux, ce n'est pas la même satisfaction.
Je dirai que l'approche par formule est souvent plus "inventive" et celle par macro souvent plus "logique" du fait qu'elle est itérative.
 

Dranreb

XLDnaute Barbatruc
Re : Quel Iste êtes vous ?

Bonjour Misange.
AUCUN intérêt à faire écrire par la macro la formule dans la feuille, là on perd des deux côtés
Pas d'accord: c'est la solution la plus simple et probablement la plus performante lorsqu'il s'agit de figer des valeurs rapportées au moyen de INDEX/EQUIV, à condition de n'écrire aucune boucle, ça va de soit: partout renseigner les colonnes d'un seul coup.
En fait c'est la méthode Range ou Cell qui est pénalisante et qu'il faut utiliser le moins possible (1 seule fois pour 1000 cellules et non 1000 fois pour 1).
Cordialement.
 

Misange

XLDnaute Barbatruc
Re : Quel Iste êtes vous ?

Bonjour Misange.
Pas d'accord: c'est la solution la plus simple et probablement la plus performante lorsqu'il s'agit de figer des valeurs.

Je crois que je me suis mal exprimée :
Il n'u a aucun intérêt à faire écrire par macro dans une cellule

=sommeprod((truc=bidule)*machin)
ce qui ne fige pas du tout les valeurs

Autant écrire directement la formule dans la feuille... Ca prend moins de temps que de le faire par une bouclette.


Il est bien plus efficace d'évaluer le résultat de cette formule et d'injecter le résultat dans la cellule.
Le plus efficace étant évidemment de stocker dans un array les résultats de l'ensemble des données à traiter et de les réinjecter en une seule fois dans la feuille
 

R@chid

XLDnaute Barbatruc
Re : Quel Iste êtes vous ?

Bonjour @ tous,
Bonsoir R@chid et les autres.
Oui mais… qu'est-ce qui explique que tu ne perçoive pas l'aspect bien plus ludique encore du VBA ?
Je ne parle pas de son interaction avec les cellules de la feuille: celle ci doit de toute façon toujours être réduite au minimum possible et de façon groupée à l'entrée comme à la sortie. Non c'est tout ce qu'il est capable de faire entre les deux sur des tableaux. C'est passionnant !
Ne serait-ce pas lié à une peur du temps ?
Amicalement.
c'est peut être comme tu dis question de temps, je n'ai jamais fait aucune formation en Excel, donc je n'ai aucune idée sur les macros (l'enregistrement et l'adaptation @ mes besoins), peut être si je m'y mets il me faudra 6 mois pour bien apprendre et commencer @ faire mes premiers codes et 6 autres mois pour atteindre le niveau d'un expert...
Amicalement
 

Dranreb

XLDnaute Barbatruc
Re : Quel Iste êtes vous ?

Misange, j'ai dû mal m'exprimer moi aussi.
Il n'u a aucun intérêt à faire écrire par macro dans une cellule

=sommeprod((truc=bidule)*machin)
Ça c'est clair: il ne peut y avoir d'intérêt qu'à l'écrire en une seule fois dans une colonne de quelques milliers de cellules
ce qui ne fige pas du tout les valeurs
évidemment non, il faut encore faire sur la même plage .Value = .Value. Si ce n'est pas ce qu'on veut ce n'est pas la peine d'avoir une macro, autant laisser les formules à demeure.
Ca prend moins de temps que de le faire par une bouclette.
Là, d'accord à 200%: toujours étudier toutes les possibilités susceptibles d'éviter les requêtes Excel (Cells et Range) dans des boucles.
Il est bien plus efficace d'évaluer le résultat de cette formule et d'injecter le résultat dans la cellule.
Le plus efficace étant évidemment de stocker dans un array les résultats de l'ensemble des données à traiter et de les réinjecter en une seule fois dans la feuille
Tu a peut être raison, mais je ne suis pas sûr que ce soit généralisable à n'importe quel calcul. Mais c'est sûrement en tête de peloton des façons les plus efficaces. Pour un SOMMEPROD oui, c'est clair, je le calcule moi même dans une boucle sans rien demander à Excel ni à ses worksheetfunctions (et dans un tableau et à partir d'un tableau, comme tu dis) mais pour INDEX(xxx,EQUIV( etc. je ne suis vraiment pas sûr que me payer les Worksheetfunction.Match dans une boucle soit plus rapide que de laisser faire Excel à l'aide d'une formule temporaire installée en une seule fois sur toute la plage.
Cordialement.
 

Misange

XLDnaute Barbatruc
Re : Quel Iste êtes vous ?

@Dranreb
Je crois que nous sommes d'accord :)

Il est bien plus rapide de faire un index-equiv dans la feuille que de le faire faire par une macro avec les worksheetFunction.match...
Ca n'est intéressant d'évaluer le résultat du worksheetFunction.match et de l'injecter dans la feuille QUE si cette feuille contient beaucoup de données ET est recalculée fréquemment (enregistrement par exemple) alors que ce n'est pas nécessaire ('tain c'est pas facile à expliquer tout ça !)
Amicalement
 

tototiti2008

XLDnaute Barbatruc
Re : Quel Iste êtes vous ?

Bonjour Calvus, Bonjour à tous,

Alors moi je suis un peu mixiste sur les bords, bien que plus performant en VBA il me semble :)
Pour ceux qui ont eu besoin d'Excel (pas comme Rachid qui nous produit de magnifiques formules alors qu'il n'en a pas besoin, juste pour aider ;)), on a tous commencé par des formules, au moins simples (SOMME, MAX, MIN, SI...).
Puis je me suis mis à VBA en suivant une formation, et j'ai essayé de pousser les deux sujets.
Et j'ai beaucoup appris sur les deux domaines sur le forum, et ça continue ;).
 

Calvus

XLDnaute Barbatruc
Re : Quel Iste êtes vous ?

Bonjour le forum, tototiti2008 ,

Puis je me suis mis à VBA en suivant une formation

Qu'entends tu par là ? Une formation dispensée par un organisme ou autre,ou par le biais de bouquins éventuels et internet ?

Bonne soirée.
 

Fo_rum

XLDnaute Accro
Re : Quel Iste êtes vous ?

Bonjour,

Vous avez dit "rapidité" ?

Les formules utilisent des fonctions intégrées d'excel qui sont en langage machine qui est BEAUCOUP plus rapide que le VBA.
Si je te comprends bien,le VBA n'est pas écrit en "langage machine":confused:.
Je pensais que, par exemple, Remplacer et Replace étaient des mots de langues différentes mais qu'ils appelaient la même routine en binaire (ce que j'aurais fait si j'avais programmé). Mon intervention précédente allait dans ce sens.

Le VBA est-il une bibliothèque supplémentaire avec des routines écrites autrement ou est-il une partie intégrante d'Excel ?

Il est évident qu'on va plus vite à saisir une formule dans une cellule que d'aller dans l'éditeur VBA (déjà il faut le trouver, celui-là) pour écrire une macro ; cela ne veut pas dire que son exécution sera automatiquement plus rapide.

Comme il est évident qu'on peut augmenter le temps de travail (réalisations, exécutions) avec un abus de macros.

C'est quand même 0010000100000100010000010000100000000010000010000000111111… qui va le plus vite !

Quelques directions de réflexion

Pour ma part, j'envisage une macro quand j'ai une succession de tâches à traiter sans avoir besoin de cliquer plusieurs fois ou me déplacer d'un bout à l'autre de la feuille.

Il y a d'autres éléments qui interviennent (listes incomplètes, cela va sans dire)

au niveau du VBA :

  • l'encombrement de la mémoire; des déclarations mal faites et hop elle peut "saturer".
  • blocages du système (qui n'est pas resté coi devant une page sans interaction possible ?).
  • qui n'a pas été gêné pour relire un code à rallonge (surtout quand il a été élaboré par une autre personne) ?
au niveau des formules :

  • qui n'a pas été coincé par la limitation du nombre de Si emboités sur les versions les plus anciennes (<2007) ?
  • qui n'a pas été gêné pour relire une formule à rallonge (surtout quand elle a été élaborée par une autre personne) ?
au niveau des Outils :

  • qui n'a pas été coincé par la limitation du nombre de Mfc sur les versions ... ?
  • qui n'a pas été dubitatif devant certaines réponses du Solveur ?
  • qui n'a pas apprécié les "Filtres" ?

A se poser tant de questions, on devrait comprendre mieux les évolutions des versions et se dire que ces logiciels sont sacrément étudiés pour essayer de recouvrir tant de besoins, tant de desiderata de tant de personnes ?
Estimons-nous heureux d'avoir à notre disposition et Formules et Macros; mais pour des besoins professionnels c'est une autre paire de manches !
 

Dranreb

XLDnaute Barbatruc
Re : Quel Iste êtes vous ?

Le code VBA exécuté est un résultat de compilation qui est bien en langage machine. Mais il n'est pas aussi optimisé que s'il avait été écrit en assembleur (c'est le langage le plus proche de la machine: une instruction assembleur pour une instruction machine).
Aveugle, la compilation ne peut guère cerner, par exemple, qu'une variable est juste utilisée comme compteur de passage dans une boucle, et n'a donc pas besoin d'être sauvegardée en mémoire après chaque incrémentation, mais peut au contraire rester simplement stockée dans un registre interne de la CPU.
Cordialement.
 

tototiti2008

XLDnaute Barbatruc
Re : Quel Iste êtes vous ?

Re,

Une formation dispensée par un organisme

Oui, une formation suivie dans un centre de formation, par un collègue formateur (car j'étais formateur dans le passé :))
Et puis après, j'ai dispensé des formations Excel VBA aussi...
 

Calvus

XLDnaute Barbatruc
Re : Quel Iste êtes vous ?

Bonjour à tous,

Dis moi Carcharodon, tu dis que je te mets en boîte, non mais ! ;)

Simplement, je me questionne parfois quand il s'agit d'un gros prédateur...

Alors justement ! Peux tu m'expliquer ceci ?

PrtScr capture.jpg

Ne serais tu pas plutôt une espèce de requin dormeur ? Tes coordonnées ne bougent pas souvent, pour ne pas dire pas du tout !! ;) ;);) ;)

Bonne aprem ! :)
 

Pièces jointes

  • PrtScr capture.jpg
    PrtScr capture.jpg
    11.6 KB · Affichages: 111
  • PrtScr capture.jpg
    PrtScr capture.jpg
    11.6 KB · Affichages: 121
  • PrtScr capture.jpg
    PrtScr capture.jpg
    11.6 KB · Affichages: 121
  • PrtScr capture.jpg
    PrtScr capture.jpg
    16 KB · Affichages: 137
  • PrtScr capture.jpg
    PrtScr capture.jpg
    16 KB · Affichages: 138

Vilain

XLDnaute Accro
Re : Quel Iste êtes vous ?

Salut à tous,

Quel fil intéressant !
De mon côté, je pense n'être ni l'un ni l'autre mais plutôt un "bidouilleur". Je suis tel que Geotrouvepas se décrivait dans le passé : plutôt pas mauvais sur excel et près à prendre la solution ou elle se trouve (formules, macros, enregistreur...)
Ceci dit, c'est un peu par manque de temps. J'ai commencé excel de 0 ou presque il y a 3 ans à peu près. J'ai eu un besoin fort très vite. J'ai alors dévoré les bouquins et tout misé sur les formules et autres astuces. Puis j'ai commencé à faire des tâches de plus en plus complexes et j'ai commencé à m'intéresser au vba. D'abord seul dans mon coin avec l'enregistreur puis avec des bouquins et en enfin une formation (qui ne m'a d'ailleurs pas été très utile, je ne suis pas sur que ce soit le meilleur moyen d'apprendre ce genre de choses, pour moi en tout cas).
Aujourd'hui je suis toujours très mauvais en vba mais je parviens à me débrouiller grâce à l'enregistreur mais aussi à xld !
Je cherche à m'améliorer (d'ou mes demandes récentes de bouquins), mais pour ça, il faudrait que je prenne un peu le temps et avec mon nouveau boulot...
Bref...
Une idée me vient en écrivant ce message. Ne serait-il pas possible d'organiser des "ateliers" entre membres, en réél, pour les gens habitant la même ville ? C'est quand même plus sympa et plus facile d'apprendre à plusieurs, non ? Si l'idée a du succès, je ferai un post spécifique à ce sujet.

A plus
 

Discussions similaires

Réponses
12
Affichages
318

Statistiques des forums

Discussions
312 215
Messages
2 086 330
Membres
103 188
dernier inscrit
evebar