Rech 1 valeur dss une plage & renvoi titre colonn

Am -  
cs_Le Pivert Messages postés 8437 Statut Contributeur -
Bonjour,

Je souhaite rechercher une valeur dans une plage de cellules (ex : J3:AA19) et lorsque la valeur est trouvée, afficher le titre de la colonne.
Il s'agit d'un tableau qui affiche les étapes d'un projet et une fois par ligne, il est indiqué "en attente" (càd là où on en est. Exemple : facturation). Je souhaiterais afficher dans un tableau le titre de la colonne où se trouve le "en attente". Je ne sais pas si je suis claire...

1 réponse

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    Voir ceci en vba:

    https://forums.commentcamarche.net/forum/affich-37621992-methode-find-dans-vba-recherche-de-donnees-sous-excel#exemple-d-utilisation

    ce qui donne:

    Sub Cherche()
    'déclaration des variables :
    Dim Trouve As Range, PlageDeRecherche As Range
    Dim Valeur_Cherchee As String, AdresseTrouvee As String
    
    '********* à adapter ***********
    'affectation de valeurs aux variables :
        'on cherche le mot "Trouve"
    Valeur_Cherchee = "Trouve"
        'dans la première colonne de la feuille active
    Set PlageDeRecherche = ActiveSheet.Range("J3:AA19")
    '*******************************
    
    'méthode find, ici on cherche la valeur exacte (LookAt:=xlWhole)
    Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlWhole)
    
    'traitement de l'erreur possible : Si on ne trouve rien :
    If Trouve Is Nothing Then
        'ici, traitement pour le cas où la valeur n'est pas trouvée
        AdresseTrouvee = Valeur_Cherchee & " n'est pas présent dans " & PlageDeRecherche.Address
    Else
        'ici, traitement pour le cas où la valeur est trouvée
        AdresseTrouvee = Trouve.Address
       
    End If
    MsgBox AdresseTrouvee
     MsgBox Trouve.Column 'colonne
       MsgBox Trouve.Row 'ligne
     MsgBox Cells(1, Trouve.Column).Value 'en-tete colonne
    'vidage des variables
    Set PlageDeRecherche = Nothing
    Set Trouve = Nothing
    End Sub
    


    Tu remplaces les MsgBox par des variables

    Voilà

    0