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 :

écrire une Formule avec plages en VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 116
    Par défaut écrire une Formule avec plages en VBA
    Bonjour

    Dans une feuille(Carte) de calcul il y a des formules qui pointent vers des plages nommées d'une autre feuille (BD).
    mais lors de la suppression et l'ajout de colonne sur la feuille BD les formules perdent les référence de plages nommées.

    Je souhaiterais remplacer ces formule grace à une procédure VBA.
    j'ai consulté ce tuto mais pour ces formules je bloque.

    la formule de la cellule G2 est =SI(NB.SI.ENS(ville;Carte!$B2;cerem;Carte!$G$1=0);"";SI(C2<1;"";ARRONDI(D2/NB.SI.ENS(ville;Carte!$B2;cerem;Carte!$G$1);1)))

    traduite en VBA
    =IF(COUNTIFS(ville,Carte!$B2,cerem,Carte!$G$1=0),"",IF(C2<1,"",ROUND(D2/COUNTIFS(ville,Carte!$B2,cerem,Carte!$G$1),1)))
    j'ai essayé avec balises
    =IF(COUNTIFS(<ville>,Carte!$B2,<cerem>,Carte!$G$1=0),"",IF(C2<1,"",ROUND(D2/COUNTIFS(<ville>,Carte!$B2,<cerem>,Carte!$G$1),1)))"


    Dans une macro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub formule()
    With ThisWorkbook.Worksheets("Carte")
     .Range("C2:C40").Formula = "=IF(COUNTIFS(<ville>,Carte!$B2,<cerem>,Carte!$G$1=0),"",IF(C2<1,"",ROUND(D2/COUNTIFS(<ville>,Carte!$B2,<cerem>,Carte!$G$1),1)))"
     End With
     
    End Sub

    Mais ça ne va pas.

    Une aide serait bienvenue
    Merci

  2. #2
    Membre émérite Avatar de Nicolas JACQUIN
    Homme Profil pro
    .
    Inscrit en
    Avril 2014
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 556
    Par défaut
    Bonjour,
    essaye comme ça peut-être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("G2").FormulaR1C1 = _
            "=IF(COUNTIFS(ville,Carte!RC2,cerem,Carte!R1C7=0),"""",IF(RC[-4]<1,"""",ROUND(RC[-3]/COUNTIFS(ville,Carte!RC2,cerem,Carte!R1C7),1)))"

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 116
    Par défaut
    Citation Envoyé par Nicolas JACQUIN Voir le message
    Bonjour,
    essaye comme ça peut-être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("G2").FormulaR1C1 = _
            "=IF(COUNTIFS(ville,Carte!RC2,cerem,Carte!R1C7=0),"""",IF(RC[-4]<1,"""",ROUND(RC[-3]/COUNTIFS(ville,Carte!RC2,cerem,Carte!R1C7),1)))"
    Merci pour cette réponse rapide !

    J'ai essayé avec d'autres formules mais je ne comprend pas quand et où il faut mettre les guillemets

    Exemple
    =NB.SI.ENS(ville;Carte!$B3;cerem;$G$1;datedem;">=01/01/"&$H$1;datedem;"<=31/12/"&$H$1)
    je l'ai écrite comme ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("c2").FormulaR1C1="=COUNTIFS(ville,Carte!$RC2,cerem,Carte!R1C7=0),datedem,">=01/01/"&Carte!R1C8,datedem,"<=31/12/"&Carte!R1C8)"
    mais c'est pas bon, je galère.

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Il me semble pourtant bien que l'un de nous deux te l'a montré ...
    Tu ne saurais pas non plus copier/coller ?
    En ce qui me concerne, c'est l'heure de la siestita !

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Une formule est une chaîne de caractères :
    regarde ta variable/formule VBA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox "=IF(COUNTIFS(ville,Carte!$B2,cerem,Carte!$G$1=0),"",IF(C2<1,"",ROUND(D2/COUNTIFS(ville,Carte!$B2,cerem,Carte!$G$1),1)))"
    Tu vois ce que sont devenus tes "" ? (il n'en reste plus qu'un.
    Pour obtenir des guillemets dans une variable string, il faut les doubler.

    Un salut à Nicolas JACQUIN (plus rapide que moi)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 116
    Par défaut
    Citation Envoyé par unparia Voir le message
    Bonjour
    Une formule est une chaîne de caractères :
    regarde ta variable/formule VBA :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MsgBox "=IF(COUNTIFS(ville,Carte!$B2,cerem,Carte!$G$1=0),"",IF(C2<1,"",ROUND(D2/COUNTIFS(ville,Carte!$B2,cerem,Carte!$G$1),1)))"
    Tu vois ce que sont devenus tes "" ? (il n'en reste plus qu'un.
    Pour obtenir des guillemets dans une variable string, il faut les doubler.

    Un salut à Nicolas JACQUIN (plus rapide que moi)
    Merci
    je vais m’entraîner.
    mais pas facile de comprendre les cas pour les mettre ces guillemets.

  7. #7
    Membre émérite Avatar de Nicolas JACQUIN
    Homme Profil pro
    .
    Inscrit en
    Avril 2014
    Messages
    556
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : .
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2014
    Messages : 556
    Par défaut
    re et bonjour à unparia aussi

    déjà tu peux te servir de l'enregistreur de macro qui est la pour ça, s'il est présent c'est pour s'en servir
    et voir ce que ça donne

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    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 : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    mais pas facile de comprendre les cas pour les mettre ces guillemets.
    C'est pourtant expliqué au chapitre Comment traiter les constantes alphanumériques dans une formule ? dans le billet titré Ecrire une formule dans Excel à l'aide d'une procédure VBA (Part 2) que tu as toi même référencé
    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

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 116
    Par défaut
    Citation Envoyé par Nicolas JACQUIN Voir le message
    re et bonjour à unparia aussi

    déjà tu peux te servir de l'enregistreur de macro qui est la pour ça, s'il est présent c'est pour s'en servir
    et voir ce que ça donne
    Merci, c'est pas faux !!
    c'est plus simple et ça évite les questions

    merci encore

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

Discussions similaires

  1. [XL-2007] Étendre une formule à l'aide de VBA sur une plage variable
    Par cyril7751 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 24/07/2012, 16h23
  2. [XL-2003] Insérer une formule avec "Rank" en VBA
    Par apnw7931 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/04/2011, 11h48
  3. [XL-2003] Copie d'une formule avec VBA
    Par akane dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/09/2009, 19h32
  4. [VBA-Excel] Calcul d'une formule avec une inconnue
    Par micwiss dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/10/2006, 16h04
  5. Copier une formule avec vba
    Par NAMORJOSE dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/05/2006, 00h12

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