XL 2019 J'aurai besoin d'aide pour une formule (pas de macro svp)

risch_cyril

XLDnaute Nouveau
Bonjour,

je souhaite réaliser une formule avec votre aide svp.

premier document:
B11 l'année (2021 pour exemple)
C11 Le mois (janvier pour exemple)
M11 le résultat de notre formule

Et le second document nous voulons récupérer la valeur de la cellule D177

La difficulté que je rencontre c'est que j'ai un second document pour chaque année "gestion_2021", "gestion_2022" ect ect et dans chaqu'un d'entre eux il y à les feuilles "janvier" "février" ect ect...

finalité:
M11=recherche du bon document année définie par B11, et une fois trouvé recherche de la feuille du mois correspondante à C11, prendre ensuite la valeur de la case D177

exemple:
Première feuille
B11=2021
C11=janvier

M11= la valeur après recherche de C177 dans le fichier comportant 2021 nomé "gestion_2021", dans la feuille nommé janvier


j'espère que tout est clair

cordialement cyril

merci d'avance à celui qui me trouvera la formule
 

job75

XLDnaute Barbatruc
Bonsoir risch_cyril,

Puisque vous ne voulez pas de VBA il vous faut ouvrir les 2 fichiers concernés.

Entrez alors en M11 du 1er fichier la formule de liaison :
Code:
=INDIRECT("[gestion_"&B11&".xlsx]"&C11&"!C177")
Mais ensuite si vous fermez le 2ème fichier et revalidez M11 la formule renverra #REF!.

Même avec le chemin d'accès INDIRECT ne peut pas fonctionner sur un fichier fermé.

A+
 

risch_cyril

XLDnaute Nouveau
Bonsoir risch_cyril,

Puisque vous ne voulez pas de VBA il vous faut ouvrir les 2 fichiers concernés.

Entrez alors en M11 du 1er fichier la formule de liaison :
Code:
=INDIRECT("[gestion_"&B11&".xlsx]"&C11&"!C177")
Mais ensuite si vous fermez le 2ème fichier et revalidez M11 la formule renverra #REF!.

Même avec le chemin d'accès INDIRECT ne peut pas fonctionner sur un fichier fermé.

A+
Je souhaite pas de macro car je ne sais pas comment attirer cela a tout mon tableau du premier doc pour chaqu'une des lignes, mais si vous me l'expliquer je dit pas non a une macro
 

job75

XLDnaute Barbatruc
En VBA c'est simple, il suffit d'entrer la formule de liaison complète en M11.

Téléchargez les fichiers joints dans le même dossier (le bureau).

Les macros dans le ThisWorkbook du 1er fichier :
VB:
Private Sub Workbook_Activate()
Dim chemin$
chemin = ThisWorkbook.Path & "\" 'dossier à adapter
Application.DisplayAlerts = False
Application.EnableEvents = False 'désactive les évènements
With Feuil1 'CodeName de la feuille, à adapter
    .[M11] = "='" & chemin & "[gestion_" & .[B11] & ".xlsx]" & .[C11] & "'!C177" 'formule de liaison
End With
Application.EnableEvents = True 'réactive les évènements
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Workbook_Activate 'lance la macro
End Sub
La1ère se déclenche quand on ouvre ou active le fichier.

La 2ème quand on modifie une cellule quelconque.
 

Pièces jointes

  • Classeur(1).xlsm
    17.2 KB · Affichages: 18
  • gestion_2021.xlsx
    8.1 KB · Affichages: 6

job75

XLDnaute Barbatruc
Bonjour risch_cyril,

Pour traiter plusieurs lignes on fera une boucle :
VB:
Private Sub Workbook_Activate()
Dim chemin$, lig&
chemin = ThisWorkbook.Path & "\" 'dossier à adapter
Application.DisplayAlerts = False
Application.EnableEvents = False 'désactive les évènements
With Feuil1 'CodeName de la feuille, à adapter
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    For lig = 11 To .Range("B" & .Rows.Count).End(xlUp).Row
        .Cells(lig, 13) = "='" & chemin & "[gestion_" & .Cells(lig, 2) & ".xlsx]" & .Cells(lig, 3) & "'!C177" 'formule de liaison
    Next
    .Range("M" & lig & ":M" & .Rows.Count).Clear 'RAZ en dessous
End With
Application.EnableEvents = True 'réactive les évènements
End Sub
A+
 

Pièces jointes

  • Classeur(2).xlsm
    26 KB · Affichages: 6
  • gestion_2021.xlsx
    8.1 KB · Affichages: 3
  • gestion_2022.xlsx
    8.1 KB · Affichages: 3

risch_cyril

XLDnaute Nouveau
Ca fait plusieurs fois que je demande de l'aide pour les macro mais j'arrive pas à les intégrer dans mes cellules.

Faut t-il gardé votre document comme source de la macro ?
Faut t-il là déplacé ? si oui dans quoi ?


pourriez vous m'aider, m'expliquer pas à pas svp ?

cordialement Cyril
 

job75

XLDnaute Barbatruc
Les fichiers Classeur(1).xlsm ou Classeurs(2).xlsm fonctionnent tels quels.

Comme je l'ai dit les codes des 2 macros sont placés dans ThisWorkbook.

Allez dans VBA par Alt+F11 et double-clic en haut à gauche sur ce nom.

Si vous utilisez un autre fichier il vous restera à modifier Feuil1 si nécessaire dans la 1ère macro.
 

Statistiques des forums

Discussions
315 089
Messages
2 116 099
Membres
112 661
dernier inscrit
ceucri