Problème avec une fonction qui renvoie le numéro d'une ligne

Bonjour, j'ai un soucis avec une fonction qui cherche dans la colonne A la cellule contenant "Semaine x" où x est renseigné par l'utilisateur voici le code que j'ai actuellement :

Public Function Lsem(Num_sem As Integer) As Integer 'Renvoie le numéro de ligne associé à l'entête d'une semaine
    Lsem = Columns("A").Find("Semaine " & Num_sem).Row
End Function

Cette fonction fonctionne uniquement lorsque je l'appelle dans une cellule mais j'ai une erreur lorsque que je l'utilise dans d'autres fonctions :

image

Pourtant la fonction doit renvoyer un entier donc je ne vois pas trop...

J'avais au préalable fait cette fonction avec une boucle While mais qui posait également problème lorsque je l'utilisais dans d'autres fonctions.

Merci à ceux qui prendront le temps pour résoudre mon problème.

bonjour, je préfère long au lieu d'integer, pour le cas ou la ligne est >32.000 ou même indéfini

Vous faitez quoi ?

par exemple

Public Function Lsem(Num_sem As Integer)      'Renvoie le numéro de ligne associé à l'entête d'une semaine
     Lsem = "erreur"
     On Error Resume Next
     Lsem = Columns("A").Find("Semaine " & Num_sem).Row
End Function

Sub teste()
     iligne = Lsem(7)
     If IsNumeric(iligne) Then
          MsgBox "la ligne est " & iligne
     Else
          MsgBox "faute"
     End If
End Sub

Je vous joint le fichier complet pour plus de compréhension. L'essentiel du code est dans le UserForm "Menu_ajout_op". Lidée est d'ajouter des tableaux pour les intérimaires ou pour des titulaires dans les semaines sélectionnées. Une ligne "sous total" doit apparaître pour les intérimaires ou les titulaires lors d'un premier ajout de l'un ou l'autre. Pour faciliter tout ça j'ai créer plusieurs fonctions mais j'ai plein de soucis lorsque j'appelle une fonction dans une autre.

Bonjour Peawix, le forum,

le problème vient que "Semaine xx" se trouve dans des cellules fusionnées. il faut agrandir la plage de recherche à l'ensemble des cellules fusionnées, ou éviter de travailler avec des cellules fusionnées en vba.

Bonjour PeaWix, le fil

Une idée comme ça... Si tu change la définition de la fonction comme ça :

Public Function Lsem(ByVal Num_sem As Integer) 
'   Au lieu de
Public Function Lsem(Num_sem As Integer) 

Est-ce que ça fonctionne mieux ?

Merci de votre aide, en effet ça fonctionne mieux

Rechercher des sujets similaires à "probleme fonction qui renvoie numero ligne"