[Excel]Prendre en compte plusieurs feuilles..
Résolu/Fermé
spass_pa
Messages postés
17
Date d'inscription
mercredi 8 août 2007
Statut
Membre
Dernière intervention
20 août 2007
-
9 août 2007 à 10:00
Sir_DEC Messages postés 143 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 12 mai 2012 - 9 août 2007 à 18:54
Sir_DEC Messages postés 143 Date d'inscription mardi 17 avril 2007 Statut Membre Dernière intervention 12 mai 2012 - 9 août 2007 à 18:54
A voir également:
- [Excel]Prendre en compte plusieurs feuilles..
- Liste déroulante excel - Guide
- Supprimer compte instagram - Guide
- Compte facebook piraté - Guide
- Créer un compte gmail - Guide
- Créer un compte google - Guide
9 réponses
Sir_DEC
Messages postés
143
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
12 mai 2012
75
9 août 2007 à 11:44
9 août 2007 à 11:44
Bonjour,
Une solution peut être, en Feuil1, de faire le total sur... 50 feuilles par exemple, sans se demander si elles existent.
Je m'explique, on va dire que chacune des feuilles créé se nommera de la sorte NOMx (ou x est un nombre) et que le sous-total sera en A1 (c'est un exemple).
Dans la feuille de total il suffit d'entrer, sur les 50 première cases de la colonne A :
Ceci donne le sous-total de la feuille ayant le numéro de la ligne en cours. Si la feuille n'existe pas, le résultat est "#REF!" mais il suffit de revalider à la création de la feuille.
Ensuite, dans une case voulu on fait la somme de ces valeurs, en évitant les #REF! par une condition :
J'ai testé en faisant une somme sur 15 feuilles dont seulement 8 créées.
Une solution peut être, en Feuil1, de faire le total sur... 50 feuilles par exemple, sans se demander si elles existent.
Je m'explique, on va dire que chacune des feuilles créé se nommera de la sorte NOMx (ou x est un nombre) et que le sous-total sera en A1 (c'est un exemple).
Dans la feuille de total il suffit d'entrer, sur les 50 première cases de la colonne A :
=INDIRECT("NON" & LIGNE() & "!A1")
Ceci donne le sous-total de la feuille ayant le numéro de la ligne en cours. Si la feuille n'existe pas, le résultat est "#REF!" mais il suffit de revalider à la création de la feuille.
Ensuite, dans une case voulu on fait la somme de ces valeurs, en évitant les #REF! par une condition :
=SOMME.SI(A:A;">0")
J'ai testé en faisant une somme sur 15 feuilles dont seulement 8 créées.
spass_pa
Messages postés
17
Date d'inscription
mercredi 8 août 2007
Statut
Membre
Dernière intervention
20 août 2007
9 août 2007 à 11:46
9 août 2007 à 11:46
Merci pr ta réponse
je vais tester immédiatement et je te tiens au courant.
++
je vais tester immédiatement et je te tiens au courant.
++
spass_pa
Messages postés
17
Date d'inscription
mercredi 8 août 2007
Statut
Membre
Dernière intervention
20 août 2007
9 août 2007 à 12:04
9 août 2007 à 12:04
RE
je suis entrain d'essayer mais je comprends pas trop comment tu fais en fait. Je ne suis pas un pro d'excel alors je mouline un peu.
est-il possible d'affiner tes explications ou bien de m'envoyer ton fichier test pour que je vois exactement comment tu as fait?
merci d'avance
je suis entrain d'essayer mais je comprends pas trop comment tu fais en fait. Je ne suis pas un pro d'excel alors je mouline un peu.
est-il possible d'affiner tes explications ou bien de m'envoyer ton fichier test pour que je vois exactement comment tu as fait?
merci d'avance
Sir_DEC
Messages postés
143
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
12 mai 2012
75
9 août 2007 à 13:30
9 août 2007 à 13:30
Je m'explique :
La fonction INDIRECT(x) sert à interpréter "x" au lieu de l'afficher simplement.
Ici "x" est une concaténation de chaine (plusieurs morceaux mis bout à bout).
On a d'abord "NOM" qui est le nom de la feuille, sans son numéro.
Ensuite LIGNE() qui renvoit le numéro de ligne de la case et sert pour mettre un numéro à la feuille.
Puis "!A1" qui est la case sur la feuille (le "!" liant la feuille à la case).
Ce qui donne en fait "NOMx!A1" et renvoit donc la valeur de la feuille "NOMx" sur la case "A1".
Ensuite la fonction SOMME.SI se contente de faire la somme de toutes les valeurs numériques positives.
La fonction INDIRECT(x) sert à interpréter "x" au lieu de l'afficher simplement.
Ici "x" est une concaténation de chaine (plusieurs morceaux mis bout à bout).
On a d'abord "NOM" qui est le nom de la feuille, sans son numéro.
Ensuite LIGNE() qui renvoit le numéro de ligne de la case et sert pour mettre un numéro à la feuille.
Puis "!A1" qui est la case sur la feuille (le "!" liant la feuille à la case).
Ce qui donne en fait "NOMx!A1" et renvoit donc la valeur de la feuille "NOMx" sur la case "A1".
Ensuite la fonction SOMME.SI se contente de faire la somme de toutes les valeurs numériques positives.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
spass_pa
Messages postés
17
Date d'inscription
mercredi 8 août 2007
Statut
Membre
Dernière intervention
20 août 2007
9 août 2007 à 14:18
9 août 2007 à 14:18
ok j'avais compris à peu pres
mais avec ta méthode faut faire 50 ligne pour les 50 feuilles présente. et seulement apres les additionner en excluant les valeurs abérantes.
je voulais savoir si il est possible de faire directement la somme comme ca :
=SOMME(Feuil1:Feuil5!B3)
car c'est les cases B3 que je veux sommer, mais mettre à la place de "feuil5" un truc comme "feuil n", en gros aller jusqu'à la dernière feuille.
je pense qu'il y a peu etre moyen de faire ceci en incluant une macro qui compte le nombre de feuille ou bien annonce le nom de la dernière feuille présente...
penses tu que ce serais possible?
mais avec ta méthode faut faire 50 ligne pour les 50 feuilles présente. et seulement apres les additionner en excluant les valeurs abérantes.
je voulais savoir si il est possible de faire directement la somme comme ca :
=SOMME(Feuil1:Feuil5!B3)
car c'est les cases B3 que je veux sommer, mais mettre à la place de "feuil5" un truc comme "feuil n", en gros aller jusqu'à la dernière feuille.
je pense qu'il y a peu etre moyen de faire ceci en incluant une macro qui compte le nombre de feuille ou bien annonce le nom de la dernière feuille présente...
penses tu que ce serais possible?
Sir_DEC
Messages postés
143
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
12 mai 2012
75
9 août 2007 à 14:49
9 août 2007 à 14:49
Oui tu peux faire ça par macro bien sûr.
A ce moment tu mets un bouton sur la feuille de somme.
Avec :
- nom_feuil_somme : Le nom de la feuille sur laquelle tu affiches cette somme (avec le bouton) ;
- case_somme : Le nom de la case dans laquelle tu mets la somme (exemple : "A1").
Places ta feuille pour la somme en dernier, dans ce cas la la boucle est :
Ou places ta feuille pour la somme en premier, dans ce cas la la boucle est :
De toute manière, s'il n'y a rien en B3 sur cette feuille, ça ajoutera 0 :)
Voilà en macro !
A ce moment tu mets un bouton sur la feuille de somme.
Private Sub nom_bouton_Click() Dim somme As Variant Dim i As Integer somme = 0 For i = 1 To ThisWorkbook.Worksheets.Count somme = somme + Worksheets(i).Range("B3") Next Range(case_somme) = somme End Sub
Avec :
- nom_feuil_somme : Le nom de la feuille sur laquelle tu affiches cette somme (avec le bouton) ;
- case_somme : Le nom de la case dans laquelle tu mets la somme (exemple : "A1").
Places ta feuille pour la somme en dernier, dans ce cas la la boucle est :
For i = 1 To ThisWorkbook.Worksheets.Count-1
Ou places ta feuille pour la somme en premier, dans ce cas la la boucle est :
For i = 2 To ThisWorkbook.Worksheets.Count
De toute manière, s'il n'y a rien en B3 sur cette feuille, ça ajoutera 0 :)
Voilà en macro !
spass_pa
Messages postés
17
Date d'inscription
mercredi 8 août 2007
Statut
Membre
Dernière intervention
20 août 2007
9 août 2007 à 14:53
9 août 2007 à 14:53
Wawww tu t'y connais bien.
je te remercie beaucoup pr tes explications.
je testerais ca en fin d'aprem car je suis sur un autre projet en ce moment.
merci
je te remercie beaucoup pr tes explications.
je testerais ca en fin d'aprem car je suis sur un autre projet en ce moment.
merci
spass_pa
Messages postés
17
Date d'inscription
mercredi 8 août 2007
Statut
Membre
Dernière intervention
20 août 2007
9 août 2007 à 17:17
9 août 2007 à 17:17
ca marche nickel
thx
thx
Sir_DEC
Messages postés
143
Date d'inscription
mardi 17 avril 2007
Statut
Membre
Dernière intervention
12 mai 2012
75
9 août 2007 à 18:54
9 août 2007 à 18:54
Je bosse sous VBA depuis plusieurs mois.
N'oublies pas de noter "Problème Résolu" ;)
N'oublies pas de noter "Problème Résolu" ;)