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 Recherche titre dans une matrice [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 126
    Points : 69
    Points
    69
    Par défaut VBA Recherche titre dans une matrice
    Bonjour,

    Je souhaiterai récupérer le titre d'une colonne où se trouve la valeur cherchée au sein d'une matrice.

    Ex :
    Tata Toto Titi
    A1 B1 C1
    A2 B2 C2
    A3 B3 C3

    Si j'ai la valeur C2, je souhaiterai avoir le résultat : "Titi".
    J'ai essayé de faire avec INDEX et EQUIV mais impossible de le faire marcher.

    Petite précision : les valeurs dans la matrice ne sont pas classées par ordre alphabétique.

    Merci d'avance pour votre aide,

    Vincent

  2. #2
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Voici une fonction qui renvoie le titre de la colonne :
    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
    Function fTitre(ByVal oRng As Excel.Range, ByVal vValue As Variant) As String
    Dim i As Integer, j As Integer, v As Variant
     
    v = oRng.Value
    For i = 2 To UBound(v, 1)
        For j = 1 To UBound(v, 2)
            If v(i, j) = vValue Then Exit For
        Next j
        If j <= UBound(v, 2) Then Exit For
    Next i
     
    If j <= UBound(v, 2) Then
        fTitre = v(1, j)
    Else
        fTitre = ""
    End If
     
    End Function
    Pour l'utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub test()
    MsgBox fTitre(ThisWorkbook.Worksheets(1).Range("A1:C4"), "B2")
    End Sub
    Cordialement,

    PGZ
    pluritas non est ponenda sine necessitate - Le rasoir d'Okham
    Ne jamais attribuer à la malignité ce que la stupidité peut expliquer -Le rasoir d'Hanlon

  3. #3
    Membre du Club
    Inscrit en
    Août 2009
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 126
    Points : 69
    Points
    69
    Par défaut
    Bonjour,

    Merci beaucoup pour ce code.
    ça marche parfaitement : balèze le code !


    Vincent

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

Discussions similaires

  1. Recherche dichotomique dans une matrice n*n
    Par kenzo75 dans le forum Algorithmes et structures de données
    Réponses: 27
    Dernier message: 27/03/2014, 17h42
  2. [XL-2010] Recherche dans une matrice avec doublons (formule ou VBA)
    Par Lucorah dans le forum Excel
    Réponses: 7
    Dernier message: 07/05/2012, 17h16
  3. [XL-2007] Recherche chronologique dans une matrice
    Par lebonprince dans le forum Excel
    Réponses: 20
    Dernier message: 10/05/2010, 17h18
  4. Réponses: 1
    Dernier message: 24/05/2007, 14h46
  5. Réponses: 2
    Dernier message: 19/10/2005, 15h38

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