OVH Cloud OVH Cloud

Comment créer ECART.MAX ?

6 réponses
Avatar
La Peche!
Comment cr=E9er une formule "ECART.MAX(nombre;liste)" qui=20
retourne la plus grande succession d'un nombre dans une=20
liste ?

Par exemple:

pour liste en A1:A13 est 0;0;1;0;3;0;0;0;0;0;0;1;0

ECART.MAX(0; A1:A13) retourne alors 6 car le nombre 0 est=20
successif =E0 lui m=EAme 6 fois au maximum.

6 réponses

Avatar
J-Dan
bonjour La Peche,

en attendant mieux, tu peux essayer cette fonction, qui
teste les écarts sur une colonne :

Function Ecart_Max(ref As Variant, plage As Range) As
Integer
If [plage].Columns.Count > 1 Then Ecart_Max = 0: Exit
Function
For i = 1 To [plage].Rows.Count
If [plage].Cells(i) = ref Then
num = num + 1
Ecart_Max = IIf(num > Ecart_Max, num, Ecart_Max)
Else
Ecart_Max = IIf(num > Ecart_Max, num, Ecart_Max)
num = 0
End If
Next
Ecart_Max = IIf(Ecart_Max = 1, 0, Ecart_Max)
End Function

est-ce que ça te convient ?

J-Dan
-----Message d'origine-----
Comment créer une formule "ECART.MAX(nombre;liste)" qui
retourne la plus grande succession d'un nombre dans une
liste ?

Par exemple:

pour liste en A1:A13 est 0;0;1;0;3;0;0;0;0;0;0;1;0

ECART.MAX(0; A1:A13) retourne alors 6 car le nombre 0
est

successif à lui même 6 fois au maximum.



.



