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 via VBA [XL-2010]


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
    Ingenieur BE
    Inscrit en
    Août 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Ingenieur BE
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2016
    Messages : 13
    Par défaut Insérer une formule via VBA
    Bonjour à tous,

    je m'inscris ici car j'ai vraiment besoin de l'aide de meilleur que moi (malgré un intérêt certain pour le sujet, je travaille dans la robinetterie industrielle, je ne suis donc pas un expert du VBA)

    Je suis sur que la ligne à ajouter dans mon code de macro est facile mais je ne la trouve pas.

    Imaginons que j'ai une formule (par exemple "=somme(A4:A20)") et que je souhaite dire à ma macro de placer cette formule en A1 (et la calculer bien sure). Comment faire?
    Bon dans la réalité, la situation est bien plus complexe et ma formule fait 908 caractères mais je suppose que ça ne change rien par rapport à "=somme()"


    Si vous avez une réponse pour moi, je vous serez ÉTERNELLEMENT reconnaissant!

  2. #2
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Bonjour pitchito,

    Dans ton cas l'enregistreur de macro va être d'une aide précieuse.
    Je te conseil cet excellent tutoriel : Excel et l'enregistreur de macro


    Si tu as ta formule dans ton classeur il te suffit de lancer l'enregistreur de macro de te placer sur la cellule de faire F2 puis Enter et de stopper l'enregistreur.
    Tu auras alors un code servi sur un plateau.

    En reprenant ton exemple (Somme(A4:A20) en A1 de la feuille 1) :
    • Lancer l'enregistreur
    • Sélection de la feuille 1
    • Sélection de la cellule A1
    • F2
    • Entrer
    • Stopper l'enregistreur

    Excel me fourni le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub Macro1()
    '
    ' Macro1 Macro
    '
     
    '
        Sheets("Feuil1").Select
        Range("A1").Select
        ActiveCell.FormulaR1C1 = "=SUM(R[3]C:R[19]C)"
        Range("A2").Select
    End Sub
    Apres un petit nettoyage j'ai la macro suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub AjouterFormule()
        ThisWorkbook.Sheets("Feuil1").Range("A1").FormulaR1C1 = "=SUM(R[3]C:R[19]C)"
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Ingenieur BE
    Inscrit en
    Août 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Ingenieur BE
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2016
    Messages : 13
    Par défaut
    Merci pour la rapidité de la réponse, mais après essais ça ne fonctionne pas.

    Je pense que ça vient du fait que lorsque je lance la macro, le tableur est vide, il n'y a pas de formule dedans

    Après essais avec une simple formule de Somme, ça fonctionne parfaitement bien

    Alors pourquoi ça ne fonctionne pas avec une formule plus complexe? (La formule fonctionne parfaitement bien quand je la copie directement dans la cellule)


    Je me permet de mettre la formule ici, peut être qu'il y a un terme interdit en VBA dedans?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SIERREUR(SIERREUR(SIERREUR(SIERREUR(SIERREUR(INDEX('Flux Court'!$B$44:$BC$54;EQUIV('Matrice PolyC'!$A8;'Flux Court'!$A$44:$A$54;0);EQUIV('Matrice PolyC'!B$6;'Flux Court'!$B$6:$BC$6;0));(INDEX('Flux Long'!$B$31:$AZ$49;EQUIV('Matrice PolyC'!$A8;'Flux Long'!$A$31:$A$49;0);EQUIV('Matrice PolyC'!B$6;'Flux Long'!$B$6:$AZ$6;0))));INDEX('Log. Amont'!$D$33:$AO$50;EQUIV('Matrice PolyC'!$A8;'Log. Amont'!$C$33:$C$50;0);EQUIV('Matrice PolyC'!B$6;'Log. Amont'!$D$6:$AO$6;0)));INDEX(CdD!$D$22:$AH$42;EQUIV('Matrice PolyC'!$A8;CdD!$C$22:$C$42;0);EQUIV('Matrice PolyC'!B$6;CdD!$D$6:$AH$6;0)));INDEX('Flux Usinage'!$B$23:$AJ$38;EQUIV('Matrice PolyC'!$A8;'Flux Usinage'!$A$23:$A$38;0);EQUIV('Matrice PolyC'!B$6;'Flux Usinage'!$B$6:$AJ$6;0)));" ")

  4. #4
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    Bonjour

    L'enregistreur donne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    "=IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(INDEX('Flux Court'!R44C2:R54C55,MATCH('Matrice PolyC'!R[7]C1,'Flux Court'!R44C1:R54C1,0),MATCH('Matrice PolyC'!R6C[1],'Flux Court'!R6C2:R6C55,0)),(INDEX('Flux Long'!R31C2:R49C52,MATCH('Matrice PolyC'!R[7]C1,'Flux Long'!R31C1:R49C1,0),MATCH('Matrice PolyC'!R6C[1],'Flux Long'!R6C2:R6C52,0)))),INDEX('Log. Amont'!R33C4:R50C41,MAT" & _
            "ice PolyC'!R[7]C1,'Log. Amont'!R33C3:R50C3,0),MATCH('Matrice PolyC'!R6C[1],'Log. Amont'!R6C4:R6C41,0))),INDEX(CdD!R22C4:R42C34,MATCH('Matrice PolyC'!R[7]C1,CdD!R22C3:R42C3,0),MATCH('Matrice PolyC'!R6C[1],CdD!R6C4:R6C34,0))),INDEX('Flux Usinage'!R23C2:R38C36,MATCH('Matrice PolyC'!R[7]C1,'Flux Usinage'!R23C1:R38C1,0),MATCH('Matrice PolyC'!R6C[1],'Flux Usinage'!R6C2:R6" & _
            """ "")"
    dont pas de PB particulier

    Néanmoins il serait plus simple de nommer les plages de recherche afin d'alléger et donner de la lisibilité...

  5. #5
    Membre averti
    Homme Profil pro
    Ingenieur BE
    Inscrit en
    Août 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Ingenieur BE
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2016
    Messages : 13
    Par défaut
    Excusez moi par avance, je ne sais pas comment on met du code sur le forum, mais lorsque je met ça, j'ai une erreur à l'activation



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Macro5()
     
        Sheets("Matrice PolyC").Range("B8").FormulaR1C1 = "=IFERROR(IFERROR(IFERROR(IFERROR(IFERROR(INDEX('Flux Court'!R44C2:R54C55,MATCH('Matrice PolyC'!R[7]C1,'Flux Court'!R44C1:R54C1,0),MATCH('Matrice PolyC'!R6C[1],'Flux Court'!R6C2:R6C55,0)),(INDEX('Flux Long'!R31C2:R49C52,MATCH('Matrice PolyC'!R[7]C1,'Flux Long'!R31C1:R49C1,0),MATCH('Matrice PolyC'!R6C[1],'Flux Long'!R6C2:R6C52,0)))),INDEX('Log. Amont'!R33C4:R50C41,MAT" & _
            "ice PolyC'!R[7]C1,'Log. Amont'!R33C3:R50C3,0),MATCH('Matrice PolyC'!R6C[1],'Log. Amont'!R6C4:R6C41,0))),INDEX(CdD!R22C4:R42C34,MATCH('Matrice PolyC'!R[7]C1,CdD!R22C3:R42C3,0),MATCH('Matrice PolyC'!R6C[1],CdD!R6C4:R6C34,0))),INDEX('Flux Usinage'!R23C2:R38C36,MATCH('Matrice PolyC'!R[7]C1,'Flux Usinage'!R23C1:R38C1,0),MATCH('Matrice PolyC'!R6C[1],'Flux Usinage'!R6C2:R6" & _
            """ "")"
     
     
    End Sub

  6. #6
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 564
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 564
    Par défaut
    re

    Quelle erreur ?

    Tes divers onglets existent bien dans le classeur ?

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

Discussions similaires

  1. Insérer une formule dans une cellule Excel via VBA
    Par *.Har(d)t dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/02/2020, 13h02
  2. Insérer une formule par VBA
    Par Carmiel dans le forum Excel
    Réponses: 7
    Dernier message: 13/12/2016, 21h55
  3. [Toutes versions] Insérer une formule VBA
    Par F.Salenko dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/03/2011, 15h07
  4. introduire formule dans une cellule via VBA
    Par lilly91 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/02/2010, 16h16
  5. Inserer une formule (Longue) dans une cellule via VBA
    Par alex830001 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 21/01/2009, 12h28

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