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 :

Adapter fonction index en VBA [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 335
    Par défaut Adapter fonction index en VBA
    Bonjour,

    J'ai un fichier excel avec des cellules où il y a des formules utilisant les fonctions INDEX et MATCH imbriquées. Typiquement les formules sont:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =INDEX('Consolidated WIG'!$1:$65536,MATCH("Current",'Consolidated WIG'!$B:$B,0),MATCH('Chart (2)'!C14,'Consolidated WIG'!$2:$2,0))
    A présent je voudrais faire la même chose en VBA. Voici donc ce que j'essaie de faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim ConsolSheet As Worksheet
    Dim ChartSheet As Worksheet
    Dim value As Variant
     
    Set ConsolSheet = ThisWorkbook.Worksheets("Consolidated WIG")
    Set ChartSheet = ThisWorkbook.Worksheets("Chart(2)")
     
    value = INDEX(ConsolSheet!$1:$65536,MATCH("Current",ConsolSheet!$B:$B,0),MATCH(ChartSheet!C14,ConsolSheet!$2:$2,0))
    Mais cela ne fonctionne pas. Il semble qu'excel n'accepte pas la manière dont je sélectionne les lignes/colonnes.
    L'utilisation de la fonction INDEX semble différente en VBA. Quelqu'un saurait-il comment l'utiliser correctement.

    Merci d'avance.

    PS: désolé pour les balises codes mais je n'arrive à les insérer dans mon message :-(

  2. #2
    Membre chevronné
    Inscrit en
    Octobre 2008
    Messages
    273
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Octobre 2008
    Messages : 273
    Par défaut
    Bonjour,
    il faut remplacer "value" par formulalocal.

    @+

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 335
    Par défaut
    Merci pour ta réponse mais je ne comprends pas vraiment ce que tu veux dire.

    Peut-être ma question n'est pas très clair: quand j'écris la ligne value = ... , le texte devient rouge et j'ai un message d'erreur "Charactère invalide", et excel me sélectionne $. Quand j'enlève les $, même erreur en me sélectionnant les !...

  4. #4
    Membre éclairé
    Inscrit en
    Avril 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 335
    Par défaut
    C'est bon je viens de comprendre (enfin je pense).
    il faudrait que j'écrive:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    value = "=Index(ConsolSheet!$1:$65536, MATCH(Current,ConsolSheet!$B:$B,0))"
    Mais cela ne me retourne pas la valeur de la cellule.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mars 2009
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 6
    Par défaut
    Moi aussi j'ai rencontré le même problème, je ne comprends pas bien comment utiliser la fonction index en VBA.

    David

  6. #6
    Expert éminent 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
    Par défaut
    Je n'ai pas la fonction MATCH ! mais je pense que la syntaxe devrait être ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("D5").FormulaLocal = "=INDEX(ConsolSheet!$1:$65536;MATCH(""Current"";ConsolSheet1!$B:$B;0);MATCH(ChartSheet!C14;ChartSheet!$B:$B;0))"

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

Discussions similaires

  1. [XL-2010] Transformer fonction index+match en vba
    Par yzf-r dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/10/2014, 16h19
  2. [XL-2010] Fonction index & Match dans un code VBA
    Par rinada dans le forum Excel
    Réponses: 3
    Dernier message: 05/03/2013, 12h14
  3. [XL-2010] Parcourir un tableau et transcrire la fonction INDEX() en VBA
    Par statista dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 18/01/2011, 16h44
  4. Definir un index en VBA
    Par caps_corp dans le forum Access
    Réponses: 2
    Dernier message: 05/06/2006, 11h59
  5. Réponses: 1
    Dernier message: 14/10/2005, 15h36

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