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 :

[VBA-E] ecrire une formule en vba


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Août 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 31
    Par défaut [VBA-E] ecrire une formule en vba
    Bonjour a tous,

    Au fait je voudrais ecrire une formule en derniere ligne de mon tableau, en dessous de chacune des colonnes, ma formule est

    SOMMEPROD(1*(D6 : D110<>0)) (par exemple)

    j ai ecrit le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test()
    Dim r As Integer
    Dim c As Integer
    r = Range("b5").End(xlDown).Row
    c = Range("b5").End(xlToRight).Column
    For i = 4 To c
    Cells(r + 1, i).FormulaR1C1 = "=SOMMEPROD(1*(" & (Cells(6, i), Cells(r, i)).Address & "<>0))"
    Next i
    End Sub
    Qu est ce qui cloche dans ce code ?

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    Citation Envoyé par Huubb
    ..
    Qu est ce qui cloche dans ce code ?
    ben déjà c'est pas le bon formula...
    Pourquoi autant de propriétés 'Formula' différentes ?

  3. #3
    Membre averti
    Inscrit en
    Août 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 31
    Par défaut
    Ok,

    J ai du coup remplacé mon SOMMEPROD par SUMPRODUCT,
    mais ca coince toujours !?

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    relis le lien en plus de la "langue" qui différentie les formules tu trouvera aussi la méthode d'adressage ... ! R1C1 ou A1

    un truc simple pour savoir que mettre dans ton champ formula.. saisie la formule sous excel, place toi sur la cellule contenant la formule, passe dans l'editeur de macro par un ALT F11, puis dans la fenêtre exécution par un CTRL G, puis saisi
    Citation Envoyé par fenêtre execution
    ?ActiveCell.formula
    valide par entrée et observe le résultat...(à comparer à la chaine de caractére que tu génére pour mettre dans ton champ formula...)

  5. #5
    Membre averti
    Inscrit en
    Août 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 31
    Par défaut
    Merci pour le tuyeau ctrl G

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ?ActiveCell.formula
    =SUMPRODUCT(1*(E6:E110<>0))
    Par ailleurs j avais oublie un range avant (ma plage de cellule).Address, alors forcément...
    mais je t avoue que je persiste a ne pas comprendre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test()
    Dim r As Integer
    Dim c As Integer
    r = Range("b5").End(xlDown).Row
    c = Range("b5").End(xlToRight).Column
    For i = 4 To c
    Cells(r + 1, i).FormulaR1C1 = "=SUMPRODUCT(1*(" & Range(Cells(6, i), Cells(r, i)).Address & "<>0))"
    Next i
    End Sub
    dans le code : FormulaR1C1, SUMPRODUCT, Address tout est en anglais ca devrait passer !

  6. #6
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    Hello,

    puisque tu es en FormulaR1C1, autant s'y conformer ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=SUMPRODUCT(1*(R6C" & i & ":R" & r & "C" &  i & " <>0))"

  7. #7
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Sauf que ta formule n'est pas en R1C1...

    Edit --> Grillé par cafeine qui, de plus, est plus explicite que moi.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  8. #8
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    ben rajoute la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    debug.print  "=SUMPRODUCT(1*(" & Range(Cells(6, i), Cells(r, i)).Address & "<>0))"
     
    Cells(r + 1, i).FormulaR1C1 = "=SUMPRODUCT(1*(" & Range(Cells(6, i), Cells(r, i)).Address & "<>0))"
    Debug.print (c'est la même chose que le ? dans la fenêtre exécution...et)vérifi donc ta chaine de caractére dans la fenêtre exécution...

  9. #9
    Membre averti
    Inscrit en
    Août 2006
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 31
    Par défaut
    Aahh ! d accord....

    suffisait de virer le R1C1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(r + 1, i).Formula = "=SUMPRODUCT(1*(" & Range(Cells(6, i), Cells(r, i)).Address & "<>0))"
    ou alors d adapter le code en R1C1, comme cafeine l a fait !

    voila ce qui se passe quand on apprend betement a partir de l enregistreur de macro sans se pencher sur les tutos...

    Merci beaucoup a vous 3
    c est vrai que le debug.print est bien pratique.

    Bon journée.

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

Discussions similaires

  1. [XL-2003] Ecrire une formule dans une cellule en VBA
    Par qi130 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 22/09/2010, 10h51
  2. [VBA-E] Appliquer une formule si cellule non vide.
    Par zeralium dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 13/03/2007, 20h58
  3. Paramétrer une formule en vba
    Par arnogef dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/08/2006, 12h48
  4. Copier une formule avec vba
    Par NAMORJOSE dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/05/2006, 01h12
  5. [VBA-E] Copier une formule de calcul dans toute la ligne
    Par kernel57 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/12/2005, 19h18

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