VBA - Somme d'une cellule (ou plage) nommée sur plusieurs feuilles

Ludo_R

XLDnaute Nouveau
Bonjour,

J'essai désespérément de coder ce qui est ci-dessous:

Faire le somme d'une cellule nommée (PU) de toutes les feuilles d'un classeur.
et la même chose avec une plage nommée (MAT) qui aura un nombre de cellule variable (mais je ne pense pas que ce détail ai une importance)

info:
1/Il peut y avoir plus d'une centaine de feuilles
2/Il peut y avoir des feuilles qui ne possède pas cette cellule (ou plage) nommée

Habituellement je fais cela avec un tas de formules, mais le fichier devient lourd et ça rame dés que je valide une cellule.

Merci de votre aide.
Ludo.
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : VBA - Somme d'une cellule (ou plage) nommée sur plusieurs feuilles

Bonjour Ludo_R,

Un essai dans le fichier joint avec une fonction personnalisée. La feuille Recap se met à jour quand elle est activée.

Code dans module1:
VB:
Function SomPlage(NomPlage) As Double
Dim Aux As Double, sh As Worksheet
  SomPlage = 0
  On Error Resume Next
  For Each sh In Worksheets
    If sh.Name <> "Recap" Then
      Aux = 0
      Aux = Application.WorksheetFunction.Sum _
            (sh.Names(NomPlage).RefersToRange)
      SomPlage = SomPlage + Aux
    End If
  Next sh
End Function

Code dans module de code de la feuille "Recap":
VB:
Private Sub Worksheet_Activate()
Dim Status
  Status = Application.Calculation
  Application.Calculation = xlCalculationManual
  Sheets("Recap").UsedRange.Calculate
  Application.Calculation = Status
End Sub
 

Pièces jointes

  • Somme plage nommée sur plusieurs feuilles v1.xlsm
    27.9 KB · Affichages: 145

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : VBA - Somme d'une cellule (ou plage) nommée sur plusieurs feuilles

Bonjour Ludo_R,

Un essai dans le fichier joint avec une fonction personnalisée. La feuille Recap se met à jour quand elle est activée.

Code dans module1:
VB:
Function SomPlage(NomPlage) As Double
Dim Aux As Double, sh As Worksheet
  SomPlage = 0
  On Error Resume Next
  For Each sh In Worksheets
    If sh.Name <> "Recap" Then
      Aux = 0
      Aux = Application.WorksheetFunction.Sum _
            (sh.Names(NomPlage).RefersToRange)
      SomPlage = SomPlage + Aux
    End If
  Next sh
End Function

Code dans module de code de la feuille "Recap":
VB:
Private Sub Worksheet_Activate()
Dim Status
  Status = Application.Calculation
  Application.Calculation = xlCalculationManual
  Sheets("Recap").UsedRange.Calculate
  Application.Calculation = Status
End Sub

nb: un fichier joint à la question eût été sympa :rolleyes:
 

Ludo_R

XLDnaute Nouveau
Re : VBA - Somme d'une cellule (ou plage) nommée sur plusieurs feuilles

nb: un fichier joint à la question eût été sympa :rolleyes:
ça ne me semblais pas utile :rolleyes:, et pour preuve tu m'as parfaitement compris:D.
Alors tout fonctionne, et je t'en remercie, mais je souhaite passer par une macro pour éviter que les formules se mettent à jour automatiquement, est-ce que ta solution va réellement résoudre mon PB?
Explications:
Les cellules et plages changes souvent, par conséquent les résultats de ta fonctions changent constamment, et à chaque fois que je valide une valeur dans une cellule ça rame (avec + de 100 feuilles).
d'autres idées ? je vais mettre cela en application courant de semaine prochaine.
 

Ludo_R

XLDnaute Nouveau
Re : VBA - Somme d'une cellule (ou plage) nommée sur plusieurs feuilles

ça ne me semblais pas utile :rolleyes:, et pour preuve tu m'as parfaitement compris:D.
Alors tout fonctionne, et je t'en remercie, mais je souhaite passer par une macro pour éviter que les formules se mettent à jour automatiquement, est-ce que ta solution va réellement résoudre mon PB?
Explications:
Les cellules et plages changes souvent, par conséquent les résultats de ta fonctions changent constamment, et à chaque fois que je valide une valeur dans une cellule ça rame (avec + de 100 feuilles).
d'autres idées ? je vais mettre cela en application courant de semaine prochaine.

J'ai dis des bêtises:
Code:
Private Sub Worksheet_Activate()
ça fera le calcul uniquement lorsqu'on va sur l'onglet RECAP

Merci.
 

Discussions similaires

Statistiques des forums

Discussions
312 502
Messages
2 089 036
Membres
104 010
dernier inscrit
Freba