OVH Cloud OVH Cloud

Drôle de question !

6 réponses
Avatar
garnote
Allo vous tous et toutes,

Comment faire la moyenne de tous les chiffres
apparaissant dans des cellules pouvant contenir
des lettres et/ou des chiffres, m'a-t-on demandé.
Et le plus court possibe, qui disaient, les vilains !
J'ai trouvé ça :

Sub Moyenne_Bizz()
On Error Resume Next
For Each c In Selection
For i = 1 To Len(c)
n = Mid(c, i, 1)
If IsNumeric(n) Then
k = k + 1
s = s + Val(n)
End If
Next i
Next
MsgBox "Moyenne : " & s / k
End Sub

Peut-on faire plus court ?

Serge

6 réponses

Avatar
Match
Salut garnote,
par formule il y a bien

ex:
en colonne A
1
k
7
5

3
4

=moyenne(a1:a6)
donne 4
---
espérant aider
par vba je passe

Match



"garnote" a écrit dans le message de
news:7sxrc.5941$
Allo vous tous et toutes,

Comment faire la moyenne de tous les chiffres
apparaissant dans des cellules pouvant contenir
des lettres et/ou des chiffres, m'a-t-on demandé.
Et le plus court possibe, qui disaient, les vilains !
J'ai trouvé ça :

Sub Moyenne_Bizz()
On Error Resume Next
For Each c In Selection
For i = 1 To Len(c)
n = Mid(c, i, 1)
If IsNumeric(n) Then
k = k + 1
s = s + Val(n)
End If
Next i
Next
MsgBox "Moyenne : " & s / k
End Sub

Peut-on faire plus court ?

Serge





Avatar
Pascal Engelmajer
Salut,
Sub b()
With Application
MsgBox .Sum([A1:A6]) / .Count([A1:A6])
End With
End Sub
sans vba
=SOMME(A1:A6)/NB(A1:A6)
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
http://www.ilyapa.net/baseExcel
"Match" a écrit dans le message de news:

Salut garnote,
par formule il y a bien

ex:
en colonne A
1
k
7
5

3
4

=moyenne(a1:a6)
donne 4
---
espérant aider
par vba je passe

Match



"garnote" a écrit dans le message de
news:7sxrc.5941$
Allo vous tous et toutes,

Comment faire la moyenne de tous les chiffres
apparaissant dans des cellules pouvant contenir
des lettres et/ou des chiffres, m'a-t-on demandé.
Et le plus court possibe, qui disaient, les vilains !
J'ai trouvé ça :

Sub Moyenne_Bizz()
On Error Resume Next
For Each c In Selection
For i = 1 To Len(c)
n = Mid(c, i, 1)
If IsNumeric(n) Then
k = k + 1
s = s + Val(n)
End If
Next i
Next
MsgBox "Moyenne : " & s / k
End Sub

Peut-on faire plus court ?

Serge









Avatar
garnote
Merci à vous deux mais ça ne fonctionne que
pour des cellules contenant un seul chiffre ou
une seule lettre. Mais si :

1jk3n7
kkj8nn7
ch7d
...


A+
Serge



"Pascal Engelmajer" a écrit dans le
message de news:
Salut,
Sub b()
With Application
MsgBox .Sum([A1:A6]) / .Count([A1:A6])
End With
End Sub
sans vba
=SOMME(A1:A6)/NB(A1:A6)
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
http://www.ilyapa.net/baseExcel
"Match" a écrit dans le message de news:

Salut garnote,
par formule il y a bien

ex:
en colonne A
1
k
7
5

3
4

=moyenne(a1:a6)
donne 4
---
espérant aider
par vba je passe

Match



"garnote" a écrit dans le message de
news:7sxrc.5941$
Allo vous tous et toutes,

Comment faire la moyenne de tous les chiffres
apparaissant dans des cellules pouvant contenir
des lettres et/ou des chiffres, m'a-t-on demandé.
Et le plus court possibe, qui disaient, les vilains !
J'ai trouvé ça :

Sub Moyenne_Bizz()
On Error Resume Next
For Each c In Selection
For i = 1 To Len(c)
n = Mid(c, i, 1)
If IsNumeric(n) Then
k = k + 1
s = s + Val(n)
End If
Next i
Next
MsgBox "Moyenne : " & s / k
End Sub

Peut-on faire plus court ?

Serge













Avatar
Match
Salut Serge,
pourquoi ne pas passer par une feuille intermédiaire et "convertir" pour
répartir les valeurs uniques dans des cellules différentes

Match


"garnote" a écrit dans le message de
news:rj5sc.5216$
Merci à vous deux mais ça ne fonctionne que
pour des cellules contenant un seul chiffre ou
une seule lettre. Mais si :

1jk3n7
kkj8nn7
ch7d
...


A+
Serge



