Somme d'onglets en fonction de leur noms

Résolu/Fermé
Suivitdelocation Messages postés 10 Date d'inscription lundi 18 janvier 2016 Statut Membre Dernière intervention 30 juin 2016 - 20 juin 2016 à 11:48
Suivitdelocation Messages postés 10 Date d'inscription lundi 18 janvier 2016 Statut Membre Dernière intervention 30 juin 2016 - 30 juin 2016 à 08:34
Bonjour,

Je cherche un moyen pour additionner des valeurs présentes dans différents onglets en fonction de leurs noms mais avec une condition particulière :
Je souhaiterai écrire la fonction suivante : SOMME('A1:B1'!K2)

où A1 et B1 seraient le nom des onglets et K2 la somme à calculer sur ces onglets.
Pour info, les onglets se suivront toujours.

Par exemple, sur 5 onglets, je souhaite faire la synthèse dans le premier et calculer le CA des onglets 3,4 et 5.

Ma problématique est que j'ai 120 onglets et je ne voudrait pas avoir à modifier manuellement le nom des onglets dans toutes les fonctions.

Merci d'avance pour votre aide,
Bien cordialement
A voir également:

2 réponses

thev Messages postés 1887 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 24 novembre 2024 691
21 juin 2016 à 14:04
Bonjour,

ci-dessous proposition de fonction

Function somme_onglets(index_onglet1 As Integer, index_onglet2 As Integer, cellule As Range) As Long

'initialisation
somme_onglets = 0

'contrôles
If Not index_onglet1 > 0 Or Not index_onglet1 <= Sheets.Count Then
MsgBox "index onglet 1 invalide"
Exit Function
End If
If Not index_onglet2 > 0 Or Not index_onglet2 <= Sheets.Count Then
MsgBox "index onglet 2 invalide"
Exit Function
End If
If Not index_onglet2 >= index_onglet1 Then
MsgBox "index onglet 2 non supérieur ou égal à index onglet 1"
Exit Function
End If

'calcul somme
For i = index_onglet1 To index_onglet2
somme_onglets = somme_onglets + Sheets(i).Range(cellule.Address).Value
Next

End Function
 
0
Suivitdelocation Messages postés 10 Date d'inscription lundi 18 janvier 2016 Statut Membre Dernière intervention 30 juin 2016
27 juin 2016 à 11:22
Bonjour,
Merci pour votre réponse. Je pense qu'il s'agit d'un macros ?
Du coup, quelle sera la fonction que je devrait taper dans la case pour afficher le résultat ?
Merci!
0
thev Messages postés 1887 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 24 novembre 2024 691 > Suivitdelocation Messages postés 10 Date d'inscription lundi 18 janvier 2016 Statut Membre Dernière intervention 30 juin 2016
27 juin 2016 à 12:17
Bonjour,

Cette fonction est effectivement à enregistrer en tant que module dans l'éditeur Visual Basic. Elle sera ensuite disponible comme n'importe quelle fonction standard. Il suffira de taper par rapport à votre exemple :
=somme_onglets(3;5;K2)
0
Suivitdelocation Messages postés 10 Date d'inscription lundi 18 janvier 2016 Statut Membre Dernière intervention 30 juin 2016
27 juin 2016 à 16:49
Bonjour,
C'est parfait, c'est exactement ce que je recherchais.

Merci beaucoup, ça va m'éviter de longues heures de recopies manuelles !!
0
Suivitdelocation Messages postés 10 Date d'inscription lundi 18 janvier 2016 Statut Membre Dernière intervention 30 juin 2016
27 juin 2016 à 17:10
Dernière question cependant, cela fonctionne-t-il avec la formule suivante : =somme_onglets(3;5;K2:K3) si les données sont sur des cellules fusionnées ?
Merci
0
thev Messages postés 1887 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 24 novembre 2024 691 > Suivitdelocation Messages postés 10 Date d'inscription lundi 18 janvier 2016 Statut Membre Dernière intervention 30 juin 2016
27 juin 2016 à 23:12
Cela ne marchera pas avec la fonction actuelle. Si K2 et K3 sont fusionnées, il faut juste prendre K2.
0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 240
21 juin 2016 à 15:22
Bonjour,

Nomme un onglet Debut et l'autre Fin.
=SOMME(Debut:Fin!A1)
prendra en compte tous les onglets compris entre les 2.
eric
0