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 :

Ecriture de formule en VBA


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 148
    Points : 57
    Points
    57
    Par défaut Ecriture de formule en VBA
    Bonjour

    lorsque j'écris ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Range("Q2").Select
        ActiveCell.FormulaR1C1 = "=IF(RC[10]="""","""", RC[-2]+RC[2])"
        Range("Q2").Select
        Selection.AutoFill Destination:=Range("Q2:Q450"), Type:=xlFillDefault
        Range("Q3:Q450").Select
    J'obtiens dans la cellule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(LC(13)="";""; LC(-2)+LC(5))
    normalement j'aurai du obtenir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(LC(10)="";""; LC(-2)+LC(2))
    une personne saurait elle pourquoi ?
    merci d'avance de vos réponses

    Cordialement

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 97
    Points : 135
    Points
    135
    Par défaut
    Quand tu mets :
    La valeur entre crochet est une valeur d'offset, c'est à dire qu'il va décaler de 10 colonnes sur la droite par rapport à Q2, donc Q13.

    Tu devrais essayer plutôt ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Formula = "=IF(" & ActiveCell & "="""",""""," & activecell.offset(0,-2) & "+" & activecell.offset(0,2) & ")"
    Cordialement.

    Touffe

  3. #3
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Tu pourrais écrire directement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("Q2:Q450").FormulaR1C1 = "=IF(RC10="""","""", RC[-2]+RC2)"
    en Q2 on aura
    =SI($J2="";""; O2+$B2)
    C10: signifie la colonne 10
    C[10]: signifie la 10ème cellule à droite de la cellule de formule
    C[-10]: signifie la 10ème cellule à gauche de la cellule de formule

    R2: signifie la ligne 2
    R[2]: signifie la 2ème ligne en dessous de la cellule de formule
    R[-2]: signifie la 2ème ligne en dessus de la cellule de formule
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  4. #4
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    juste une rectification pour touffe54:
    La valeur entre crochet est une valeur d'offset, c'est à dire qu'il va décaler de 10 colonnes sur la droite par rapport à Q2, donc Q13.
    Ce serait pas plutôt la cellule "AA2"?


    avec le code de target111 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("Q2").Select
        ActiveCell.FormulaR1C1 = "=IF(RC[10]="""","""", RC[-2]+RC[2])"
    j'obtiens ceci en Q2:
    est-ce le résultat que tu souhaites avoir?
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    148
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 148
    Points : 57
    Points
    57
    Par défaut
    Bonjour

    Merci pour vos réponses

    Je n'aie pas encore essayé les solutions que vous me proposées

    la formule je l'aie écrite dans la cellule Q2 et j'ai fait une macro pour avoir cette formule en VBA et copier cette formule dans la colonne Q

    je voulais avoir =SI(AA2="";"";O2+S2)
    Et comme je le disais j'obtiens =SI(AD2="";"";O2+V2)
    comme le code vient d'une macro possible qu'il ne soit pas bon et comme je ne connais pas grand chose au VBA j'éssaye de me débrouiller avec des macros

    Cordialement

Discussions similaires

  1. [VBA-E]Formules en VBA?
    Par dev81 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 01/06/2007, 20h55
  2. [VBA-E] ecrire une formule en vba
    Par Huubb dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 25/01/2007, 14h15
  3. tirage formules en VBA avec excel
    Par melodyyy dans le forum Macros et VBA Excel
    Réponses: 46
    Dernier message: 23/11/2006, 18h33
  4. Paramétrer une formule en vba
    Par arnogef dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/08/2006, 11h48
  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