Rech 1 valeur dss une plage & renvoi titre colonn

Fermé
Am - 10 sept. 2018 à 10:47
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 - 10 sept. 2018 à 11:07
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

cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
Modifié le 10 sept. 2018 à 11:48
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