Fonction recherche libelle

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

dureiken

XLDnaute Junior
Bonjour,

toujours en avançant dans mon super tableau pour le boulot, je bute sur une fonctionnalité que j'aimerai implémenter dans ma macro de remplissage du tableau selon un formulaire.

Je voudrai créer une fonction qui reçoit un paramètre (exemple toto) et qui va chercher dans une ligne donnée (cette ligne est ecrit en numero dans une cellule, par exemple dans la celluleI3 qui ne bougera jamais) la premiere colonne qui contient "toto" soit en libellé soit en valeur dans la colonne (je n'ai pas encore choisi le critère que je prendrai). La fonction donnera comme valeur le numero de la colonne.

Ce que j'aimerai et je sais pas si c'est possible c'est que cette fonction soit commune à tout le fichier excel et puisse être apellée par plusieurs macros différents, et que la variable de retour soir utilisable par la macro qui a appelé cette fonction. Je sais pas si c'est très clair ce que je demande 😀

Question bonus : dans certaines cases j'ai modifié le libellé mais je n'arrive pas à le remodifier lorsque je me suis trompé, il reste toujours l'ancien.

Merci d'avance pour votre aide.
 
Re : Fonction recherche libelle

Bonjour,

Si tu fait une recherche partielle de contenu, il faut l'indiquer à vba, les recherches se font sur les données telles quelles sont affichée (même avec format)
Feuille Donnees_GEH Cellule H5
pour rechercher une cellule qui commence par 2010:
=NumColonne("2010*";"En_Cours")

Code:
Function NumColonne(Valeur As Variant, NomDeLaFeuille As String) As Long
    Dim C As Range
    Set C = Sheets(NomDeLaFeuille).Rows([Ligne_Titres]).Find(what:=Valeur, LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByRows)
    If Not C Is Nothing Then NumColonne = C.Column
End Function

Quant au bouton je te laisse le faire à partir de ceci:

Code:
Sub AnneeRecherchee()
    Dim an
    an = InputBox(Prompt:="Entrez l'année recherchée sur 4 chiffres", Title:="Recherches")
    MsgBox NumColonne(an & "*", "En_Cours")
End Sub

A+
 
Dernière modification par un modérateur:
Re : Fonction recherche libelle

hum toute la difficulté d'expliquer sur Internet.

Ce qui ne marchait pas dans les cellules c'est que je m'étais un , au lieu d'un ; entre les 2 entrees de la fonction. Donc ça c'est réglé 🙂

Je sais pas si tu as regardé les cellules qui s'appellent "20XX Contrat", en fait la cellule ne contient que 20XX, le contrat est le format personnalisé prédéfini de cellule. Ce qui fait que :
Code:
=numcolonne(2010;"En_Cours")
marche
Code:
=numcolonne("2010";"En_Cours")
ne marche pas

Or lorsque je recupere mon choix par ma combobox il cherche "2010" et non 2010, de ce fait cela ne marche pas
 
Re : Fonction recherche libelle

Bonsoir Dureiken, le fil,

Hasco n'a pas l'air d'être dans le coin.

Puisque la ligne contient des valeurs numériques, il faut rechercher des valeurs numériques, élémentaire mon cher Watson.

Mais de toute façon la méthode Find ne marche pas ici, alors essayer :

Code:
Function NumColonne(Valeur As Variant, NomDeLaFeuille As String) As Integer
    Dim col As Variant
    col = Application.Match(Valeur, Sheets(NomDeLaFeuille).Rows([Ligne_Titres]), 0)
    If IsNumeric(col) Then NumColonne = col
End Function

Sub AnneeRecherchee()
    Dim an, v
    an = InputBox(Prompt:="Entrez l'année recherchée sur 4 chiffres", Title:="Recherches")
    v = [SIZE="3"][COLOR="Red"]Val[/COLOR][/SIZE](an)
    MsgBox NumColonne(v, "En_Cours")
End Sub

A+
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
149
Réponses
4
Affichages
144
Réponses
4
Affichages
163
Retour