Bonsoir, oui mais le but était d'éviter ce type de solution. J'ai regardé le site de J.Boisgontier et il y a des formules approchantes. Je me demandais si on pouvait le faire par VBA.Bonsoir ALE37, CISCO,
Bah il suffit de remplacer =SOMME('OUEST:SUD OUEST'!C11)
par =OUEST!C11+'CENTRE OUEST'!C11+'SUD OUEST'!C11
A+
Bonjour Cisco, c’est une piste. Je connais Le principe des boucles mais je n’en ai jamais fait. C’est l’occasion d’apprendre!
Bonjour Job, merci pour l’info. J’ai vu autrefois une video Tuto en Anglais sur l’utilisation de SUM et qui repondait à la question. On pouvait déplacer les onglets sans difficultés et conserver le calcul. Je n’ai pas réussi à l’adapter. Il devait manquer un argument.La solution =SOMME('OUEST:SUD OUEST'!C11) ne fonctionne que sur des feuilles qui se suivent, il n'y a vraiment rien d'autre à comprendre.
En VBA on peut faire une boucle sur les feuilles dont le nom se termine par "OUEST".
Function Sommevba() As Double
Application.Volatile
Dim a, adr As String, i As Integer, v As Variant
a = Array("ARBPL", "ARATLA") 'liste des feuilles a traiter, à adapter
adr = Application.Caller.Address
For i = 0 To UBound(a)
v = Sheets(a(i)).Range(adr)
If IsNumeric(v) Then Sommevba = Sommevba + v
Next
End Function
Bonsoir Job75, merci pour le fichier. ça marche nickel! C'est trés pratique dans le cas des consos d'onglets. Est il possible de sélectionner une plage de cellule et de lui donner l'indication de faire la somme pour la plage en question ?Voyez le fichier joint et cette fonction VBA :
Elle est volatile pour qu'elle se recalcule quand une cellule source est modifiée.VB:Function Sommevba() As Double Application.Volatile Dim a, adr As String, i As Integer, v As Variant a = Array("ARBPL", "ARATLA") 'liste des feuilles a traiter, à adapter adr = Application.Caller.Address For i = 0 To UBound(a) v = Sheets(a(i)).Range(adr) If IsNumeric(v) Then Sommevba = Sommevba + v Next End Function
Le code doit être placé impérativement dans un module standard, formule en G11 =Sommevba()
Function Sommevba(reference As String) As Double
Application.Volatile
Dim a, i As Integer
a = Array("ARBPL", "ARATLA") 'liste des feuilles a traiter, à adapter
For i = 0 To UBound(a)
Sommevba = Application.Sum(Sommevba, Sheets(a(i)).Range(reference))
Next
End Function