Aide sur VBA: indexer des onglets sur Excel?
Fermé
moseca
-
30 déc. 2011 à 01:47
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 31 déc. 2011 à 11:09
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 31 déc. 2011 à 11:09
Bonjour,
J'ai une question sur Excel,VBA. Merci de m'aider svp.
Je dois insérer dans un classeur Excel (déjà ouvert) des onglets (feuilles) se trouvant dans un répertoire (dossier). Le nombre de feuilles à insérer varie (de 1 à 10 environ). Quand j'active ma macro d'insertion, toutes les feuilles inserées se trouvent côte à côte de la gauche vers la droite, avant le premier onglet qui se trouvait dans le fichier.
Mon problème c'est que je dois effectuer un petit calcul : additionner des cellules de chaque feuille insérer. Comment ca marche? Y a t-il un code qui permet de définir le nombre de feuille insérées et d'effectuer une addition entres des cellules de ces feuilles insérer (je ne veux pas toucher les feuilles qui étaient déjà là). <gras>Exemple : si j'ai inséré 5 feuilles dans mon classeur, comment faire pour additionner : A1 + A2+A3+A4+A5, les cellules Ai étant uniquement cellules des feuilles insérées.Merci beaucoup de m'aider cher (e) expert (e)!!!</gras>
J'ai une question sur Excel,VBA. Merci de m'aider svp.
Je dois insérer dans un classeur Excel (déjà ouvert) des onglets (feuilles) se trouvant dans un répertoire (dossier). Le nombre de feuilles à insérer varie (de 1 à 10 environ). Quand j'active ma macro d'insertion, toutes les feuilles inserées se trouvent côte à côte de la gauche vers la droite, avant le premier onglet qui se trouvait dans le fichier.
Mon problème c'est que je dois effectuer un petit calcul : additionner des cellules de chaque feuille insérer. Comment ca marche? Y a t-il un code qui permet de définir le nombre de feuille insérées et d'effectuer une addition entres des cellules de ces feuilles insérer (je ne veux pas toucher les feuilles qui étaient déjà là). <gras>Exemple : si j'ai inséré 5 feuilles dans mon classeur, comment faire pour additionner : A1 + A2+A3+A4+A5, les cellules Ai étant uniquement cellules des feuilles insérées.Merci beaucoup de m'aider cher (e) expert (e)!!!</gras>
A voir également:
- Aide sur VBA: indexer des onglets sur Excel?
- Excel compter cellule couleur sans vba - Guide
- Mkdir vba ✓ - Forum VB / VBA
- L'indice n'appartient pas à la sélection vba ✓ - Forum Programmation
- Autofill vba ✓ - Forum Excel
- Vba range avec variable ✓ - Forum VB / VBA
5 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 757
30 déc. 2011 à 08:49
30 déc. 2011 à 08:49
Bonjour,
Il faudrait déjà, pour commencer, nous communiquer le code de ta macro d'insertion.
Il faudrait déjà, pour commencer, nous communiquer le code de ta macro d'insertion.
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 257
Modifié par eriiic le 30/12/2011 à 10:33
Modifié par eriiic le 30/12/2011 à 10:33
Bonjour,
Si tes feuilles insérées s'appellent Feuil1 à Feuil5 et qu'elles sont toujours consécutives (tu ne les a pas déplacées) alors :
Quand au nombre de feuilles insérées tu es sensé le connaitre...
eric
Si tes feuilles insérées s'appellent Feuil1 à Feuil5 et qu'elles sont toujours consécutives (tu ne les a pas déplacées) alors :
total = Evaluate("Sum('Feuil1:Feuil5'!A1:A5)")(il faut mettre le nom de la 1ère et de la dernière feuille, pas besoin qu'elles aient un n° dans le nom)
Quand au nombre de feuilles insérées tu es sensé le connaitre...
eric
En faite le nombre de feuille à insérer varie car ce sont des fichiers contenant des données et chaque ca varie en fonction du projet; on peut avoir 2, 3 ,4 ou plus.. c'est ça la difficulté. Je les ai renommé par macro par des numéros car je dois exporter ensuite un CSV vers un logiciel qui ne prend que des numéros. Donc quand j'insère un fichier je le renomme par un numéro qui correpsondant. Merci
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 257
30 déc. 2011 à 19:04
30 déc. 2011 à 19:04
Je répète :
il faut mettre le nom de la 1ère et de la dernière feuille, pas besoin qu'elles aient un n° dans le nom
total = Evaluate("Sum('Feuil1:Feuil5'!A1:A5)") te fera la somme de la 1ère à la dernière feuille...
Essaie d'abord, tu discuteras ensuite...
eric
il faut mettre le nom de la 1ère et de la dernière feuille, pas besoin qu'elles aient un n° dans le nom
total = Evaluate("Sum('Feuil1:Feuil5'!A1:A5)") te fera la somme de la 1ère à la dernière feuille...
Essaie d'abord, tu discuteras ensuite...
eric
Merci Eric cette formule marche , mais est ce que je peux donner le nom de la dernier feuille que je connais (elle se trouve déjà dans le fichier, elle s'appelle PM). ceci pour m'assurer que j'ai pris toutes les feuilles.
Mais au lieu de cellules, je veux additionner des plages, 3 plages de chaque feuille aux autres , exemple : total = première feuille Range ("A1:A5")+Range("A10:A20")+range("A30:A50")) + 2eme feuille (Range ("A1:A5")+Range("A10:A20")+range("A30:A50")) + 3e feuille Range ("A1:A5")+Range("A10:A20")+range("A30:A50")) etc..
comment le faire stp. merci!
Mais au lieu de cellules, je veux additionner des plages, 3 plages de chaque feuille aux autres , exemple : total = première feuille Range ("A1:A5")+Range("A10:A20")+range("A30:A50")) + 2eme feuille (Range ("A1:A5")+Range("A10:A20")+range("A30:A50")) + 3e feuille Range ("A1:A5")+Range("A10:A20")+range("A30:A50")) etc..
comment le faire stp. merci!
Salut Éric merci pour ta réponse, mais le problème c'est que je ne connais pas le nombre de feuilles à insérer, ca varie. Mais ces feuilles insérées seront toujours placées avant une feuille qui s'appelle bienvenue. Y aurait til un moyen de dire par VBA: prendre les feuilles qui se trouve avant Binevenue et faire le calcul. De plus, leurs noms c'est des chiffre (1 à 10). Peut-ête les appeler Sheets (i) avec i le nombre...je ne sais pas. Merci de m'aider si tu as 'autres idée!
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 257
30 déc. 2011 à 21:40
30 déc. 2011 à 21:40
Re,
Même principe, il faut séparer les plages par des ;
Si la 1ère feuille à prendre en compte s'appelle 'Début' et la dernière 'PM' alors :
total = Evaluate("SUM('Début:PM'!A1:A5;'Début:PM'!A10:A20;'Début:PM'!A30:A50)")
Les ' qui encadrent les noms des feuilles sont impératifs si tes noms d'onglet comporte un espace.
eric
Même principe, il faut séparer les plages par des ;
Si la 1ère feuille à prendre en compte s'appelle 'Début' et la dernière 'PM' alors :
total = Evaluate("SUM('Début:PM'!A1:A5;'Début:PM'!A10:A20;'Début:PM'!A30:A50)")
Les ' qui encadrent les noms des feuilles sont impératifs si tes noms d'onglet comporte un espace.
eric
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 257
31 déc. 2011 à 09:07
31 déc. 2011 à 09:07
Heu oui, j'ai fait une erreur.
En vba il faut remplacer le séparateur par une , (et non le ;)
désolé
eric
En vba il faut remplacer le séparateur par une , (et non le ;)
désolé
eric
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
31 déc. 2011 à 10:31
31 déc. 2011 à 10:31
Bonjour,
Bonjour Eric,
Il me semble que ta formule reprend également la feuille Debut et PM ?
Par contre, je lit..
Je les ai renommé par macro par des numéros car je dois exporter ensuite un CSV vers un logiciel qui ne prend que des numéros. Donc quand j'insère un fichier je le renomme par un numéro qui correpsondant.
Donc, là tu sais combien de feuilles renommer !!
Pourquoi ne pas intercaller le calcul dans cette macro ?
par exemple...
Et si ce n'est pas possible comme cela, mettre dans cette macro une variable public qui saurait le nombre de feuille insérées, comme ça, il y aurait moyen d'adapter la formule d'Eric
A+
Bonjour Eric,
Il me semble que ta formule reprend également la feuille Debut et PM ?
Par contre, je lit..
Je les ai renommé par macro par des numéros car je dois exporter ensuite un CSV vers un logiciel qui ne prend que des numéros. Donc quand j'insère un fichier je le renomme par un numéro qui correpsondant.
Donc, là tu sais combien de feuilles renommer !!
Pourquoi ne pas intercaller le calcul dans cette macro ?
par exemple...
'Si besoin du total ailleur mettre en tête du module en public Dim Total As Double For XX = 1 to ... le nombre de feuille à renommer. 'Renommer la feuille en N° 'Sheets("Machin").Name = Cstr(XX) Sheets(CStr(XX)).Select Total = Total + Evaluate("SUM(A1:A5,A10:A20,A30:A50)") Next XX
Et si ce n'est pas possible comme cela, mettre dans cette macro une variable public qui saurait le nombre de feuille insérées, comme ça, il y aurait moyen d'adapter la formule d'Eric
A+
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 257
31 déc. 2011 à 11:09
31 déc. 2011 à 11:09
Bonjour lermite,
Il me semble que ta formule reprend également la feuille Debut et PM ?
Oui, tout à fait, ce que j'indique dans :
Si la 1ère feuille à prendre en compte s'appelle 'Début' et la dernière 'PM'
Puisqu'il les renomme il doit connaitre les 1er et le dernier nom attribués.
De la même façon qu'il doit obligatoirement connaitre obligatoirement le nombre de feuilles crées. Même s'il semble l'ignorer (?)...
eric
Il me semble que ta formule reprend également la feuille Debut et PM ?
Oui, tout à fait, ce que j'indique dans :
Si la 1ère feuille à prendre en compte s'appelle 'Début' et la dernière 'PM'
Puisqu'il les renomme il doit connaitre les 1er et le dernier nom attribués.
De la même façon qu'il doit obligatoirement connaitre obligatoirement le nombre de feuilles crées. Même s'il semble l'ignorer (?)...
eric