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 :

Formula et methode FillDown


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2011
    Messages : 19
    Par défaut Formula et methode FillDown
    Bonjour,

    J'aurai souhaité savoir si à partir d'une macro définir une formule dans une cellule et la "tirer" automatiquement jusqu'en bas du tableau, et qq chose de propre ou non?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        x.Offset(0, 19).FormulaR1C1 = "=RC1&"" vuln ""&RC6"
        Set x = Range(x, x.End(xlDown))
        Set x = x.Offset(0, 19)
        x.FillDown
    Si c'est du travail de cochon, que recommandez vous?

    Merci d'avance pour toute réponse,

  2. #2
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Bonjour,

    Ceci doit être plus rapide, :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub toto()
     
    Range("maplage").FormulaLocal = "ma formule"
    End Sub
    si par contre d'origine ta cellule source contient la formule voulue ce n'est pas la peine de la réécrire et filldown est plus direct

    cordialement,

    Didier

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2011
    Messages : 19
    Par défaut
    Bonjour,

    Merco Ormonth pour ta réponse.

    L'idée dans ma question, étant comme nouveau en prog VBA, je voudrai éviter de prendre des mauvaises habitudes.

    L'interet que je vois dans la méthode FillDown et qu'en te placant sur une cellule (ex: G1) tu peux mettre une formule genre (=A1*B1) et du coup toutes les autres cellules de la colonne G auront leur formule adaptée (ex: G2=A2*B2 ...). En gros principe que beaucoup de gens utilisent directement sous Excel en mettant une formule dans une cellule puis en tirant cette cellule jusqu'au bas de leur tableau.

    Donc pour eviter cette methode FillDown, j'avais pensé à l'utilisation d'une boucle (car cela represente plus mon fonctionnement de prog aquis il y a qq temps de ça à l'université), mais en terme de complexité algorithmique (donc temps d'execution sur gros fichiers) j'ai l'impression que c'est plus couteux?

    Merci d'avance pour toute réponse,

  4. #4
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    Les boucles, parcours de collections etc... sont à éviter comme la peste à chaque fois que l'on peut car elles sont très énergivores.

    On les emploie beaucoup car très pratique, mais justement les limiter aux cas où des méthodes bien plus directes sont indisponibles ou non compatibles.

    Elles sont évoquées dans touts les sujets ayant traits aux accélération de code justement...

    pour le fun, voir ici :

    La deuxième méthode est donc 46 fois plus rapide avec 1 minute 41 secondes contre 1 heure 17 minutes et 41 secondes !
    Il faut garder à l'esprit qu'au niveau langage, le VBA est hébergé par une application hôte (ici Excel) , donc faire appel à des fonctions natives du programme, quand disponibles, est bien plus efficace.

    C'est pourquoi la connaissance d'Excel est très riche dans l'emploi du VBA Excel . On évite de réinventer la poudre...

    cordialement,

    Didier


    cordialement,

    Didier

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Octobre 2011
    Messages : 19
    Par défaut
    Super, merci beaucoup pour la réponse et ce lien très intéressant.
    Bonne journée,

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

Discussions similaires

  1. methode formula ?
    Par tomy7 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 25/02/2008, 17h08
  2. [debutant] [servlets] methode init()
    Par be_on_edge dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 01/03/2004, 15h11
  3. [METHODE] -> Détection de virus ?
    Par MaTHieU_ dans le forum C++Builder
    Réponses: 2
    Dernier message: 11/02/2004, 17h04
  4. Passage de variable par methode post ?
    Par oazar dans le forum Flash
    Réponses: 33
    Dernier message: 16/10/2003, 17h03
  5. Methode de drcherche a l,interieur de basse de donner texte
    Par philippe V dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 03/12/2002, 10h20

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