Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Passage paramètres de recherche dans fonction perso

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 !

Phillip

XLDnaute Occasionnel
Bonjour,

abcd m'a aidé hier pour une recherche dans un tableau, mais cela ne marche pas tout à fait comme je le souhaite. Je m'oriente donc vers une fonction personnalisée, mais j'ai un problème de passage de paramètres.

Je voudrais que la fonction recherche le paramètre dans ma feuille, et fasse un certain nombre d'actions. Or, ce que j'ai écrit ci-dessous ne fonctionne pas, car elle cherche "eleve" et nom pas le paramètre "eleve" !! ! Comment puis-je faire ?

Function Rangeleve(eleve)
'
Cells.Select
Selection.Find(What:=eleve, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate

lig = ActiveCell.Row
contcell = Cells(lig, 1)
rang = Mid(contcell, 8, 2)

End Function

Questions subsidiaires : Suis-je obligé d'activer ma cellule pour continuer mes actions ou peut-on simplifier ?


Merci !!
 
Re : Passage paramètres de recherche dans fonction perso

bonjour

question : cette fonction est lancée à partir d'une feuille ou d'une macro
si c'est à partir d'une feuille, il ne faut pas de select
Code:
Function Rangeleve(eleve)
    set Rangeleve = Cells.Find(What:=eleve, After:=ActiveCell, LookIn:=xlFormulas, _
                 LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                  MatchCase:=False, SearchFormat:=False).Activate
End Function
maintenant eleve c'est quoi, une variable Alpha, une cellule ? et tu retournes Quoi ?, une seule valeur à placer dans le nom de la fonction

Function Rangeeleve(byval eleve as range) as range
exemple d'utilisation : (en fonction de ce que j'ai ecrit ci_dessus)
Code:
dim result as range
set result = Rangeleve(Range("$A$1"))
if not result is nothing then
    lig = result.row
else
    msgbox "Pas trouvé"
end if
 
Re : Passage paramètres de recherche dans fonction perso


Bonjour,

eleve, c'est le nom d'un éleve...

Apparemment cela ne fonctionne pas, et je ne sais pas débugger une fonction (pas à pas ne marche pas)...
 
Dernière édition:
Re : Passage paramètres de recherche dans fonction perso

re:

si c'est le nom de l'élève dans une variable :

Code:
Function Rangeleve(eleve as string) as range
    set Rangeleve = Cells.Find(What:=eleve, After:=ActiveCell, LookIn:=xlFormulas, _
                 LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
                  MatchCase:=False, SearchFormat:=False).Activate
End Function

pour mette un point d'arret dans une fonction : tu te places sur la première ligne valide de la fonction
F9 -> pour mettre ou enlever un point d'arret
ou encore tu cliques dans la marge à gauche de la ligne
 
Re : Passage paramètres de recherche dans fonction perso

re:

ca va mieux avec un exemple de fichier
à tester :

Code:
Public Function Rangeleve(eleve As String) As Integer
    Set Rangeleve = Cells.Find(What:=eleve, After:=Range("A1"), LookIn:=xlValues, _
                 LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
    Rangeleve = Val(Mid(Cells(c.Row, 1), 8, 2))
End Function
 
Re : Passage paramètres de recherche dans fonction perso

Salut
Bonjour le fil
Bonjour le Forum

j'ai modifié ainsi ta fonction car tu utilises le nom de la fonction () pour récupérer l'emplacement du nom dans la feuille
Code:
Public Function Resulteleve(eleve As String) As String
Dim Rangeleve As Range '[COLOR=Blue]variable qui va récupérer la _ 
 cellule qui contient le nom[/COLOR]
With Worksheets("exemple") 'avec la feuille exemple
[COLOR=Blue]'ci dessous on va récupérer si elle existe la cellule ou _
 se trouve le nom passe en argument[/COLOR]
Set Rangeleve = .Cells.Find(what:=eleve, After:=ActiveCell, _
  LookIn:=xlFormulas,LookAt:=xlPart, SearchOrder:=xlByRows,_
    Direction:=xlNext,MatchCase:=False, SearchFormat:=False)
lig = Rangeleve.Row [COLOR=Blue]'ici on récupére le numero de la ligne _
 de la cellule ainsi trouvée[/COLOR]
contcell = .Cells(lig, 1)[COLOR=Blue] 'on affecte à la variable la valeur _
 de la cellule qui se trouve en colonne 1 sur la ligne lig[/COLOR]
rang = Mid(contcell, 8, 2) [COLOR=Blue]'et on récupère l'élément voulu _
 via la fonction Mid[/COLOR]
End With
   Resulteleve = rang '[COLOR=Blue]on passe à la fonction le résultat _
 de la recherche[/COLOR]
End Function
en espérant avoir compris la demande Lol
Le Fichier :Regarde la pièce jointe PhillipV1.xls
Bonne fin de journée
 
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
2
Affichages
589
V
Réponses
4
Affichages
3 K
Valentin94
V
A
Réponses
9
Affichages
3 K
O
Réponses
20
Affichages
4 K
O
M
  • Question Question
Réponses
0
Affichages
1 K
Mirguy23
M
A
Réponses
6
Affichages
6 K
V
Réponses
2
Affichages
2 K
vynmarius
V
F
Réponses
14
Affichages
2 K
F
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…