Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Propriété qui renvoie la cellule où est utilisée une fonction perso

2 réponses
Avatar
bruno
Bonsoir,
J'aimerais simplifier une fonction perso : elle fait un traitement d'une
plage de cellules (range a) mais elle prend aussi en compte dans son
traitement le résultat d'une cellule précédente : pour cela j'utilise une
autre variable (range b).
Existe-t-il une propriété qui me renvoie la cellule (ou la référence) dans
laquelle se trouve cette fonction, me permettant ainsi de faire l'économie
de la seconde variable ?

En espérant avoir été clair, je vous remercie par avance pour votre aide.

Bruno.

2 réponses

Avatar
JB
On 1 fév, 23:00, "bruno" wrote:
Bonsoir,
J'aimerais simplifier une fonction perso : elle fait un traitement d'une
plage de cellules (range a) mais elle prend aussi en compte dans son
traitement le résultat d'une cellule précédente : pour cela j'utili se une
autre variable (range b).
Existe-t-il une propriété qui me renvoie la cellule (ou la référe nce) dans
laquelle se trouve cette fonction, me permettant ainsi de faire l'écono mie
de la seconde variable ?

En espérant avoir été clair, je vous remercie par avance pour votre aide.

Bruno.


Bonjour,

Function essai()
essai = Application.Caller.Address 'donne l'adresse de la cellule
End Function

Function essai2()
essai2 = Application.Caller.Parent.Name ' 'donne le nom de l'onglet
End Function


JB

Avatar
bruno
"JB" a écrit dans le message de "bruno" :
Bonjour,

Function essai()
essai = Application.Caller.Address 'donne l'adresse de la cellule
End Function

Function essai2()
essai2 = Application.Caller.Parent.Name ' 'donne le nom de l'onglet
End Function


JB


Je te remercie, c'est exactement ce que je cherchais, voilà le résultat :

Function TriSansDoublon(Champ As Range)
'Cette fonction trie, supprime les vides et dédoublonne les entrées de la
plage
'Champ.
'La valeur qui est retournée est la première valeur de la liste traitée
'ou bien la valeur immédiatement supérieure à celle de la cellule
précédente.

Dim Cellule As Variant
Dim enr
Dim C As Variant
Dim Temp()
Dim Transf As Variant
Dim i As Integer
Dim j As Integer
Dim ordo As Boolean
Dim d

i = 0
'""""""Définir la première cellule de la sélection""""""
ReDim Temp(i)
For Each enr In Champ
Set Cellule = enr
Exit For
Next enr
'""""""FIN Définir la première cellule de la sélection""""""
'""""""" dédoublonnage""""""
For Each C In Champ
If Not IsEmpty(C) Then
If IsError(Application.Match(C, Temp, 0)) Then
ReDim Preserve Temp(i)
Temp(i) = C
i = i + 1
End If
End If
Next C
'"""""""fin dédoublonnage""""""

'"""""" Tri du tableau""""""
ordo = False
Do While ordo = False
ordo = True
For j = 0 To i - 2

If Temp(j) > Temp(j + 1) Then
Transf = Temp(j): Temp(j) = Temp(j + 1): Temp(j + 1) = Transf
ordo = False
End If
Next j
Loop
'"""""" fin tri tableau""""""

'"""""" Détermination de TriSansDoublon en fonction de la cellule
précédente""""""
j = 0

Set d = Application.Caller
If InStr(d.Offset(-1, 0).Formula, "TriSansDoublon(") Then
For j = 0 To i - 1
If Temp(j) = d.Offset(-1, 0).Value Then
j = j + 1: Exit For
End If
Next j
End If
TriSansDoublon = Temp(j)
End Function