Avatar
La Peche!
J'ai donc écrit ces lignes dans 'Visualiser le code' de ma
feuille, catégorie '(Général)' mais je n'arrive pas à
l'appeler à partir de la cellule qui doit afficher la
réponse (j'y ai écrit "ìart_Max(0;A1:a13)" et il
m'affiche "#NOM?")

C'est vrai, je débute... :-)

-----Message d'origine-----
bonjour La Peche,

en attendant mieux, tu peux essayer cette fonction, qui
teste les écarts sur une colonne :

Function Ecart_Max(ref As Variant, plage As Range) As
Integer
If [plage].Columns.Count > 1 Then Ecart_Max = 0: Exit
Function
For i = 1 To [plage].Rows.Count
If [plage].Cells(i) = ref Then
num = num + 1
Ecart_Max = IIf(num > Ecart_Max, num, Ecart_Max)
Else
Ecart_Max = IIf(num > Ecart_Max, num, Ecart_Max)
num = 0
End If
Next
Ecart_Max = IIf(Ecart_Max = 1, 0, Ecart_Max)
End Function

est-ce que ça te convient ?

J-Dan
-----Message d'origine-----
Comment créer une formule "ECART.MAX(nombre;liste)" qui
retourne la plus grande succession d'un nombre dans une
liste ?

Par exemple:

pour liste en A1:A13 est 0;0;1;0;3;0;0;0;0;0;0;1;0

ECART.MAX(0; A1:A13) retourne alors 6 car le nombre 0
est

successif à lui même 6 fois au maximum.



.

.





Avatar
michdenis
Bonjour La Peche,

Pour appeler une fonction personnalisée dans une feuille de calcul, tu dois copier le code de ta fonction obligatoirement
dans un module standard.

Salutations!



"La Peche!" a écrit dans le message de news:1eff01c48d15$3eec9c20$
J'ai donc écrit ces lignes dans 'Visualiser le code' de ma
feuille, catégorie '(Général)' mais je n'arrive pas à
l'appeler à partir de la cellule qui doit afficher la
réponse (j'y ai écrit "ìart_Max(0;A1:a13)" et il
m'affiche "#NOM?")

C'est vrai, je débute... :-)

-----Message d'origine-----
bonjour La Peche,

en attendant mieux, tu peux essayer cette fonction, qui
teste les écarts sur une colonne :

Function Ecart_Max(ref As Variant, plage As Range) As
Integer
If [plage].Columns.Count > 1 Then Ecart_Max = 0: Exit
Function
For i = 1 To [plage].Rows.Count
If [plage].Cells(i) = ref Then
num = num + 1
Ecart_Max = IIf(num > Ecart_Max, num, Ecart_Max)
Else
Ecart_Max = IIf(num > Ecart_Max, num, Ecart_Max)
num = 0
End If
Next
Ecart_Max = IIf(Ecart_Max = 1, 0, Ecart_Max)
End Function

est-ce que ça te convient ?

J-Dan
-----Message d'origine-----
Comment créer une formule "ECART.MAX(nombre;liste)" qui
retourne la plus grande succession d'un nombre dans une
liste ?

Par exemple:

pour liste en A1:A13 est 0;0;1;0;3;0;0;0;0;0;0;1;0

ECART.MAX(0; A1:A13) retourne alors 6 car le nombre 0
est

successif à lui même 6 fois au maximum.



.

.





Avatar
J-Dan
La peche,

ta fonction doit figurer dans un module "standard".
Lorsque tu te trouves dans l'éditeur VB, tu fais
Insertion->Module (pas module de classe).
Dans l'explorateur de projets (fenêtre qui se trouve sur
la gauche), tu double-cliques sur le Module1 que tu viens
d'inserer, et tu recopies le code de la fonction.

J-Dan

-----Message d'origine-----
J'ai donc écrit ces lignes dans 'Visualiser le code' de
ma

feuille, catégorie '(Général)' mais je n'arrive pas à
l'appeler à partir de la cellule qui doit afficher la
réponse (j'y ai écrit "ìart_Max(0;A1:a13)" et il
m'affiche "#NOM?")

C'est vrai, je débute... :-)

-----Message d'origine-----
bonjour La Peche,

en attendant mieux, tu peux essayer cette fonction, qui
teste les écarts sur une colonne :

Function Ecart_Max(ref As Variant, plage As Range) As
Integer
If [plage].Columns.Count > 1 Then Ecart_Max = 0: Exit
Function
For i = 1 To [plage].Rows.Count
If [plage].Cells(i) = ref Then
num = num + 1
Ecart_Max = IIf(num > Ecart_Max, num, Ecart_Max)
Else
Ecart_Max = IIf(num > Ecart_Max, num, Ecart_Max)
num = 0
End If
Next
Ecart_Max = IIf(Ecart_Max = 1, 0, Ecart_Max)
End Function

est-ce que ça te convient ?

J-Dan
-----Message d'origine-----
Comment créer une formule "ECART.MAX(nombre;liste)"
qui



retourne la plus grande succession d'un nombre dans
une



liste ?

Par exemple:

pour liste en A1:A13 est 0;0;1;0;3;0;0;0;0;0;0;1;0

ECART.MAX(0; A1:A13) retourne alors 6 car le nombre 0
est

successif à lui même 6 fois au maximum.



.

.


.






Avatar
J-Dan
La peche,

si tu testes une repetition de valeur 0 dans une plage,
il faut ajouter une condition pour éviter que plusieurs
cellules vides consécutives ne soient prises en compte :

tu remplaces
If [plage].Cells(i) = ref Then

par
If [plage].Cells(i) = ref And [plage].Cells(i) <> _
VbNullString then

J-Dan


-----Message d'origine-----
La peche,

ta fonction doit figurer dans un module "standard".
Lorsque tu te trouves dans l'éditeur VB, tu fais
Insertion->Module (pas module de classe).
Dans l'explorateur de projets (fenêtre qui se trouve sur
la gauche), tu double-cliques sur le Module1 que tu
viens

d'inserer, et tu recopies le code de la fonction.

J-Dan

-----Message d'origine-----
J'ai donc écrit ces lignes dans 'Visualiser le code' de
ma

feuille, catégorie '(Général)' mais je n'arrive pas à
l'appeler à partir de la cellule qui doit afficher la
réponse (j'y ai écrit "ìart_Max(0;A1:a13)" et il
m'affiche "#NOM?")

C'est vrai, je débute... :-)

-----Message d'origine-----
bonjour La Peche,

en attendant mieux, tu peux essayer cette fonction,
qui



teste les écarts sur une colonne :

Function Ecart_Max(ref As Variant, plage As Range) As
Integer
If [plage].Columns.Count > 1 Then Ecart_Max = 0: Exit
Function
For i = 1 To [plage].Rows.Count
If [plage].Cells(i) = ref Then
num = num + 1
Ecart_Max = IIf(num > Ecart_Max, num, Ecart_Max)
Else
Ecart_Max = IIf(num > Ecart_Max, num, Ecart_Max)
num = 0
End If
Next
Ecart_Max = IIf(Ecart_Max = 1, 0, Ecart_Max)
End Function

est-ce que ça te convient ?

J-Dan
-----Message d'origine-----
Comment créer une formule "ECART.MAX(nombre;liste)"
qui



retourne la plus grande succession d'un nombre dans
une



liste ?

Par exemple:

pour liste en A1:A13 est 0;0;1;0;3;0;0;0;0;0;0;1;0

ECART.MAX(0; A1:A13) retourne alors 6 car le nombre 0
est

successif à lui même 6 fois au maximum.



.

.


.


.







Avatar
Alain CROS
Bonjour.

Function Ecart_Max(Plage As Range, Ref)
Dim Pl As Range, i&
If [Plage].Columns.Count > 1& Then Ecart_Max = CVErr(xlErrRef): Exit Function
For Each Pl In Plage
If [Pl] = Ref And [Pl] <> "" Then
i = i + 1&
If i > Ecart_Max Then Ecart_Max = i
Else
i = 0&
End If
Next Pl
End Function

Alain CROS

"La Peche!" a écrit dans le message de news: 1da401c48d06$9e48ae20$
Comment créer une formule "ECART.MAX(nombre;liste)" qui
retourne la plus grande succession d'un nombre dans une
liste ?

Par exemple:

pour liste en A1:A13 est 0;0;1;0;3;0;0;0;0;0;0;1;0

ECART.MAX(0; A1:A13) retourne alors 6 car le nombre 0 est
successif à lui même 6 fois au maximum.