Aide sur VBA: indexer des onglets sur Excel?
moseca
-
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
eriiic Messages postés 24603 Date d'inscription Statut Contributeur Dernière intervention -
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
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Mkdir vba ✓ - Forum VB / VBA
- Dépassement de capacité vba ✓ - Forum Excel
5 réponses
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
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!
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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+
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