Somme d'onglets en fonction de leur noms

Résolu
Suivitdelocation Messages postés 10 Statut Membre -  
Suivitdelocation Messages postés 10 Statut Membre -
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

2 réponses

  1. thev Messages postés 2006 Date d'inscription   Statut Membre Dernière intervention   721
     
    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
    1. Suivitdelocation Messages postés 10 Statut Membre
       
      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
    2. thev Messages postés 2006 Date d'inscription   Statut Membre Dernière intervention   721 > Suivitdelocation Messages postés 10 Statut Membre
       
      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
    3. Suivitdelocation Messages postés 10 Statut Membre
       
      Bonjour,
      C'est parfait, c'est exactement ce que je recherchais.

      Merci beaucoup, ça va m'éviter de longues heures de recopies manuelles !!
      0
    4. Suivitdelocation Messages postés 10 Statut Membre
       
      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
    5. thev Messages postés 2006 Date d'inscription   Statut Membre Dernière intervention   721 > Suivitdelocation Messages postés 10 Statut Membre
       
      Cela ne marchera pas avec la fonction actuelle. Si K2 et K3 sont fusionnées, il faut juste prendre K2.
      0
  2. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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