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 :

Insérer une formule dans une cellule Excel via VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 320
    Points : 311
    Points
    311
    Par défaut Insérer une formule dans une cellule Excel via VBA
    Salut à tous,

    Je génère en VBA des formules de calculs dynamiquement en fonction du nombre d'enregistrements de mon recordset, et je voudrais coller ces formules dans des cellules.
    Jusqu'ici pas de problème, sauf qu'au lieu de prendre la formule et de la calculer, excel l'affiche comme n'importe quelle chaîne.

    En effet, je ne peux pas mettre de signe égal en début de formule, sinon ça génère une erreur...

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlSheet.Cells(j, 7) = "SOMME.SI(F5:F" & j - 2 & ";""=" & rst(0) & """;G5:G" & j - 2 & ")"
    La formule est correcte, sauf qu'elle est prise comme une chaine.

    En ajoutant un égal

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlSheet.Cells(j, 7) = "=SOMME.SI(F5:F" & j - 2 & ";""=" & rst(0) & """;G5:G" & j - 2 & ")"
    ça génère l'erreur

    J'ai essayé naïvement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlSheet.Cells(j, 7).formula = "SOMME.SI(F5:F" & j - 2 & ";""=" & rst(0) & """;G5:G" & j - 2 & ")"
    Mais ça prend la formule comme une chaîne, comme si il n'y avait pas le formula.

    Bref... quelqu'un peut me sauver ?
    *.Har(d)t
    ---
    "Je donnerais mon bras droit pour être ambidextre"
    Brian W. Kernighan

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    A la place de Formula essaye FormulaLocal

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlSheet.Cells(j, 7).FormulaLocal = "=SOMME.SI(F5:F" & j - 2 & ";""=" & rst(0) & """;G5:G" & j - 2 & ")"
    Je n'ai pas testé

    Starec

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    320
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 320
    Points : 311
    Points
    311
    Par défaut
    Citation Envoyé par Starec
    Bonjour

    A la place de Formula essaye FormulaLocal

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xlSheet.Cells(j, 7).FormulaLocal = "=SOMME.SI(F5:F" & j - 2 & ";""=" & rst(0) & """;G5:G" & j - 2 & ")"
    Je n'ai pas testé

    Starec

    Yiiiiiiha

    Merci Starec, tu me sauves la vie !
    *.Har(d)t
    ---
    "Je donnerais mon bras droit pour être ambidextre"
    Brian W. Kernighan

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2018
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Syntaxe d'utilisation de formulaLocal
    Bonjour le forum.
    J'aimerais svp connaitre la syntaxe de d'écriture de formulaLocal.
    En fait, je veux l'utiliser et y mettre des imbrications (SI) pour les insérer dans une cellule feuille Excel 2013. Mais là je ne reçois que des messages d'erreurs.
    Je suis novice en vba, merci de m'aider à mieux comprendre.
    Exemple du code souhaité:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(lign_active, col_pu).FormulaLocal = "=SI(Cells(lign_active, col_cod)=(worksheets("coefficients")).cells(lign_sigles,col_dbut_sigles)),(worksheets("coefficients")).(cells(lign_sigles,col_dbut_sigles)-1)*(worksheets("Devis")).cells(lign_active,colon_pu_fob),0)"

    Explication : Je veux dire: ma cellule Cells(lign_active, col_pu) doit recevoir la valeur de la cellule situé dans la feuille coefficients -1 (worksheets("coefficients")).(cells(lign_sigles,col_dbut_sigles)-1) multiplié par la valeur de la cellule de la feuille Devis (worksheets("Devis")).cells(lign_active,colon_pu_fob),0) et tout cela si le texte se trouvant dans la cellule Cells(lign_active, col_cod) est pareil a celui se trouvant dans la feuille coefficients (worksheets("coefficients")).cells(lign_sigles,col_dbut_sigles).

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    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 : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'aimerais svp connaitre la syntaxe de d'écriture de formulaLocal.
    En fait, je veux l'utiliser et y mettre des imbrications (SI) pour les inserer dans une cellule feuille excell 2013. Mais là je ne recois que des messages d'erreurs.
    Je suis novice en vba, merci de m'aider à mieux comprendre.
    Pour éviter des heures de recherches, de maintenances le jour où l'on change d'interface linguistique d'excel ou tout simplenent si l'on envoie son classeur à un utilisateur ayant une autre interface, Il est préférable d'utiliser la propriété Formula que FormulaLocal

    De plus, il est parfaitement inutile d'utiliser une boucle pour écrire une formule sur plusieurs lignes et enfin, l'usage des tableaux structurés (en VBA objet ListObject) permet d'écrire la formule dans une seule cellule. Le tableau structuré se chargeant de répartir la formule sur l'ensemble des cellules de la colonne.

    A lire sur le sujet ces billets


    [EDIT]
    Cells(lign_active, col_pu).FormulaLocal = "=SI(Cells(lign_active, col_cod)=(worksheets("coefficients")).cells(lign_sigles,col_dbut_sigles)),(worksheets("coefficients")).(cells(lign_sigles,col_dbut_sigles)-1)*(worksheets("Devis")).cells(lign_active,colon_pu_fob),0)"
    La formule que tu souhaites placer dans la propriété Formula ou même FormulaLocal n'est pas transférable telle quelle dans Excel

    Il faut écrire manuellement la formule dans Excel et ensuite suivre ce qui est décrit dans les billets référencés.
    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

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

Discussions similaires

  1. [XL-2010] Insérer le résultat d'une formule dans une case
    Par Walaboss dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/04/2015, 17h19
  2. Réponses: 2
    Dernier message: 23/03/2014, 12h05
  3. [XL-2010] Formule : attribuer une formule dans une cellule
    Par popi33370 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 06/03/2014, 18h06
  4. Déplacer une image d'une feuille vers une autre dans un fichier Excel
    Par helenaide dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/10/2011, 14h27
  5. Réponses: 3
    Dernier message: 29/01/2008, 12h08

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