XL 2019 créer une formule de recherche de documents et de cellule dans un fichier

risch_cyril

XLDnaute Nouveau
Bonjour, j'ai besoin de votre aide s'il vous plaît

j'ai plusieurs documents només

-gestion_2021

-gestion_2022

-gestion_2023 ect ect....

Dans chacun de ces documents il y à 12 feuilles pour chacun des mois de l'année

je souhaite donc dans un document unique avoir une cellule qui réalise la formule suivante hors je ne saurai coder

cette formule doit:

1)Rechercher tout les documents dans le fichiers "gestion de compte" qui possèdent le terme "gestion" peu importe se qui vient après.

2) et faire la somme des cellules C170 pour les feuilles et uniquement les feuilles nommées "janvier" "février" "mars" "avril" "mai" "juin" "juillet" "août" "septembre" "octobre" "novembre" "décembre"

Merci d'avance pour votre aide j'en serai très reconnaissant

cyril
 

job75

XLDnaute Barbatruc
Bonjour risch_cyril, merinos,

Téléchargez les fichiers joints dans le même dossier (le bureau) et exécutez le code du bouton :
Code:
Sub Calcul()
Dim chemin$, fichier$, a(), n&
chemin = ThisWorkbook.Path & "\"
fichier = Dir(chemin & "gestion*.xlsx")
ReDim a(1 To Rows.Count, 1 To 2)
While fichier <> ""
    n = n + 1
    a(n, 1) = fichier
    a(n, 2) = "=SUM('" & chemin & "[" & fichier & "]" & "Janvier:Décembre'!C170)" 'formule de liaison
    fichier = Dir
Wend
'---restitution---
With Feuil1 'CodeName à adapter
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    With .[C3] '1ère cellule de destination, à adapter
        If n Then .Resize(n, 2) = a
        .Offset(n).Resize(.Parent.Rows.Count - n - .Row + 1, 2).ClearContents 'RAZ en dessous
        If n Then
            .Offset(n + 1) = "Total"
            .Offset(n + 1, 1) = "=SUM(R[" & -n - 1 & "]C:R[-2]C)"
        End If
    End With
    With .UsedRange: End With 'actualise la barre de défilement verticale
End With
End Sub
On remarquera que la macro n'ouvre pas les fichiers sources, c'est plus rapide.

Seule contrainte : les feuilles des mois doivent être encadrées par "Janvier" et "Décembre".

A+
 

Pièces jointes

  • Somme(1).xlsm
    18.8 KB · Affichages: 22
  • gestion_2021.xlsx
    9.5 KB · Affichages: 9
  • gestion_2022.xlsx
    9.5 KB · Affichages: 7

risch_cyril

XLDnaute Nouveau
Bonjour risch_cyril, merinos,

Téléchargez les fichiers joints dans le même dossier (le bureau) et exécutez le code du bouton :
Code:
Sub Calcul()
Dim chemin$, fichier$, a(), n&
chemin = ThisWorkbook.Path & "\"
fichier = Dir(chemin & "gestion*.xlsx")
ReDim a(1 To Rows.Count, 1 To 2)
While fichier <> ""
    n = n + 1
    a(n, 1) = fichier
    a(n, 2) = "=SUM('" & chemin & "[" & fichier & "]" & "Janvier:Décembre'!C170)" 'formule de liaison
    fichier = Dir
Wend
'---restitution---
With Feuil1 'CodeName à adapter
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    With .[C3] '1ère cellule de destination, à adapter
        If n Then .Resize(n, 2) = a
        .Offset(n).Resize(.Parent.Rows.Count - n - .Row + 1, 2).ClearContents 'RAZ en dessous
        If n Then
            .Offset(n + 1) = "Total"
            .Offset(n + 1, 1) = "=SUM(R[" & -n - 1 & "]C:R[-2]C)"
        End If
    End With
    With .UsedRange: End With 'actualise la barre de défilement verticale
End With
End Sub
On remarquera que la macro n'ouvre pas les fichiers sources, c'est plus rapide.

Seule contrainte : les feuilles des mois doivent être encadrées par "Janvier" et "Décembre".

A+
Merci beaucoup si tu aurait juste la gentillesse de me coder encore quelques lignes pour que quand j'ouvr
Bonjour risch_cyril, merinos,

