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 :

problème dans l'écriture d'une formule


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 136
    Points : 53
    Points
    53
    Par défaut problème dans l'écriture d'une formule
    bonjour à tous,

    voila j'ai un petit problème avec l'enregistreur de macro, j'ai une formule qui est :
    =SOMME((REJECT!d4:d1000000<TEMP!d11)*(REJECT!c4:c1000000<30)*(REJECT!b4:b1000000=1))+SOMME((REJECT!d4:d1000000<TEMP!d11)*(REJECT!c4:c1000000>50)*(REJECT!b4:b1000000=1))+SOMME((REJECT!d4:d1000000>TEMP!d11)*(REJECT!b4:b1000000=1))>TEMP!d19)*(REJECT!m4:m1000000<TEMP!h19)*(REJECT!l4:l1000000>50)*(REJECT!j4:j1000000>TEMP!d17)*(REJECT!j4:j1000000<TEMP!h17)*(REJECT!i4:i1000000>3.5)*(REJECT!i4:i1000000<18.5)*(REJECT!h4:h1000000<TEMP!d15)*(REJECT!g4:g1000000>135)*(REJECT!g4:g1000000<170)*(REJECT!f4:f1000000<TEMP!d13)*(REJECT!e4:e1000000>100)*(REJECT!e4:e1000000<140)*(REJECT!d4:d1000000<TEMP!d11)*(REJECT!c4:c1000000>30)*(REJECT!c4:c1000000<50)*(REJECT!b4:b1000000=1)))

    donc ma manipulation est la suivante, j'active l'enregistreur de macro, je tape ma formule, je la fini par ctrl+shift+enter. la tout ce passe bien il me trouve le bon résultat. ensuite j'arrete l'enregistreur. je place un contrôle activeX sur ma feuille excel et je lui assigne la macro avec la ligne de code : et la il me donne une fenêtre de deboggage ...
    j'ai fais un test, j'ai découper la formule, c'est à dire que j'ai fait une macro qu'avec :
    =SOMME((REJECT!d4:d1000000<TEMP!d11)*(REJECT!c4:Cc1000000<30)*(REJECT!b4:b1000000=1))
    et sa marche trés bien, et lorsque je rajoute :
    =SOMME((REJECT!d4:d1000000<TEMP!d11)*(REJECT!c4:c1000000<30)*(REJECT!b4:b1000000=1))+SOMME((REJECT!d4:d1000000<TEMP!d11)*(REJECT!c4:c1000000>50)*(REJECT!b4:b1000000=1))
    cela ne marche plus ...

    est ce que l'on pourrai m'aider ...

  2. #2
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    bonjour,

    et c'est quoi l'erreur renvoyée?
    sur quelle partie du code,....

    sans cela, ça va etre duraille!


  3. #3
    Membre du Club
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 136
    Points : 53
    Points
    53
    Par défaut
    il me dit :
    Erreur d'éxécution '1004':
    Impossible de définir la propriété FormulaArray de la classe Range

    et je ne comprend pas trop ...

  4. #4
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    un petit bout de code ne serait pas superflu!

    :o)

  5. #5
    Membre du Club
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 136
    Points : 53
    Points
    53
    Par défaut
    oups dsl ... ^^
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Macro11()
    '
    ' Macro11 Macro
    '
     
    '
        Selection.FormulaArray = _
            "=(SUM((REJECT!R[-121]C:R[999875]C<STAT_REJECT!RC[-2])*(REJECT!R[-121]C[-1]:R[999875]C[-1]<30)*(REJECT!R[-121]C[-2]:R[999875]C[-2]=1))+SUM((REJECT!R[-121]C:R[999875]C<STAT_REJECT!RC[-2])*(REJECT!R[-121]C[-1]:R[999875]C[-1]>50)*(REJECT!R[-121]C[-2]:R[999875]C[-2]=1))+SUM((REJECT!R[-121]C:R[999875]C>STAT_REJECT!RC[-2])*(REJECT!R[-121]C[-2]:R[999875]C[-2]=1)))"
    End Sub
    voila voila ^^

  6. #6
    Membre habitué Avatar de golliat
    Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 104
    Points : 125
    Points
    125
    Par défaut
    Pourquoi ne pas décomposer ta formule dans plusieurs cellules
    et ensuite relier le tout avec un sum qui ajoute les résultats de chaque partie ?

  7. #7
    Membre du Club
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 136
    Points : 53
    Points
    53
    Par défaut
    ben j'avais deja penser à sa, mais je voudrais bien savoir pourquoi l'enregistreur ne fonctionne pas correctement, surtout que par la suite j'ai une formule asser grosse ...

  8. #8
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    alors, tout de suite à chaud

    si la cellule active est en dessous de la ligne 122, ça va bugger à tout les coup

  9. #9
    Membre du Club
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 136
    Points : 53
    Points
    53
    Par défaut
    ah bon ? ben pourquoi sa ?

  10. #10
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    et si elle se situe au dessus de 125 aussi!

    lorsque tu as enregistré la macro, l'option relative était activée diroat-on!

  11. #11
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    ah bon ? ben pourquoi sa ?
    ce sont des références relatives
    donc, à partir de la sélection (puisque c'est là que tu envoie la formule)
    cf
    il va se décaler de 121 ligne vers le haut

  12. #12
    Membre du Club
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 136
    Points : 53
    Points
    53
    Par défaut
    donc en fait la solution de golliat serait la plus judicieuse ?

  13. #13
    Membre habitué Avatar de golliat
    Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 104
    Points : 125
    Points
    125
    Par défaut
    Déjà faire
    =sum(1+2) + sum(3+4)
    Excel le tolère pas... Après il y a peut-etre d'autres erreur comme le suggère mayekeul.

  14. #14
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    c'est juste à toi de savoir si cela doit se passer d'une maniere relative ou pas.

    Mais si décomposer te permet d'y voir plus clair et que cela te conviens , alors, oui.


  15. #15
    Membre du Club
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 136
    Points : 53
    Points
    53
    Par défaut
    ben je ne sais pas trop, car la formule excel que j'ai donné en exemple, c'est la plus simple et la plus petite, je dois faire la même chose avec des formules plus grosses ... donc je ne sais pas quels choix serai le mieu ...

  16. #16
    Membre habitué Avatar de golliat
    Profil pro
    Étudiant
    Inscrit en
    Juin 2008
    Messages
    104
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2008
    Messages : 104
    Points : 125
    Points
    125
    Par défaut
    Pour le bug des "sum" utilise beaucoup de "+" à la place. => long :/

    Mais pour ce dont te parle mayekeul vois avec lui xD

  17. #17
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    c'est très simple, si tu dois aplliquer une formule
    tu peux le fair e comme ça, ça ira très bien et ce sera plus clair pour toi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Formula = "=sum(A1:A6)"

  18. #18
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Je n'ai pas tes feuilles mais je n'ai pas de bug avec ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A1").FormulaLocal = "=SOMME((REJECT!d4:d1000000<TEMP!d11)*(REJECT!c4:c1000000<30)*(REJECT!b4:b1000000=1))" & " + SOMME((REJECT!d4:d1000000<TEMP!d11)*(REJECT!c4:c1000000>50)*(REJECT!b4:b1000000=1))"
    Tu peux tester pour nous ?

  19. #19
    Membre du Club
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    136
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 136
    Points : 53
    Points
    53
    Par défaut
    je vien de tester, et ce qui ne va pas la c'est qu'il faut que ce soi une formule matricielle...
    help ...

  20. #20
    Membre expérimenté Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Points : 1 665
    Points
    1 665
    Par défaut
    et bein dans ce cas la
    une histoire du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    range("a1:...")..formulaarray=....

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Problème écriture d'une formule
    Par mathilde13870 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/03/2014, 15h11
  2. Réponses: 3
    Dernier message: 19/07/2013, 20h33
  3. Réponses: 4
    Dernier message: 23/10/2006, 16h17
  4. I.E. souscis dans l'écriture d'une toolbar
    Par Trap D dans le forum MFC
    Réponses: 10
    Dernier message: 09/06/2006, 16h27
  5. Réponses: 3
    Dernier message: 15/07/2005, 17h58

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