Question Excel renvoi de feuille à feuille

Signaler
Messages postés
72
Date d'inscription
vendredi 25 avril 2008
Statut
Membre
Dernière intervention
15 juin 2010
-
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
-
Bonjour,

Je cherche à créer un outil de suivi sur Excel.

Pour cela, je dispose de données comptables concernant chaque mois (de janvier à décembre).
Est-ce possible de faire une formule qui vienne choisir une feuille dont le nom se trouve dans une cellule ?
Je m'explique :
- sur la feuille 'Tableau 1', en cellule B4, j'ai la formule ='Janvier'!A1
- dans une autre cellule sur la feuille Tableau 1, je choisis le mois (exemple : une liste déroulante en cellule B1, qui propose les 12 mois)
- Ainsi, lorsque je choisirai le mlomis de février dans la cellule B1, j'obtiendrai la formule ='Février'!A1.

Merci d'avance !

6 réponses

Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
Salut,

oui!

en B4 tu ecris :

=Indirect(B1&"!A1")

si cela ne fonctionne pas tu peux essayer autrement :

=Indirect("'"&B1&"'!A1")

A+
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Salut
Oui, il faut simplement que tu fasses un petit programme lié au choix du mois et que tu ailles modifier chaque formule des cellules concernées, exemple :
Private Sub ComboBox1_Change()
    Dim leMois As String
    Dim maCellule As Range
    Dim sTemp As String
    Dim r As Long
    ' Arrêt des reclaculs automatiques
    Application.Calculation = xlManual
    leMois = ComboBox1.Text
    For Each maCellule In Range("A1:D43")   ' à définir
        sTemp = maCellule.Formula
        ' Remplacement du mois dans la formule du genre ='Janvier'!A1
        ' Recherche emplacement du 2ème apostrophe '
        r = InStr(4, sTemp, "'", vbTextCompare)
        If r > 0 Then
            maCellule.Formula = "='" & leMois & Mid$(sTemp, r)
        End If
    Next
    ' Relance calculs automatiques
    Application.Calculation = xlAutomatic
    Calculate
End Sub

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
La solution de bigfish semble plus adaptée (et moins complexe)

PS : Bien mettre des espaces devant et derrière les signes de concaténation &
Messages postés
68
Date d'inscription
mercredi 2 mars 2011
Statut
Membre
Dernière intervention
25 avril 2013

Salut, le forum ou bien un exemple en vba sur l'événement Change de la feuil :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address [B1].Address Then [B4] "=" & [B1] & "!A1"
End Sub


@+
Messages postés
72
Date d'inscription
vendredi 25 avril 2008
Statut
Membre
Dernière intervention
15 juin 2010

Merci de vos réponses.

Je pensais pouvoir adapter vos réponses à mon exemple simplifié mais je n'y arrive pas.
Ma formule est la suivante :
SOMMEPROD((GAUCHE('Janvier'!A2:A1000;4)"7071")*('Janvier'!F2:F1000))
et je voudrais changer juste Janvier par un autre mois situé dans une autre cellule.
Je n'y arrive pas avec e que vous avez dit.

Merci !
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
Re,

la prochaine fois pose une question qui correspond à ton besoin !

SOMMEPROD((GAUCHE(Indirect("'"&B1&"'!A2:A1000");4)"7071")*Indirect("'"&B1&"'!F2:F1000")

A+