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 :

[E-02] formules excel sous vba


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 40
    Points : 19
    Points
    19
    Par défaut [E-02] formules excel sous vba
    Bonjour à tous,

    je code actuellement une application qui calcule des valeurs affichées en sortie dans une feuille Excel. Je dois ensuite sommer les cellules par ligne.

    Après, je veux vérifier que la somme est comprise entre deux valeurs données.
    Cependant, je ne veux pas écrire simplement la formule de test dans Excel car en fonction de l'exécution, il y a plus ou moins de lignes et de colonnes en sortie. mon idée est donc de passer par vba pour écrire la formule au bon endroit (exemple: colonne immédiatement après le tableau de résultat).

    C'est cool, j'ai déjà ma formule excel: si la somme des cellules A à C de la ligne est plus grande que C1 et plus petite que C2 alors VRAI.
    Mais quand je code cela code sous vba, j'ai une erreur vba '1004'. Elle m'arrive expressément avec une formule ET, (avec Somme ça passe):
    Voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    i
    ActiveCell.Value = "=ET(D6>=C1;D6<=C2)"
    Ca ne marche pas en remplaçant par et du 'and' à la place du 'et' ni en écrivant juste Activecell.

    Quelqu'un comprend t-il la source de l'erreur?

    Merci à tous pour votre aide

  2. #2
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Bonjour,
    Voici l'équivalent de ta formule en format formuleR1C1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        ActiveCell.FormulaR1C1 = _
            "=AND(R[-10]C[-2]>=R[-15]C[-3],R[-10]C[-2]<=R[-14]C[-3])"
    Vois si ça peut t'aider dans ton problème.

  3. #3
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Bonjour,

    Essaye ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.FormulaLocal = "=ET(D6>=C1;D6<=C2)"
    Tu dis

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 40
    Points : 19
    Points
    19
    Par défaut re
    Merci aalex_38 et Fvandermeulen. Vos deux formules marchent! Et en plus je les avais vues dans des dicussions, j'ai oublié d'essayer, c'est bête.
    Par contre en résultat dans la cellule, la FormulaR1C1 écrit de drôles de choses:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =ET(C65528>=B65523;C65528<=B65524)
    .

    Vous savez pourquoi ma formule à moi ne passait pas?

    En tout cas, merci.

    P.S.: pour pouvoir réutiliser la formule de Fvandermeulen: R précise la ligne (row), C la colonne (column). Entre crochets, on indique la ligne et la colonne de la cellule à utiliser. Si on est sur la même ligne où la même colonne, on peut omettre de préciser les crochets. Par exemple si je veux que ma cellule C2 contienne ce que contient A2 et que ma cellule A3 contienne ce que contient C2 je ferais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    range("C2").FormulaR1C1 = "=RC[-2]"
    range("A3").FormulaR1C1= "=R[-1]C[2]"

  5. #5
    Membre émérite Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Points : 2 662
    Points
    2 662
    Par défaut
    Bonjour,
    La formuleR1C1 se "déplace" à partir de la cellule qui contient la formule, il faut donc être vigilent quand on adapte les variables, c'est vrai que c'est pas toujours clair, la solution de aalex_38 est plus facile d'application.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 40
    Points : 19
    Points
    19
    Par défaut R1C1
    Citation Envoyé par Fvandermeulen Voir le message
    Bonjour,
    La formuleR1C1 se "déplace" à partir de la cellule qui contient la formule, il faut donc être vigilent quand on adapte les variables, c'est vrai que c'est pas toujours clair, la solution de aalex_38 est plus facile d'application.
    En effet, j'ai pu voir ça. J'ai enregistrer une macro, fait plusieurs opérations et j'ai compris qu'il y avait un référencement à la cellule d'où on appliquait la macro.

    Merci encore

  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 : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par ladygtk Voir le message
    Vos deux formules marchent!
    Dans ce cas, un petit clic sur ?

    Merci

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 40
    Points : 19
    Points
    19
    Par défaut re
    Non, je n'ai pas mis résolu, car je savais que je pouvais encore avoir besoin d'en parler. Ca fait une semaine déjà, mais voilà, j'ai un nouveau problème similaire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function Init_formules_tabdebits_calcul(cell_1 As Range)
    ' Mise à jour des formules d'un tableau dans la feuille de calcul
    ' 
    nb_colonnes = 2
    Feuil5.Activate
    cell_1.Activate
    For cpt_col = 0 To nb_colonnes - 1
        cell_1.Offset(0, cpt_col).FormulaR1C1 = "=SUM(RC[-18+" & cpt_col & "* 2]:RC[-17+" & cpt_col & "*2])"
    Next
    Init_formules_tabdebits_calcul = 1 ' l'exécution de la fonction s'est bien déroulée
    End Function
    J'ai une erreur 1004 à la réalisation de l'instruction de l'affectation de formule.
    Voyez-vous pourquoi? Je ne pense pas que ce soit dû à la formule, est-ce à cause de ma variable cell_1?
    Merci à tous.

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 40
    Points : 19
    Points
    19
    Par défaut incrémenter la formule dans une plage de cellule
    Ca y est, j'ai trouvé l'erreur:
    pour les valeurs numériques, il faut les traiter en dehors de la chaîne de caractères de la formule en utilisant l'opérateur &:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cell_1.offset(0,cpt_col).FormulaR1C1 = "=Sum(RC[" & -18 + cpt_col * 2 & "]:RC[" & -17 + cpt_col * 2 & "])"

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

Discussions similaires

  1. formule excel vers VBA
    Par kedas dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/10/2007, 18h18
  2. Supprimer des données Excel sous VBA Access
    Par Sam 069 dans le forum VBA Access
    Réponses: 1
    Dernier message: 09/10/2007, 09h55
  3. Parseur formule Excel <-> Code VBA
    Par gretch dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/08/2007, 18h08
  4. Correspondance formules excel et VBA
    Par abu143 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/10/2006, 17h54
  5. [EXCEL][VBA] Utilisation des formules Excel en VBA
    Par Amanck dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/12/2005, 15h08

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