OVH Cloud OVH Cloud

Somme de cellules nommées

3 réponses
Avatar
Evita
Rebonjour aux MPFE(ttes),

J'ai créé un modèle de feuille (feuille_paye.xlt) avec des cellules nommées
(Brut, Net_Imposable, ...).
Dans un classeur, tous les mois, j'insère une nouvelle feuille_paye.xlt, que
je renomme (Jan, Fév,...).
Dans chaque feuille, le menu Insertion Nom Définir affiche des cellules
nommées AVEC une particularité, le nom de la feuille qui est inscrit sur
l'extrème droite de l'écran.

Je souhaite faire une feuille "récapitulatif" avec des cellules sommes type
=SOMME('Jan:Juil!'Brut) . Cela me renvoit une erreur type #NOM?.
En revanche
=SOMME(Jan!Brut;Fév!Brut;Mars!Brut;Avr!Brut;Mai!Brut;Juin!Brut;Juil!Brut)
renvoit une somme correcte

Je ne peux pas faire une somme 3D avec une référence précise de cellule (ex:
SOMME('Jan:Juil!'D30) car des lignes intermédiaires sont suceptibles d'avoir
été ajoutées ou supprimées ds chq feuille, d'où l'appel d'une cellule
nommée.

L'un ou l'une d'entre vous saurait-il où se trouve l'erreur, et s'il y a
une solution pour saisir les sommes, moyenne, ... des cellules Nommées 3D ?

D'avance merci +++
evit@

3 réponses

Avatar
Laurent Longre
Hello,

Dans une formule 3D, tu ne peux utiliser qu'une seule adresse de plage, donc
dans ton cas ça ne peut de toute manière pas fonctionner, la cellule "Brut"
pouvant changer d'adresse sur chaque feuille.

Tu peux essayer cette petite fonction VBA à la place :

Function MASOMME(Feuille1 As String, Feuille2 As String, Nom As String) As Double

Dim Wbk As Workbook, I As Integer
Application.Volatile
Set Wbk = Application.Caller.Worksheet.Parent
With Wbk.Sheets
For I = .Item(Feuille1).Index To .Item(Feuille2).Index
With .Item(I)
If .Type = xlWorksheet Then MASOMME = MASOMME + .Range(Nom)
End With
Next I
End With

End Function

=MASOMME("Jan";"Juil";"Brut")

Laurent

Rebonjour aux MPFE(ttes),

J'ai créé un modèle de feuille (feuille_paye.xlt) avec des cellules nommées
(Brut, Net_Imposable, ...).
Dans un classeur, tous les mois, j'insère une nouvelle feuille_paye.xlt, que
je renomme (Jan, Fév,...).
Dans chaque feuille, le menu Insertion Nom Définir affiche des cellules
nommées AVEC une particularité, le nom de la feuille qui est inscrit sur
l'extrème droite de l'écran.

Je souhaite faire une feuille "récapitulatif" avec des cellules sommes type
=SOMME('Jan:Juil!'Brut) . Cela me renvoit une erreur type #NOM?.
En revanche
=SOMME(Jan!Brut;Fév!Brut;Mars!Brut;Avr!Brut;Mai!Brut;Juin!Brut;Juil!Brut)
renvoit une somme correcte

Je ne peux pas faire une somme 3D avec une référence précise de cellule (ex:
SOMME('Jan:Juil!'D30) car des lignes intermédiaires sont suceptibles d'avoir
été ajoutées ou supprimées ds chq feuille, d'où l'appel d'une cellule
nommée.

L'un ou l'une d'entre vous saurait-il où se trouve l'erreur, et s'il y a
une solution pour saisir les sommes, moyenne, ... des cellules Nommées 3D ?

D'avance merci +++
evit@




Avatar
Evita
Merci beaucoup laurent, cela fonctionne très bien

Encore une petite question, La déclaration d'application volatile est-elle
nécessaire dans ce cas ou est-ce une "sécurité" apportée à la fonction?

Très grand merci à tous les animateurs-formateurs et intervenants de ce
forum et à ceux d'entre vous qui ont pris le temps de faire des sites et qui
les nourrissent régulièrement d'infos géniales. C'est une énorme source
d'infos, tellement conviviale.... Merci
--
Evit@


Laurent Longre" <>
Hello,

Dans une formule 3D, tu ne peux utiliser qu'une seule adresse de plage,
donc dans ton cas ça ne peut de toute manière pas fonctionner, la cellule
"Brut" pouvant changer d'adresse sur chaque feuille.

Tu peux essayer cette petite fonction VBA à la place :

Function MASOMME(Feuille1 As String, Feuille2 As String, Nom As String) As
Double

Dim Wbk As Workbook, I As Integer
Application.Volatile
Set Wbk = Application.Caller.Worksheet.Parent
With Wbk.Sheets
For I = .Item(Feuille1).Index To .Item(Feuille2).Index
With .Item(I)
If .Type = xlWorksheet Then MASOMME = MASOMME + .Range(Nom)
End With
Next I
End With

End Function

=MASOMME("Jan";"Juil";"Brut")

Laurent


Avatar
Philippe.R
Bonjour Evita,
Application.volatile permet le recalcul de la fonction lors d'un changement de données.
--
Amicales Salutations
XL 97 / 2000 / 2002

"Evita" a écrit dans le message de news:

Merci beaucoup laurent, cela fonctionne très bien

Encore une petite question, La déclaration d'application volatile est-elle nécessaire dans ce cas ou
est-ce une "sécurité" apportée à la fonction?

Très grand merci à tous les animateurs-formateurs et intervenants de ce forum et à ceux d'entre vous
qui ont pris le temps de faire des sites et qui les nourrissent régulièrement d'infos géniales. C'est
une énorme source d'infos, tellement conviviale.... Merci
--
Evit@


Laurent Longre" <>
Hello,

Dans une formule 3D, tu ne peux utiliser qu'une seule adresse de plage, donc dans ton cas ça ne peut
de toute manière pas fonctionner, la cellule "Brut" pouvant changer d'adresse sur chaque feuille.

Tu peux essayer cette petite fonction VBA à la place :

Function MASOMME(Feuille1 As String, Feuille2 As String, Nom As String) As Double

Dim Wbk As Workbook, I As Integer
Application.Volatile
Set Wbk = Application.Caller.Worksheet.Parent
With Wbk.Sheets
For I = .Item(Feuille1).Index To .Item(Feuille2).Index
With .Item(I)
If .Type = xlWorksheet Then MASOMME = MASOMME + .Range(Nom)
End With
Next I
End With

End Function

=MASOMME("Jan";"Juil";"Brut")

Laurent