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,

je ne sais pas si j'ai tout compris, sans fichier exemple, mais voici deux exemple dans le fichier joint.
1 par formule
1 par function VBA (renvoie 0 si la valeur n'est pas trouvée)

A+
 
Re : Fonction recherche libelle

Ca marche nickel c'est exactement ce que je voulais, juste 3 petites questions :
  1. est-il possible de faire le test sur le libellé de la cellule et non son contenu ?
  2. est-il possible d'aller chercher la cellule I3 d'une autre feuille s'appelant tutu ? => ok j'ai trouvé
  3. comment appeler la macro avec une autre macro car dans une cellule ça marche bien mais en l'appelant avec numcolonne(K) dans une autre fonction vba cela ne marche pas

Merci en tout cas !
 
Re : Fonction recherche libelle

Re,

Je ne sais pas si j'ai tout compris. Cela est peut-être clair pour toi mais je crois que tu te mélanges les pinceaux entre valeur et adresse de cellule ( à moins que tu ne sois sous 2007 la cellule EOBn n'existe pas)

Fait des recherches sur la fontion Indirecte d'excel à l'aide de F1 et des tests, cela te permettra dans un premier temps de mieux cerné ce que tu cherches et ensuite de t'attaquer à VBA.

Peut-être qu'il manque simplement les objectifs finaux de la chose pour que cela devienne limpide.

Mais voici ton fichier modifié avec ce que j'ai cru comprendre.

A+
 
Re : Fonction recherche libelle

ton nouveau fichier marche parfaitement, je ne sais pas comment s'appelle ce paramètre :

quand tu choisis une cellule tu as la zone de formule accessible par F2 puis a gauche la "zone de nom" que j'ai appelé libellé en fait

Si la cellule E6 a pour nom EOB, ce qui est le cas sur le fichier que tu m'as envoyé, la fonction renvoie bien 5 comme valeur.

Par contre je cherche maintenant à appeler cette fonction au sein d'une autre macro, à l'aide d'un bouton par exemple.

Genre tu cliques sur le bouton et tu as un MsgBox(idx) pour vérifier la valeur donnée par la fonction NumColonne("EOB")

Sinon malheureusement au taff la fonction F1 ne marche pas ... nous n'avons pas l'aide de disponible
 
Re : Fonction recherche libelle

Tout marche nickel c'est super !

Petit détail : peut-on utiliser le code suivant pour qu'il recherche dans une feuille différente de celle ou on rentre la formule par exemple ?

Code:
Function NumColonne(Valeur As Variant) As Long
    Dim idx As Variant
    idx = Application.Match(Valeur, Rows([Ligne_Titres]), 0)
    If IsError(idx) Then NumColonne = 0 Else NumColonne = idx
End Function

Merci
 
Re : Fonction recherche libelle

Bonjour,

Code:
Function NumColonne(Valeur As Variant,[COLOR=red]NomDeLaFeuille[/COLOR] As String) As Long
    Dim idx As Variant
    idx = Application.Match(Valeur, Sheets([SIZE=3][COLOR=red]NomDeLaFeuille[/COLOR][/SIZE]).Rows([Ligne_Titres]), 0)
    If IsError(idx) Then NumColonne = 0 Else NumColonne = idx
End Function

A+
 
Re : Fonction recherche libelle

2 petites questions suite à cette modificaton :

  1. Je n'arrive plus à utiliser directement le code VBA dans une cellule comme tu avais fait, si je mets =NumColonne("K","En_Cours") pour chercher la colonne qui contient K dans la feuille En_Cours, il me met une erreur et la macro ne marche donc pas. Par contre cela marche très bien si je l'appelle dans une autre macro VBA par exemple.
  2. Dans le cadre de ma recherche avec NumColonne, je suis amené à chercher une date, 2011 par exemple. Je choisis l'année à partir d'une Combobox. Lorsque j'utilise numcolonne(2011,"En_Cours") cela marche, lorsque j'utilise numcolonne(Combobox1.Value,"En_Cours) cela ne marche pas, car Combobox1.Value est "2011" et non 2011. J'ai essayé de mettre la source du combobox en nombre mais kifkif.

Any great idea ? 🙂
 
Re : Fonction recherche libelle

bonjour,

1 - Tu sais, sans fichier exemple qui reproduise exactement ce que tu veux faire, c'est difficile de taper juste.

2 - tu dis "chercher une date, 2011 par exemple' pour excel 2011 est la date du "03/07/1905". La date 1 est le 31/12/1899.
Si tu veux rechercher le 1/1/2011 il faut passer à la fonction pour l'argument valeur: clng(cdate("01/01/2011"))

3 - pour que la fonction trouve sur une autre feuille il faut en plus que
Sheets(NomDeLaFeuille).Rows([Ligne_Titres]) correspondent à la ligne de recherche dans la feuille.

A+
 
Re : Fonction recherche libelle

Tu as raison, un fichier exemple sera plus simple.

Ci-joint, en feuille Donnees, cellule I3 nommée "Ligne_Titres" la ligne 11 dans laquelle sont contenus les titres de la feuille En_Cours.

J'aimerai faire un petit bouton ou on demande l'année dans une combobox(uniquement l'année et non une date par exemple) et qui me donne la colonne correspondant dans la feuille En_Cours.

J'aimerai aussi avoir dans une cellule de Données, comme tu avais fait sur ton premier fichier, la fonction numcolonne qui affiche directement ce resultat.

Je sais pas si c'est clair c'est pas facile a expliquer
 

Pièces jointes

- 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