Téléchargez les fichiers joints dans le même dossier (le bureau) et exécutez le code du bouton :
Code:
Sub Calcul()
Dim chemin$, fichier$, a(), n&
chemin = ThisWorkbook.Path & "\"
fichier = Dir(chemin & "gestion*.xlsx")
ReDim a(1 To Rows.Count, 1 To 2)
While fichier <> ""
    n = n + 1
    a(n, 1) = fichier
    a(n, 2) = "=SUM('" & chemin & "[" & fichier & "]" & "Janvier:Décembre'!C170)" 'formule de liaison
    fichier = Dir
Wend
'---restitution---
With Feuil1 'CodeName à adapter
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    With .[C3] '1ère cellule de destination, à adapter
        If n Then .Resize(n, 2) = a
        .Offset(n).Resize(.Parent.Rows.Count - n - .Row + 1, 2).ClearContents 'RAZ en dessous
        If n Then
            .Offset(n + 1) = "Total"
            .Offset(n + 1, 1) = "=SUM(R[" & -n - 1 & "]C:R[-2]C)"
        End If
    End With
    With .UsedRange: End With 'actualise la barre de défilement verticale
End With
End Sub
On remarquera que la macro n'ouvre pas les fichiers sources, c'est plus rapide.

Seule contrainte : les feuilles des mois doivent être encadrées par "Janvier" et "Décembre".

A+
Pourrais tu me coder juste la même chose avec la mise à jour automatique comme si je cliquait sur calcul mais chaque fois que j'ouvre le document "investissements" merci d'avance
 

job75

XLDnaute Barbatruc
Pourrais tu me coder juste la même chose avec la mise à jour automatique comme si je cliquait sur calcul mais chaque fois que j'ouvre le document "investissements" merci d'avance
L'adaptation est évidente, placez dans ThisWorkbook :
VB:
Private Sub Workbook_Open()
Dim chemin$, fichier$, a(), n&
chemin = Me.Path & "\"
fichier = Dir(chemin & "gestion*.xlsx")
ReDim a(1 To Rows.Count, 1 To 2)
While fichier <> ""
    n = n + 1
    a(n, 1) = fichier
    a(n, 2) = "=SUM('" & chemin & "[" & fichier & "]" & "Janvier:Décembre'!C170)" 'formule de liaison
    fichier = Dir
Wend
'---restitution---
With Feuil1 'CodeName à adapter
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    With .[C3] '1ère cellule de destination, à adapter
        If n Then .Resize(n, 2) = a
        .Offset(n).Resize(.Parent.Rows.Count - n - .Row + 1, 2).ClearContents 'RAZ en dessous
        If n Then
            .Offset(n + 1) = "Total"
            .Offset(n + 1, 1) = "=SUM(R[" & -n - 1 & "]C:R[-2]C)"
        End If
    End With
    With .UsedRange: End With 'actualise la barre de défilement verticale
End With
End Sub
 

Pièces jointes

  • Investissements.xlsm
    16.9 KB · Affichages: 37
  • gestion_2021.xlsx
    9.5 KB · Affichages: 9
  • gestion_2022.xlsx
    9.5 KB · Affichages: 6
Dernière édition:

risch_cyril

XLDnaute Nouveau
Bonjour voila qui fait 3 jours que je me casse les dents sur ces macros... je suis toujours pas arrivé à les executer je ne sais pas si je doit les enregistrer et les conserver si je doit copier le code de vos macros dans ma feuille...je ne comprends rien de chez rien... pourriez vous mexpliquer tout les process pour que quand j'ouvre le document "investisement" la cellule donne directement le résultat
 

risch_cyril

XLDnaute Nouveau
Bonjour,

C'est ce que fait automatiquement le fichier Investissement du post #5 quand on l'ouvre.

Bien sûr les macros doivent être activées, cliquez comme il faut sur les messages qui s'affichent.

A+
Tout marche désormais sauf un seul point il est nécessaire que j'ouvre le fichier de la macro automatique pour que la mise a jour de la cellule sur l'autre document se face, Comment je doit faire pour ne pas avoir à ouvrir le document ? Car j'aimerai que le résultat s'affiche seul à l'ouverture du document et pas en ouvrant le doc et la macro ensuite
 

Statistiques des forums

Discussions
315 093
Messages
2 116 138
Membres
112 669
dernier inscrit
Guigui2502