utilisation d'une fonction

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 !

nina71287

XLDnaute Occasionnel
Bonsoir,

Je n'arrive pas à utiliser cette fonction:

Function DateAddress(Plage As Range, LaDate) As String
'recherche une date dans une plage d'une ligne ou d'une colonne
'renvoie l'adresse de la cellule où elle a été trouvée en cas
'de succès, une chaîne vide dans tous les autres cas
Dim ArrDates, Li&, S$

'ne traite pas les plages discontinues
S = Plage.Address
If InStr(1, S, ";") > 0 Or InStr(1, S, ",") > 0 Then Exit Function

'ni plusieurs lignes/colonnes
If Plage.Rows.Count > 1 And Plage.Columns.Count > 1 Then Exit Function

'Value2 contient le numéro de série d'une date
ArrDates = Plage.Value2
On Error Resume Next
Li = Application.Match(CLng(CDate(LaDate)), ArrDates, 0)
On Error GoTo 0
'aucune correspondance
If Li = 0 Then Exit Function

If Plage.Columns.Count = 1 Then
'colonne
DateAddress = Plage.Range("A" & Li).Address(0, 0)
Else
'ligne
DateAddress = Cells(Plage.Row, Plage.Column + Li - 1).Address(0, 0)
End If

End Function


date_existe = DateAddress("A4:A65336", D)

ou D=inputbox("entrez une date")

ce qui pose problème c'est la plage ce n'est apparemment pas le type attendu

J'envahis un peu le forum mais si quelqu'un pouvait m'aider ce serait trés sympas merci d'avance
 
Re : utilisation d'une fonction

Bonsoir Nina 🙂,
je n'ai pas l'impression que tu envahisse le forum tant que tu ne fait pas du multi postage pour la même question 😛.
Pour ta fonction, le problème ne vient pas du Range à partir du moment où il n'est pas discontinu, et qu'il s'exerce bien sur 1 seule colonne.
Par contre, elle a été prévue pour étre utilisée sur une feuille, et non en VBA. Pour améliorer, tu peux déjà forcer le format de D dans la fonction
Code:
Function DateAddress(Plage As Range, LaDate As Date) As String
D'autre part, tu peux aussi forcer le format de ta date à la sortie de ton InputBox
Code:
Dim D As Date
D = CDate(InputBox("entrez une date"))
Pour finir, tu utilises une variable date_existe qui fait penser à du Boolean, alors que la fonction va renvoyer une adresse en String... Si tu veux savoir si la date existe dans la plage, le test sera plutôt
Code:
If DateAddress("A4:A65336", D) <> "" Then
Bon courage 😎
 
- 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
411
  • Question Question
Microsoft 365 Problème de date
Réponses
5
Affichages
358
Réponses
4
Affichages
586
Réponses
5
Affichages
914
Retour