Bonjour;

J'ai une function (code plus bas), qui extrait les ";" entre deux valeur dans une cellule excel.
Cette function travail a partir de plages nommées et fait la moyenne des valeurs (dans une autre colonne) en splitant les ";".
Toute fois, il faut que la/les plages nommées soit dans la colonne contenant les valeurs.
En considérant l'exemple suivant, plages nommées en colonne A et valeurs en colonne E, ne serait-il pas possible de créer un offset dans la function?
du style:
dim plage as name
for each plage in ActiveWorkBook
plage.offset(plage,4)

Voilà c'est une idée mais ça me marche pas et je suis débutant en VBA.
Si quelqu'un à une idée!

Merci par avance.


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Function MoyenneChamp(champ As Range) As Double
  Dim temp As Double, nb As Integer
  temp = 0
  nb = 0
  For Each c In champ
    If c <> Empty Then
      If IsNumeric(Left(c.Value, 1)) Then
        a = Split(c.Value, ";")
        For i = LBound(a) To UBound(a)
          temp = temp + Val(a(i))
          nb = nb + 1
        Next i
      End If
    End If
    MoyenneChamp = temp / nb
  Next c
End Function
PS: je peux joindre éventuellement un exemple pour plus de clarté.