Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Public Function TrouverDate(ColonneDate As Range, ColonneX As Range)
Dim R As Long
Application.Volatile
With Worksheets(ColonneDate.Parent.Name)
R = .Cells(65536, ColonneX.Column).End(xlUp).Row
TrouverDate = .Cells(R, ColonneDate.Column)
End With
End Function
A ) Il y a plusieurs façons d'écrire une même fonction personnalisée.
J'ai tenté d'apporter des correctifs à la tienne en conservant le plus possible le principe de base.
B ) Quand on écrit une fonction personnalisée, on passe en paramètres toutes les variables dont
la fonction aura besoin pour son exécution. En fait, la fonction doit être écrite de la façon
la plus générique possible pour s'appliquer dans un maximum de situations pour ne pas
devoir les multiplier à l'infini.
C ) Une fonction retourne essentiellement un "RÉSULTAT", elle n'est pas faite pour ajouter ou
modifier la couleur d'une plage de cellules et/ou modifier la feuille active de l'application...
Une fonction n'intervient pas au niveau de l'interface de la feuille de calcul.
Ceci étant dit, voici l'explication de la fonction :
'--------------------------------------
Public Function TrouverDate(ColonneDate As Range, ColonneX As Range)
Dim R As Long 'Déclaration de la variable
Application.Volatile 'La fonction est recalculée à chaque fois que la feuille l'est.
'On aurait pu choisir une autre approche ne nécessitant pas sa réévaluation continuelle.
'j'ai simplement voulu respecter ton approche...
'ColonneDate.Parent.Name retourne le nom de la feuille où la fonction est appelée
'En utilisant With / End With cela permet de travailler avec un objet sans devoir
'le sélectionner
With Worksheets(ColonneDate.Parent.Name)
'Trouve la dernière ligne de la colonne C qui est occupée
R = .Cells(65536, ColonneX.Column).End(xlUp).Row
'Trouve la date correspondante dans la colonne d'à côté....
TrouverDate = .Cells(R, ColonneDate.Column)
End With
End Function
'--------------------------------------
Une autre façon d'écrire la même fonction :
Dans ta cellule, tu écris : =TrouverDate(C:C)
VB:
Public Function TrouverDate(ColonneX As Range)
With Worksheets(ColonneX.Parent.Name)
R = .Cells(65536, ColonneX.Column).End(xlUp).Row
TrouverDate = .Cells(R, ColonneX.Offset(, -1).Column)
End With
End Function
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.