fonction qui fait réf à la cellule sur laquelle elle se trouve
3 réponses
Bob le retour
Bonjour,
Je dois créer une fonction VBA qui calcule le nombre de fois où la
chaîne "toto" est utilisée sur la ligne sur laquelle se trouve cette
fonction. Mais impossible de trouver la commande qui correspond à la
cellule sur laquelle est la fonction.
Exemple :
en (3,3), je place ma fonction. Elle me donne le nombre de fois où on
trouve toto sur la plage (3,4)-(3,30)
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
Alain CROS
Bonjour
Function Nbtoto() Dim Base$ Application.Volatile Base = Application.Caller.Address 'Si les cellules contiennent seulement "toto" 'Nbtoto = Application.WorksheetFunction.CountIf(Range(Range(Base).Offset(, 1).Address & _ ":" & Range(Base).Offset(, 27).Address), "=toto") 'Si les cellules contiennent une phrase contenant "toto" Nbtoto = Application.WorksheetFunction.CountIf(Range(Range(Base).Offset(, 1).Address & _ ":" & Range(Base).Offset(, 27).Address), "=*toto*") End Function
Alain CROS
"Bob le retour" a écrit dans le message de news:
Bonjour, Je dois créer une fonction VBA qui calcule le nombre de fois où la chaîne "toto" est utilisée sur la ligne sur laquelle se trouve cette fonction. Mais impossible de trouver la commande qui correspond à la cellule sur laquelle est la fonction.
Exemple :
en (3,3), je place ma fonction. Elle me donne le nombre de fois où on trouve toto sur la plage (3,4)-(3,30)
Merci !
Bonjour
Function Nbtoto()
Dim Base$
Application.Volatile
Base = Application.Caller.Address
'Si les cellules contiennent seulement "toto"
'Nbtoto = Application.WorksheetFunction.CountIf(Range(Range(Base).Offset(, 1).Address & _
":" & Range(Base).Offset(, 27).Address), "=toto")
'Si les cellules contiennent une phrase contenant "toto"
Nbtoto = Application.WorksheetFunction.CountIf(Range(Range(Base).Offset(, 1).Address & _
":" & Range(Base).Offset(, 27).Address), "=*toto*")
End Function
Alain CROS
"Bob le retour" <nospam@nospam.no> a écrit dans le message de news: 40A9C47F.3F55274A@nospam.no...
Bonjour,
Je dois créer une fonction VBA qui calcule le nombre de fois où la
chaîne "toto" est utilisée sur la ligne sur laquelle se trouve cette
fonction. Mais impossible de trouver la commande qui correspond à la
cellule sur laquelle est la fonction.
Exemple :
en (3,3), je place ma fonction. Elle me donne le nombre de fois où on
trouve toto sur la plage (3,4)-(3,30)
Function Nbtoto() Dim Base$ Application.Volatile Base = Application.Caller.Address 'Si les cellules contiennent seulement "toto" 'Nbtoto = Application.WorksheetFunction.CountIf(Range(Range(Base).Offset(, 1).Address & _ ":" & Range(Base).Offset(, 27).Address), "=toto") 'Si les cellules contiennent une phrase contenant "toto" Nbtoto = Application.WorksheetFunction.CountIf(Range(Range(Base).Offset(, 1).Address & _ ":" & Range(Base).Offset(, 27).Address), "=*toto*") End Function
Alain CROS
"Bob le retour" a écrit dans le message de news:
Bonjour, Je dois créer une fonction VBA qui calcule le nombre de fois où la chaîne "toto" est utilisée sur la ligne sur laquelle se trouve cette fonction. Mais impossible de trouver la commande qui correspond à la cellule sur laquelle est la fonction.
Exemple :
en (3,3), je place ma fonction. Elle me donne le nombre de fois où on trouve toto sur la plage (3,4)-(3,30)
Merci !
michdenis
Bonjour Bob le retour,
Voici une fonction, elle a 2 limites :
A ) elle ne peut être utilisé plus d'une fois sur la même ligne
B ) Tu ne peux l'utiliser en colonne A à moins de modifier la procédure afin d'éviter les références circulaires
Texte = la chaîne de caractères que tu recherches sur la ligne Tu peux utiliser les Jokers * et ? si tu le désires. Cette fonction n'est pas sensible à la case
Dans la cellule tu l'appelles de cette façon : =Nombre("Toto")
'----------------------------- Function Nombre(Texte As String)
Application.Volatile Dim Adr As String, Rg1 As Range, Rg2 As Range Dim C As Variant, Rg3 As Range, A As Double Adr = Application.Caller.Address
If Range(Adr).Column > 1 Then C = Range(Adr).Column - 1 End If lig = Range(Adr).Row Set Rg1 = Range(Cells(lig, 1), Cells(lig, C)) Set Rg2 = Range(Cells(lig, C + 2), Cells(lig, 256))
Set Rg3 = Union(Rg1, Rg2) For Each C In Rg3 If UCase(C.Value) Like UCase(Texte) = True Then A = A + 1 End If Next
Nombre = A Set Rg1 = Nothing: Set Rg2 = Nothing: Set Rg3 = Nothing
End Function '-----------------------------
Salutations!
"Bob le retour" a écrit dans le message de news: Bonjour, Je dois créer une fonction VBA qui calcule le nombre de fois où la chaîne "toto" est utilisée sur la ligne sur laquelle se trouve cette fonction. Mais impossible de trouver la commande qui correspond à la cellule sur laquelle est la fonction.
Exemple :
en (3,3), je place ma fonction. Elle me donne le nombre de fois où on trouve toto sur la plage (3,4)-(3,30)
Merci !
Bonjour Bob le retour,
Voici une fonction, elle a 2 limites :
A ) elle ne peut être utilisé plus d'une fois sur la même ligne
B ) Tu ne peux l'utiliser en colonne A à moins de modifier la procédure afin d'éviter les références circulaires
Texte = la chaîne de caractères que tu recherches sur la ligne
Tu peux utiliser les Jokers * et ? si tu le désires.
Cette fonction n'est pas sensible à la case
Dans la cellule tu l'appelles de cette façon : =Nombre("Toto")
'-----------------------------
Function Nombre(Texte As String)
Application.Volatile
Dim Adr As String, Rg1 As Range, Rg2 As Range
Dim C As Variant, Rg3 As Range, A As Double
Adr = Application.Caller.Address
If Range(Adr).Column > 1 Then
C = Range(Adr).Column - 1
End If
lig = Range(Adr).Row
Set Rg1 = Range(Cells(lig, 1), Cells(lig, C))
Set Rg2 = Range(Cells(lig, C + 2), Cells(lig, 256))
Set Rg3 = Union(Rg1, Rg2)
For Each C In Rg3
If UCase(C.Value) Like UCase(Texte) = True Then
A = A + 1
End If
Next
Nombre = A
Set Rg1 = Nothing: Set Rg2 = Nothing: Set Rg3 = Nothing
End Function
'-----------------------------
Salutations!
"Bob le retour" <nospam@nospam.no> a écrit dans le message de news:40A9C47F.3F55274A@nospam.no...
Bonjour,
Je dois créer une fonction VBA qui calcule le nombre de fois où la
chaîne "toto" est utilisée sur la ligne sur laquelle se trouve cette
fonction. Mais impossible de trouver la commande qui correspond à la
cellule sur laquelle est la fonction.
Exemple :
en (3,3), je place ma fonction. Elle me donne le nombre de fois où on
trouve toto sur la plage (3,4)-(3,30)
A ) elle ne peut être utilisé plus d'une fois sur la même ligne
B ) Tu ne peux l'utiliser en colonne A à moins de modifier la procédure afin d'éviter les références circulaires
Texte = la chaîne de caractères que tu recherches sur la ligne Tu peux utiliser les Jokers * et ? si tu le désires. Cette fonction n'est pas sensible à la case
Dans la cellule tu l'appelles de cette façon : =Nombre("Toto")
'----------------------------- Function Nombre(Texte As String)
Application.Volatile Dim Adr As String, Rg1 As Range, Rg2 As Range Dim C As Variant, Rg3 As Range, A As Double Adr = Application.Caller.Address
If Range(Adr).Column > 1 Then C = Range(Adr).Column - 1 End If lig = Range(Adr).Row Set Rg1 = Range(Cells(lig, 1), Cells(lig, C)) Set Rg2 = Range(Cells(lig, C + 2), Cells(lig, 256))
Set Rg3 = Union(Rg1, Rg2) For Each C In Rg3 If UCase(C.Value) Like UCase(Texte) = True Then A = A + 1 End If Next
Nombre = A Set Rg1 = Nothing: Set Rg2 = Nothing: Set Rg3 = Nothing
End Function '-----------------------------
Salutations!
"Bob le retour" a écrit dans le message de news: Bonjour, Je dois créer une fonction VBA qui calcule le nombre de fois où la chaîne "toto" est utilisée sur la ligne sur laquelle se trouve cette fonction. Mais impossible de trouver la commande qui correspond à la cellule sur laquelle est la fonction.
Exemple :
en (3,3), je place ma fonction. Elle me donne le nombre de fois où on trouve toto sur la plage (3,4)-(3,30)
Merci !
Daniel.M
Hello Bob,
Je crois que les Noms relatifs sont la solution qui te convient.
Tu te places sur C3 Ctrl-F3 Nom: ADroite Ref à : ÞCALER(C3;0;1;1;27) OK
Note l'absence de $ dans l'adresse C3.
Désormais, à toutes les fois où tu utilises le nom ADroite, cela te donnera la plage de 27 cellules à droite de celle dans laquelle tu invoques le nom.
Ensuite, en C3 la formule: =NB.SI(ADroite;"toto")
Salutations,
Daniel M.
"Bob le retour" wrote in message news:
Bonjour, Je dois créer une fonction VBA qui calcule le nombre de fois où la chaîne "toto" est utilisée sur la ligne sur laquelle se trouve cette fonction. Mais impossible de trouver la commande qui correspond à la cellule sur laquelle est la fonction.
Exemple :
en (3,3), je place ma fonction. Elle me donne le nombre de fois où on trouve toto sur la plage (3,4)-(3,30)
Merci !
Hello Bob,
Je crois que les Noms relatifs sont la solution qui te convient.
Tu te places sur C3
Ctrl-F3
Nom: ADroite
Ref à : ÞCALER(C3;0;1;1;27)
OK
Note l'absence de $ dans l'adresse C3.
Désormais, à toutes les fois où tu utilises le nom ADroite, cela te donnera la
plage de 27 cellules à droite de celle dans laquelle tu invoques le nom.
Ensuite, en C3 la formule:
=NB.SI(ADroite;"toto")
Salutations,
Daniel M.
"Bob le retour" <nospam@nospam.no> wrote in message
news:40A9C47F.3F55274A@nospam.no...
Bonjour,
Je dois créer une fonction VBA qui calcule le nombre de fois où la
chaîne "toto" est utilisée sur la ligne sur laquelle se trouve cette
fonction. Mais impossible de trouver la commande qui correspond à la
cellule sur laquelle est la fonction.
Exemple :
en (3,3), je place ma fonction. Elle me donne le nombre de fois où on
trouve toto sur la plage (3,4)-(3,30)
Je crois que les Noms relatifs sont la solution qui te convient.
Tu te places sur C3 Ctrl-F3 Nom: ADroite Ref à : ÞCALER(C3;0;1;1;27) OK
Note l'absence de $ dans l'adresse C3.
Désormais, à toutes les fois où tu utilises le nom ADroite, cela te donnera la plage de 27 cellules à droite de celle dans laquelle tu invoques le nom.
Ensuite, en C3 la formule: =NB.SI(ADroite;"toto")
Salutations,
Daniel M.
"Bob le retour" wrote in message news:
Bonjour, Je dois créer une fonction VBA qui calcule le nombre de fois où la chaîne "toto" est utilisée sur la ligne sur laquelle se trouve cette fonction. Mais impossible de trouver la commande qui correspond à la cellule sur laquelle est la fonction.
Exemple :
en (3,3), je place ma fonction. Elle me donne le nombre de fois où on trouve toto sur la plage (3,4)-(3,30)