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]Utiliser une variable dans une formule


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut [VBA-E]Utiliser une variable dans une formule
    J'essaie de faire la chose suivante :VBA EXCEL
    utiliser une variable pour changer ma formule au fur et à mesure de mes déplacements dans la feuille où je me trouve.('temp' est en réalité un compteur)

    En bref : Je n'arrive utiliser la valeur de ma variable dans la formule d'index.

    Je suis débutant , j'espère que ma question est assez explicite.

    Merci d'avance de me désembourber si vous le pouvez !
    Cordialement

    BOSSU

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Macro1()
    
    Dim temp As Variant
    temp = 1
    
    Range("i6").Select
        ActiveCell.FormulaR1C1 = _
            "=INDEX(Feuil2!C[-2-temp],MATCH(Feuil1!RC[-2-temp],Feuil2!C[-3-temp],0))"
        
    End Sub

  2. #2
    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
    Bonjour et bienvenue sur ce forum.

    Nous demandons, ici, de mettre un tag (regarde les autres discussions) dans le titre de la discussion (=titre du premier message) pour préciser l'environnement de développement.

    Ensuite, entoure ton code de balises [code] à l'aide de l'icône située au-dessus de l'éditeur de message.

    Bonne programmation.
    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!

  3. #3
    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
    Ceci dit, ce que tu cherches devrait ressembler à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    "=INDEX(Feuil2!C[-2-" & temp & "],MATCH(Feuil1!RC[-2-" & temp & _
    "],Feuil2!C[-3-" & temp & "],0))"
    Mais si le but est d'en faire une boucle pour remplir une série de cellules, regarde du côté de la méthode FillDown (ou FillRight) qui va incrémenter les références comme si tu faisais un "étirement" par la poignée de cellule dans Excel.
    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!

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Merci pour l'idée mais...
    Ce n'est pas la solution : les ' " ' premettent d'inclure dans la formule de la cellule ,la variable en tant que paramétre de la formule, mais moi j'aimerais que ma variable influance directement mon paramètre de formule (sans qu'il soit affiché).
    J'ai essayé quand même, mais ça n'a pas marché.

    J'ai bien noté l'histoire du TAG et des balises de codes (la prochaine fois j'en tiendrai compte).
    Je vois d'ailleurs que les autres questions sont en gras et pas celle ci, sans doute à cause de cette histoire de TAG.

    Bon ben j'y retourne, en espérant qu'on aura une solution pour moi.

    Merci encore

    Bossu

  5. #5
    Expert éminent sénior


    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
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par bossu
    (...)
    J'ai bien noté l'histoire du TAG et des balises de codes (la prochaine fois j'en tiendrai compte).
    (..)
    tu peu toujours éditer ton premier message pour modifier le titre ( rajout tag..) et rajouter les balises de code ...

    sinon peu-tu nous décrire à nouveau ton probléme, j'ai toujours pas compris ce que tu voulais faire..? il y devrai y avoir quoi dans temps ?

  6. #6
    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 543
    Points
    15 543
    Par défaut
    Je n'ai rien compris non plus

    A+

  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 bossu
    J'ai bien noté l'histoire du TAG et des balises de codes (la prochaine fois j'en tiendrai compte).
    Le temps que tu frappes cette phrase, tu aurais pu le faire pour cette discussion-ci.
    Je l'ai fait pour toi.
    C'est autant de temps en moins pour répondre à ta question et à celles des autres.
    Citation Envoyé par bossu
    Je vois d'ailleurs que les autres questions sont en gras et pas celle ci, sans doute à cause de cette histoire de TAG.
    Non, les discussions en gras sont celles que tu n'as pas lues.
    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
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Je reformule ma question
    En fait j'ai une formule simple du type :
    =E8+F8; je veux qu'à chaque fois que je passe ma macro elle se déplace à droite mais reste =E8+F8.

    Le code de cette formule est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
        ActiveCell.FormulaR1C1 = "=RC[-1]+RC[-2]"
    Je ne peux pas utiliser FillRight puisque je ne veux pas que mon adressage change.

    Ma variable "temp" me servirait à garder mon adressage fixe :
    à chaque passage de la macro temp = temp +1
    Et comme j'avance d'une cellule dans ma feuille il faut que la formule devienne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ActiveCell.FormulaR1C1 = "=RC[-2]+RC[-3]"
    Je dois donc utiliser temp pour soustraire 1 de plus à chaque fois que je passe à une cellule suivante.

    J'espère que cette reformulation vous permettra de m'aider.
    A bientôt

    Merci d'avance.

  9. #9
    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
    Et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.FormulaR1C1 = "=RC5+RC6"
    ne te convient pas?
    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!

  10. #10
    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 543
    Points
    15 543
    Par défaut
    Utilise des adresses absolues
    =$E$8+$F$8

    Si tu recopies ça dans n'importe quelle cellule de la feuille, tu auras toujours =$E$8+$F$8

    Tu dis

    A+

  11. #11
    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
    Dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.FormulaR1C1 = "=RC5+RC6"
    R est relatif et C5 et C6 sont absolus.
    Il n'y a qu'à regarder le résultat généré, dans la cellule, par cette instruction.

    Et donc, un FillRight pourrait partaitement convenir.
    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!

  12. #12
    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 543
    Points
    15 543
    Par défaut
    Pour que la formule =$E$8+$F$8 suive le N° de ligne, tu peux écrire
    ActiveCell.Formula = "=$E8+$F8"
    Recopiée vers le bas, elle suivra le N° de ligne =$E9+$F9, =$E10+$F10, ...
    Solution qui n'est pas en contradiction avec celle d'AlainTech

    A+

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Merci
    En effet vous avez tous raison.

    Je me sens un peu couillon là !
    Si si si....

    Bon en tout cas merci beaucoup à tous d'avoir passé du temps sur mon problème et à bientôt.

    Votre site est vraiment bien.

    Bossu

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

Discussions similaires

  1. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  2. Réponses: 4
    Dernier message: 29/01/2008, 11h12
  3. [VBA-E]- Recuperer le resultat d'une somme dans une variable
    Par ekynoxx dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 09/05/2007, 11h03
  4. Réponses: 1
    Dernier message: 15/02/2007, 00h24
  5. Réponses: 7
    Dernier message: 02/05/2006, 16h28

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