Propriété qui renvoie la cellule où est utilisée une fonction perso
2 réponses
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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
On 1 fév, 23:00, "bruno" <bruno.truc.ma...@free.truc.fr> 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
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
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
"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
"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