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 :

Comment transposé une formule INDEX + EQUIV en macro VBA


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 116
    Points : 31
    Points
    31
    Par défaut Comment transposé une formule INDEX + EQUIV en macro VBA
    Bonsoir à tous.

    Après avoir mené des recherches (infructueuses) depuis 2 jours je me décident à poser directement ma question.

    Je cherche à transposer ce type de formule :
    "=INDEX('non-métalliques'!B2:F15;EQUIV($E$1;liste;0);EQUIV(D2;element;0))" en macro VBA. Les différents exemples trouvés (ici et sur le net ne m'ont pas paru être bien adaptés...).

    C'est en fait une recherche 2 critères (colonnes et lignes) et je cherche l'intersection de ces critères (dans une autre page).

    Si quelqu'un a une petite idée je suis preneur

    Merci

  2. #2
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonjour Mandrake, bonjour le forum

    Peurt-être comme ça (à adapter je suis tellement nul en formule) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim LI As Integer
    Dim COL As Integer
     
    LI = Range("liste").Find(Range("E1").Value, ,xlValues, xlWhole).Row
    COL = Range("element").Find(Range("D2").Value, ,xlValues, xlWhole).Column
    Activecell.Value = sheets("non-métalliques").Cells(LI, COL).Value
    À plus,

    Thauthème

    Je suis Charlie

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 767
    Points : 28 626
    Points
    28 626
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Dois-tu écrire cette formule en VBA dans une plage de cellules ?
    Dans l'affirmative, à lire Ecrire une formule dans Excel à l'aide d'une procédure VBA et Comment écrire une formule plus complexe dans une cellule ?
    Si l'idée est d'exploiter le résultat dans une variable, plusieurs options s'offrent à toi, la fonction Evaluate ou utiliser les méthodes Index et Match de la propriété WorksheetFunction de l'objet Application
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 116
    Points : 31
    Points
    31
    Par défaut
    Citation Envoyé par Thautheme Voir le message
    Bonjour Mandrake, bonjour le forum

    Peurt-être comme ça (à adapter je suis tellement nul en formule) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim LI As Integer
    Dim COL As Integer
     
    LI = Range("liste").Find(Range("E1").Value, ,xlValues, xlWhole).Row
    COL = Range("element").Find(Range("D2").Value, ,xlValues, xlWhole).Column
    Activecell.Value = sheets("non-métalliques").Cells(LI, COL).Value
    Bonsoir Thautheme, je viens voir ta proposition je vais tenter de la tester et après de l'adapter au projet global.

    Citation Envoyé par Philippe Tulliez
    Bonjour,
    Dois-tu écrire cette formule en VBA dans une plage de cellules ?
    Dans l'affirmative, à lire Ecrire une formule dans Excel à l'aide d'une procédure VBA et Comment écrire une formule plus complexe dans une cellule ?
    Si l'idée est d'exploiter le résultat dans une variable, plusieurs options s'offrent à toi, la fonction Evaluate ou utiliser les méthodes Index et Match de la propriété WorksheetFunction de l'objet Application
    Pour être un peu plus précis je souhaite récupérer les valeurs et non pas inscrire la formule dans une plage de cellule.

    Mon fichier contient 3 feuilles une de travail et les 2 autres de données. Lorsque je choisi une référence et un paramètre je souhaite dans la feuille de données choisie au départ récupérer la valeur correspondante à la référence et au pramètre choisi.

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 767
    Points : 28 626
    Points
    28 626
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour être un peu plus précis je souhaite récupérer les valeurs et non pas inscrire la formule dans une plage de cellule.
    Donc, comme je l'ai écritt
    Si l'idée est d'exploiter le résultat dans une variable, plusieurs options s'offrent à toi, la fonction Evaluate ou utiliser les méthodes Index et Match de la propriété WorksheetFunction de l'objet Application
    et s'il faut écrire les formules avec des paramètres lire les deux billets que j'ai référencé.

    Exemple avec la fonction Evaluate et un paramètre de l'affichage du résultat de la formule SOMME(A2:A11) de la feuille nommée [Feuil1] du classeur où se trouve la procédure VBA,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub t()
     Const myFormula As String = "=SUM(<Address>)"
     With ThisWorkbook.Worksheets("Feuil1")
      MsgBox Evaluate(Replace(myFormula, "<Address>", .Range(.Cells(2, 1), .Cells(11, 1)).Address))
     End With
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. [XL-2013] Incrémenter des onglets dans une formule INDEX+EQUIV
    Par Megajav dans le forum Excel
    Réponses: 8
    Dernier message: 12/04/2018, 20h57
  2. [XL-2007] Macro comment copier une formule jusqu'à la derniere ligne d'une col
    Par zaza45 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 04/01/2012, 14h44
  3. Réponses: 10
    Dernier message: 28/01/2010, 11h26
  4. Comment affecter une formule matricielle longue dans une cellule
    Par dav_e77 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/01/2007, 18h56
  5. Réponses: 5
    Dernier message: 20/06/2006, 08h24

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