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 :

Ecrire formule "dynamique"


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur Logistique
    Inscrit en
    Octobre 2013
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Logistique
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2013
    Messages : 104
    Par défaut Ecrire formule "dynamique"
    Bonsoir à tous,

    je code un outils qui doit pouvoir m'insérer utiliser des valeurs depuis d'autres onglets (nommés) à l'aide de formule. C'est là que ça bloque.
    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For i = 1 To NbrPieces
            Formule = "COUNTIF('" & NFEntree & "'!B3:AD3;" & Chr(34) & "TRUE" & Chr(34) & ")"
            Worksheets(NFDonnees).Cells(4, 4 * i - 1).Formula = "=" & Formule
    Next
    J'ai un problème à la troisième ligne. NFEntree est un string du nom d'une feuille.
    L'erreur donnée : "n° 1004 - Application-defined or object-defined error"

    L'idée ensuite est de pouvoir faire varier dans ma boucle for les lignes de la formule à savoir prendre en ligne 4 par exemple au lieu de 3 ici, mais ça, si le reste fonctionne ça devrait passer.

    Merci par avance de votre aide !!!


    Philippe

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonsoir.

    Tu peux essayer de simplifier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    formule = "COUNTIF('" & NFEntree & "'!B3:AD3;TRUE)"
    Cordialement,

    PGZ

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur Logistique
    Inscrit en
    Octobre 2013
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Logistique
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2013
    Messages : 104
    Par défaut
    Merci de ta réponse, hélas, même en simplifiant ça ne fonctionne pas...

    J'ai essayé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Worksheets(NFDonnees).Cells(4, 4 * i - 1) = "=COUNTIF(" & NFEntree & "!B3:AD3;" & Chr(34) & "TRUE" & Chr(34) & ")"
    'ou
    Worksheets(NFDonnees).Cells(4, 4 * i - 1) = "=COUNTIF('" & NFEntree & "'!B3:AD3;TRUE)"
    'ou encore
    Worksheets(8).Cells(4, 4 * i - 1).FormulaR1C1 = "=COUNTIF(B3:AD3;" & Chr(34) & "TRUE" & Chr(34) & ")"
    'et
    Worksheets(8).Cells(4, 4 * i - 1).Formula = "=COUNTIF(B3:AD3;TRUE)"
    'et encore
    Worksheets(8).Range("C4").Formula = "=COUNTIF(B3:AD3;TRUE)"
    Et rien ne fonctionne, ce qui me fait dire qu'il pourrait y avoir un paramètre mal renseigné dans l'éditeur... Avez-vous une idée ?
    Je cherche de mon côté, mais suis preneur de vos idées.

    [EDIT]
    étrange, je viens de faire un essai ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets(8).Range("C4").FormulaLocal = "=COUNTIF(B3:AD3;TRUE)"
    Et ça marche...
    Pourtant ma formule est déjà en anglais...
    Ce pourrait-il être lié à la langue du système d'exploitation qui est elle en Français -alors que Office est en Anglais- ??? (enfin je ne vois pas le rapport...)
    De plus, en essayant ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets(8).Range("C4").FormulaLocal = "=COUNTIF('" & NFEntree & "'!B3:AD3;TRUE)"
    ça ne fonctionne pas...

    [/EDIT]

  4. #4
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Et oui ! Il manquait qqc... Tu peux essayer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets(8).Range("C4").Formula = "=COUNTIF('" & NFEntree & "'!B3:AD3;TRUE)"
    Si ca ne marche toujours pas, tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debug.Print "=COUNTIF('" & NFEntree & "'!B3:AD3;TRUE)"
    Et tu regardes ce que cela donne dans la fenêtre d'exécution.

    Cordialement,

    PGZ

Discussions similaires

  1. [xsl]simuler le mecanisme OO de "liaison dynamique"
    Par philemon_siclone dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 19/12/2003, 11h34

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