Excel - Macro

J’ai 12 onglets dans une feuille Excel représentant les 12 mois de l’année.
J’ai une autre feuille Excel avec laquelle je souhaite inscrire les montants apparaissant dans un de ces onglets en fonction du mois que je choisis préalablement.
Je pourrais choisir une formule si très longue mais je pense qu’il y a une autre solution.

J’ai pas bien compris… Onglet et feuille c’est pas pareil ? :confused:
Ou amors tu veux dire 12 colonnes dans une feuille…
Peux tu expliciter avec un exemple

J’ai 12 onglets dans un classeur Excel représentant les 12 mois de l’année.
J’ai un autre classeur Excel avec laquelle je souhaite inscrire les montants apparaissant dans un de ces onglets en fonction du mois que je choisis préalablement.
Je pourrais choisir une formule si très longue mais je pense qu’il y a une autre solution.

J’ai 12 onglets dans un classeur Excel représentant les 12 mois de l’année.
J’ai un autre classeur Excel avec laquelle je souhaite inscrire les montants apparaissant dans un de ces onglets en fonction du mois que je choisis préalablement.
Je pourrais choisir une formule si très longue mais je pense qu’il y a une autre solution.
C’est plus claire

Utilise la fonction indirect

C’est peut être pas exactement ce que tu cherches, mais ça te donne une piste :

Exemple :
Nom du premier classeur : Classeur1
Nom des onglets : 01,02, 03, … 12

Le montant est dans la cellule A1 de chaque onglet.
Dans le classeur2 :
=[classeur1.xls]01!A1 où 01 est le nom de l’onglet.

Si j’ai pas tout compris, mets un exemple concret de ce que tu veux.

La fonction indirect doit mettre utile dans mon problème.

Je m’explique, j’ai un premier classeur dénommé Caisse avec 12 onglets référencant les 12 mois de l’année (les 12 onglets sont établit de la meme manière).
J’ai un autre classeur dénommé macro avec 2 onglets.
Dans le premier onglet, je fais figurer le mois qui m’intéresse (ex Juin06) dans la cellule A1
Dans le second onglet figure l’ensemble de mes écritures comptables nécessaire, avec des montants dans les colonnes G et H. il y a environ 100 lignes.

Donc lorsque je vais chercher manuellement le montant qui m’intéresse dans le fichier caisse et par exemple le mois de Juin, j’ai cette formule dans le 2ème onglet : =’[caisse]juin06’!$E52$
Mais lorsque je veux ensuite prendre les montants de Juillet06. Je dois normallement modifier toutes mes cellules.
Ou faire edition recherche (Juin 06) et remplacer par (juillet 06).
Mais je pense qu’il doit y avoir une autre facon de faire. par exemple la fonction indirect.

Je ne connais pas la fonction indirecte.

Si dans les formules : =’[caisse]juin06’!$E52$ tu remplaces “juin06” par autre chose, par exemple “MOIS”, ce qui donnerait : =’[caisse]mois’!$E52$

Dans le premier classeur “Caisse”, il suffirait de renommer MOIS l’onglet du mois que tu veux traiter, le 6ème pour le mois de juin. Et de faire F9 “Calculer maintenant” dans le classeur “macro”.

EDIT : Si dans Options > tu coches “Calcul automatique” le calcul devrait être automatique, (comme dirait LaPalisse), et tu n’aurais même pas besoin de faire F9.

Ok. La fonction indirect te permet de retourner le contenu d’une cellule dont tu spécifies la référence.
Par ex : indirect(“C3”) = 5 en supposant que la cellule ‘C3’ dans ta feuille contient bien ‘5’.

Ton problème, si j’ai bien compris, est d’avoir dans tes formules non pas les noms en dur de tes onglets mais une sorte de variable dont tu pourrais modifier la valeur comme tu le souhaites.

La fonction indirect est très utile quand tu veux dynamiquement modifier des données. Dans ton cas, je vois bien une liste déroulante pour sélectionner les mois à laquelle est liée une cellule et c’est la référence de cette cellule que tu utiliseras pour cette fonction.

Exemple :
Tu as un onglet ‘synthèse’ dans lequel tu affiches tes montants et tes autres onglets correspondants aux mois : ‘janv’, ‘fév’, etc.
Dans ‘synthèse’, tu définis ta cellule qui contiendra le mois que tu veux (par ex ‘C3’), tu auras donc une formule du style ‘=indirect( indirect(“C3”) & “!D4”)’ où D4 contient pour tous les mois un montant que tu veux afficher.

a+

J’ai pas tout à fait compris la syntaxe à la fin.
Moi ma formule de base est :
=’[caisse]juin06’!$E52$
la formule indirect je dois la mettre avant Juin06 comme ceci :
=’[caisse](indirect(A1)’!$E52$

Mais si je fais cela comme ca, ca ne fonctionne pas bien sur

hmm essaie quelque chose du style =indirect("’[caisse]" & indirect(“A1”) & “’!$E$52”)
je vais faire un test pour voir…

edit : ca fonctionne !
a+

Non ca ne fonctionne pas.

Tu pourrais un petit peu moins laconique :wink:

Chez moi ca fonctionne : j’ai mon classeur caisse avec les onglets ‘janv’, ‘fev’… dans lesquels j’ai mis un chiffre dans chacune des cellules E52, un autre classeur dans lequel j’ai écrit la formule et ca fonctionne.

Désolé, d’avoir été un peu breve, je suis aller m’endormir par la suite.
Sinon, désolé, j’essai par tout moyen mais je n’arrive pas, il doit y avoir une petite erreur dans la formule :
=indirect("’[caisse]" & indirect(“A1”) & “’!$E$52”)

Remplace [caisse] par [caisse.xls] avec le fichier caisse ouvert bien sûr. Si ca ne marche toujours pas mais le chemin complet : c:\monrep\[caisse.xls]

A+

Non je suis désolé.
Ca ne fonctionne pas, j’avais bien mis “.xls”

Copie cela :

=indirect("’[caisse.xls]" & A1 & “’!$E$52”)

En A1, il doit y avoir le mois que tu souhaites.
J’ai aussi testé et ça marche.

Merci beaucoup, là c’est bon