[VBA] Fonction personnelle... savoir l'emplacement de la cellule où se trouve un appel de cette fonction
Le
HD

Bonjour,
Je viens de créer des fonctions personnelles. Je fais appelles à ces
fonctions dans les cellules et celà fonctionne maintenant bien.
Par contre, en cas d'erreur de saisie d'un des arguments, je voudrais
pouvoir afficher l'emplacement de la cellule qui fait appel à la
fonction personnelle.
Exemple:
En cellule J542 j'ai une formule personnelle:
=Quantité(45;89)
Je voudrais pouvoir avoir l'info de l'emplacement de la cellule qui fait
appel à la fonction Quantité dans ma fonction donc colonne 10, ligne
542.
Comment faire ?
Cordialement,
HD
Je viens de créer des fonctions personnelles. Je fais appelles à ces
fonctions dans les cellules et celà fonctionne maintenant bien.
Par contre, en cas d'erreur de saisie d'un des arguments, je voudrais
pouvoir afficher l'emplacement de la cellule qui fait appel à la
fonction personnelle.
Exemple:
En cellule J542 j'ai une formule personnelle:
=Quantité(45;89)
Je voudrais pouvoir avoir l'info de l'emplacement de la cellule qui fait
appel à la fonction Quantité dans ma fonction donc colonne 10, ligne
542.
Comment faire ?
Cordialement,
HD
Peux-tu nous donner ta fonction personnelle?
MsgBox Cells.Find(What:="=Quantité(", After:¬tiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, MatchCase:úlse).Address
isabelle
Le 2014-06-26 06:16, HD a écrit :
Voici un exemple :
Function Quantité(t as double, s as double) as Double
dim ret as long
if t > 100 then
ret=MsgBox("Valeur t dépasse la valeur autorisée en cellule " &
mescoordonnéesdecellules & ".",VbExclamation,"")
else
mon_traitement
end if
End function
Je voudrais pouvoir faire afficher les coordonnées de la cellules où
l'on a tapé la formule =Quantité(121;3)
Ainsi, si une erreur a été faite sur la cellule R1230 l'utilisateur
saura qu'il lui faut modifier sa formule à cet endroit précis.
@+
HD
la variable X représente l'adresse de la cellule où la fonction est traitée.
Comment veux-tu afficher cette information dans ton fichier?
X = Application.Caller.Address
Tu pourrais adapter ta fonction comme ceci :
'----------------------------------------
Function Quantité(t As Double, s As Double) As Double
Dim GestionErreur As String
On Error GoTo GestionErreur
Dim ret As Long
X = Application.Caller.Address
If t > 100 Then
ret = MsgBox("Valeur t dépasse la valeur autorisée en cellule " & _
mescoordonnéesdecellules & ".", vbExclamation, "")
Else
Quantité = t * s 'ou autre code...
End If
Exit Function
GestionErreur:
MsgBox "Un problème avec la formule de cette cellule : " & X
End Function
'----------------------------------------