"Pascal Engelmajer" a écrit dans le
message de news:
Salut,
Sub b()
With Application
MsgBox .Sum([A1:A6]) / .Count([A1:A6])
End With
End Sub
sans vba
=SOMME(A1:A6)/NB(A1:A6)
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
http://www.ilyapa.net/baseExcel
"Match" a écrit dans le message de news:

Salut garnote,
par formule il y a bien

ex:
en colonne A
1
k
7
5

3
4

=moyenne(a1:a6)
donne 4
---
espérant aider
par vba je passe

Match



"garnote" a écrit dans le message de
news:7sxrc.5941$
Allo vous tous et toutes,

Comment faire la moyenne de tous les chiffres
apparaissant dans des cellules pouvant contenir
des lettres et/ou des chiffres, m'a-t-on demandé.
Et le plus court possibe, qui disaient, les vilains !
J'ai trouvé ça :

Sub Moyenne_Bizz()
On Error Resume Next
For Each c In Selection
For i = 1 To Len(c)
n = Mid(c, i, 1)
If IsNumeric(n) Then
k = k + 1
s = s + Val(n)
End If
Next i
Next
MsgBox "Moyenne : " & s / k
End Sub

Peut-on faire plus court ?

Serge

















Avatar
Pascal Engelmajer
Salut,
1jk3n7
kkj8nn7
ch7d
que faut-il faire dans ces cas ?


--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
http://www.ilyapa.net/baseExcel
"garnote" a écrit dans le message de news:
rj5sc.5216$
Merci à vous deux mais ça ne fonctionne que
pour des cellules contenant un seul chiffre ou
une seule lettre. Mais si :

1jk3n7
kkj8nn7
ch7d
...


A+
Serge



"Pascal Engelmajer" a écrit dans le
message de news:
Salut,
Sub b()
With Application
MsgBox .Sum([A1:A6]) / .Count([A1:A6])
End With
End Sub
sans vba
=SOMME(A1:A6)/NB(A1:A6)
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
http://www.ilyapa.net/baseExcel
"Match" a écrit dans le message de news:

Salut garnote,
par formule il y a bien

ex:
en colonne A
1
k
7
5

3
4

=moyenne(a1:a6)
donne 4
---
espérant aider
par vba je passe

Match



"garnote" a écrit dans le message de
news:7sxrc.5941$
Allo vous tous et toutes,

Comment faire la moyenne de tous les chiffres
apparaissant dans des cellules pouvant contenir
des lettres et/ou des chiffres, m'a-t-on demandé.
Et le plus court possibe, qui disaient, les vilains !
J'ai trouvé ça :

Sub Moyenne_Bizz()
On Error Resume Next
For Each c In Selection
For i = 1 To Len(c)
n = Mid(c, i, 1)
If IsNumeric(n) Then
k = k + 1
s = s + Val(n)
End If
Next i
Next
MsgBox "Moyenne : " & s / k
End Sub

Peut-on faire plus court ?

Serge

















Avatar
Daniel.M
Salut Serge,

Pour une sélection continue (1 zone) de 2000 cellules (mettons 100 lignes * 20
col), le code suivant roule plus rapidement.

Sub Moyenne_Bizz2()
Dim i&, n&, k&, Tot&, S$

S = Selection.Cells.Address

For i = 0 To 9
k = Evaluate("=SUM(LEN(" & S & ")-LEN(SUBSTITUTE(" & _
S & ",""" & i & ""","""")))")
n = n + k
Tot = Tot + k * i
Next i
MsgBox "Moy:" & Tot / n
End Sub

Salutations,

Daniel M.

"garnote" wrote in message news:rj5sc.5216$
Merci à vous deux mais ça ne fonctionne que
pour des cellules contenant un seul chiffre ou
une seule lettre. Mais si :

1jk3n7
kkj8nn7
ch7d
...


A+
Serge



"Pascal Engelmajer" a écrit dans le
message de news:
Salut,
Sub b()
With Application
MsgBox .Sum([A1:A6]) / .Count([A1:A6])
End With
End Sub
sans vba
=SOMME(A1:A6)/NB(A1:A6)
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
http://www.ilyapa.net/baseExcel
"Match" a écrit dans le message de news:

Salut garnote,
par formule il y a bien

ex:
en colonne A
1
k
7
5

3
4

=moyenne(a1:a6)
donne 4
---
espérant aider
par vba je passe

Match



"garnote" a écrit dans le message de
news:7sxrc.5941$
Allo vous tous et toutes,

Comment faire la moyenne de tous les chiffres
apparaissant dans des cellules pouvant contenir
des lettres et/ou des chiffres, m'a-t-on demandé.
Et le plus court possibe, qui disaient, les vilains !
J'ai trouvé ça :

Sub Moyenne_Bizz()
On Error Resume Next
For Each c In Selection
For i = 1 To Len(c)
n = Mid(c, i, 1)
If IsNumeric(n) Then
k = k + 1
s = s + Val(n)
End If
Next i
Next
MsgBox "Moyenne : " & s / k
End Sub

Peut-on faire plus court ?

Serge