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 :

Recherche Tableau 2D [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 122
    Points : 51
    Points
    51
    Par défaut Recherche Tableau 2D
    Bonjour à toutes et à tous,
    comme j'en avais assez des Index Equiv pour rechercher dans des tableaux à 2 entrées, je me suis créé ma petite fonction sans prétention qui fait son office (je ne comprends pas pourquoi les développeurs Excel n'ont pas fait cette fonction en "base").
    Je suppose qu'il y a moyen de faire mieux ou plus sioux mais ça fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    Function RechTab2D(varPlage As Range, varX, varY)
     
        Application.Volatile
     
        Feuille = varPlage.Worksheet.Name
     
        If IsMissing(varX) Or IsMissing(varY) Then RechTab2D = CVErr(xlErrNA): Exit Function
     
        PosX = varPlage.Column
        Posy = varPlage.Row
     
        NbCol = varPlage.Columns.Count
        NbLig = varPlage.Rows.Count
     
        For x = 0 To NbCol - 1
            If Worksheets(Feuille).Cells(Posy, PosX + x) = varX Then xTrouve = True: Exit For
        Next
     
        For y = 0 To NbLig - 1
            If Worksheets(Feuille).Cells(Posy + y, PosX) = varY Then yTrouve = True: Exit For
        Next
     
        If xTrouve And yTrouve Then
            RechTab2D = Worksheets(Feuille).Cells(y + Posy, x + PosX).Value
        Else
            RechTab2D = CVErr(xlErrNA)
        End If
     
    End Function
    sauf que cela ne fonctionne pas si la table est dans un autre Workbook...

    Je suis preneur de toutes vos idées,,liens etc..
    Bonne journée à vous,
    SB

  2. #2
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour,
    Citation Envoyé par SBranchu Voir le message
    je me suis créé ma petite fonction sans prétention qui fait son office (je ne comprends pas pourquoi les développeurs Excel n'ont pas fait cette fonction en "base").
    Il s'agit là d'une fonction qui correspond uniquement à ton besoin particulier : chercher une valeur sur la première ligne et une autre sur la première colonne pour fournir ce qui se trouve à l'intersection (ça fait très bataille navale).
    Je ne vois pas pourquoi les développeurs l'auraient intégré à Excel.
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 122
    Points : 51
    Points
    51
    Par défaut
    Citation Envoyé par Patrice740 Voir le message
    Il s'agit là d'une fonction qui correspond uniquement à ton besoin particulier : chercher une valeur sur la première ligne et une autre sur la première colonne pour fournir ce qui se trouve à l'intersection (ça fait très bataille navale).
    Je ne vois pas pourquoi les développeurs l'auraient intégré à Excel.
    Certes, mais n'ont-ils pas créé un RechercheH et un RechercheV, pourquoi pas un RechercheHV, mais j'ai bien compris l'idée...
    Ma demande était plus sur le fait d'aller chercher la donnée sur une table dans un autre fichier...
    Merci de votre aide,
    Bien à vous,
    SB

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 660
    Points : 5 783
    Points
    5 783
    Par défaut
    Sauf erreur de ma part, ça vient de sortir officiellement:
    https://www.developpez.net/forums/d2...ion-recherche/

    edit: Merci Jacques pour la précision, étant bloqué dans une vielle version j'avais lu la news en diagonale j'ai cru comprendre que c'était ça.
    J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.

  5. #5
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Points : 2 156
    Points
    2 156
    Par défaut
    Bonjour,

    >Sauf erreur de ma part, ça vient de sortir officiellement:

    La fonction Recherchex() remplace Equiv/Index mais n'est pas une recherche dans un tableau 2D.


    Boisgontier

  6. #6
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 475
    Points : 5 630
    Points
    5 630
    Par défaut
    Bonjour,

    Citation Envoyé par SBranchu Voir le message
    Ma demande était plus sur le fait d'aller chercher la donnée sur une table dans un autre fichier...
    Pour que ça fonctionne avec un autre classeur, il ne faut pas chercher dans le fichier actif avec Worksheets(Feuille), mais dans la feuille qui contient le Range :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    Function RechTab2D(varPlage As Range, varX, varY)
    Dim Feuille As Worksheet
        Application.Volatile
        If IsMissing(varX) Or IsMissing(varY) Then RechTab2D = CVErr(xlErrNA): Exit Function
        PosX = varPlage.Column
        Posy = varPlage.Row
        NbCol = varPlage.Columns.Count
        NbLig = varPlage.Rows.Count
        Set Feuille = varPlage.Parent
        For x = 0 To NbCol - 1
            If Feuille.Cells(Posy, PosX + x) = varX Then xTrouve = True: Exit For
        Next
        For y = 0 To NbLig - 1
            If Feuille.Cells(Posy + y, PosX) = varY Then yTrouve = True: Exit For
        Next
        If xTrouve And yTrouve Then
            RechTab2D = Feuille.Cells(y + Posy, x + PosX).Value
        Else
            RechTab2D = CVErr(xlErrNA)
        End If
    End Function
    Cordialement,
    Patrice
    Personne ne peut détenir tout le savoir, c'est pour ça qu'on le partage.

    Pour dire merci, cliquer sur et quand la discussion est finie, penser à cliquer sur

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 122
    Points : 51
    Points
    51
    Par défaut
    Tout simplement Tip Top !

    Merci

    SB

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

Discussions similaires

  1. Fonction recherche tableau 3 entrées
    Par emilie31 dans le forum Excel
    Réponses: 3
    Dernier message: 31/07/2010, 06h46
  2. [XL-2003] Recherche tableau 2 dimensions
    Par kirin54 dans le forum Excel
    Réponses: 3
    Dernier message: 08/02/2010, 10h35
  3. [MySQL] Recherche, tableau et pagination
    Par groskanel dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 29/07/2009, 13h15
  4. [Recherche] Tableau avec lignes qui se déploient
    Par chris78 dans le forum Débuter
    Réponses: 3
    Dernier message: 09/04/2009, 19h31
  5. Recherche tableau excel
    Par zepeto dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 26/06/2008, 09h29

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