Microsoft 365 Aide pour modification de code

ShuarS

XLDnaute Occasionnel
Salut à tous,


Merci de prendre le temps de lire ma demande :)

J'utilise un petit bout de VBA pour créer une extraction de plusieurs fichiers Excel dans un seul.
Le voici :

VB:
 t = Timer
i = 1
Semaine = InputBox("Nom de l'onglet recherché ? (format aaaa Sem ss) Exemple : 2022 Sem 01")
Chemin = "F:\xxx\_xxx\"
Fichier = Dir(Chemin & "*.xlsm")

Do While Len(Fichier) > 0

Workbooks("exemple2.xlsm").Worksheets(1).Range("A" & i) = Fichier
Workbooks("exemple2.xlsm").Worksheets(1).Range("B" & i) = Semaine
Workbooks("exemple2.xlsm").Worksheets(1).Range("C" & i).FormulaR1C1 = "=SUM('" & Chemin & "[" & Fichier & "]" & Semaine & "'!R4C4:R500C15)"

i = i + 1
Debug.Print Chemin & Fichier
Fichier = Dir()

Loop


Je récupère donc les informations d'un seul onglet cible dans chaque fichier Excel disponible dans le dossier.

Aujourd'hui j'aimerais pouvoir choisir une plage de date.
Plutôt que de choisir une semaine cible via l'InputBox en choisissant par exemple la semaine 40 "2022 Sem 40", j'aimerais pouvoir récupérer les informations de la semaine 10 à la semaine 40.
Les informations ainsi récupérées devront être copiées dans les colonnes à la suite ("C" puis "D" puis "E", etc.).

Est-ce réalisable avec ce code de départ ?
Pouvez-vous m'apporter une aide ?


Merci à tous,
Shu
 

Pièces jointes

  • exemple2.xlsx
    20 KB · Affichages: 3
Solution
Re,

Essaye avec ceci :
VB:
t = Timer
i = 1
SemaineInf = InputBox("Nom de la semaine mini ? (format aaaa Sem ss) Exemple : 2022 Sem 01")
SemaineSup = InputBox("Nom de la semaine maxi ? (format aaaa Sem ss) Exemple : 2022 Sem 01")
Chemin = "F:\xxx\_xxx\"
Fichier = Dir(Chemin & "*.xlsm")

Do While Len(Fichier) > 0
    nCol = 2
    Workbooks("exemple2.xlsm").Worksheets(1).Range("A" & i) = Fichier
    Workbooks("exemple2.xlsm").Worksheets(1).Range("B" & i) = Semaine
    x = Int(VBA.Right(SemaineInf, 2))
    y = Int(VBA.Right(SemaineSup, 2))
    For nSem = x To y
        nCol = nCol + 1
        Workbooks("exemple2.xlsm").Worksheets(1).Cells(i, nCol).FormulaR1C1 = "=SUM('" & Chemin & "[" & Fichier & "]" & VBA.Left(SemaineInf, 4) & " Sem " &...

xUpsilon

XLDnaute Accro
Re,

Essaye avec ceci :
VB:
t = Timer
i = 1
SemaineInf = InputBox("Nom de la semaine mini ? (format aaaa Sem ss) Exemple : 2022 Sem 01")
SemaineSup = InputBox("Nom de la semaine maxi ? (format aaaa Sem ss) Exemple : 2022 Sem 01")
Chemin = "F:\xxx\_xxx\"
Fichier = Dir(Chemin & "*.xlsm")

Do While Len(Fichier) > 0
    nCol = 2
    Workbooks("exemple2.xlsm").Worksheets(1).Range("A" & i) = Fichier
    Workbooks("exemple2.xlsm").Worksheets(1).Range("B" & i) = Semaine
    x = Int(VBA.Right(SemaineInf, 2))
    y = Int(VBA.Right(SemaineSup, 2))
    For nSem = x To y
        nCol = nCol + 1
        Workbooks("exemple2.xlsm").Worksheets(1).Cells(i, nCol).FormulaR1C1 = "=SUM('" & Chemin & "[" & Fichier & "]" & VBA.Left(SemaineInf, 4) & " Sem " & Format(nSem, "00") & "'!R4C4:R500C15)"
    Next nSem
    i = i + 1
    Debug.Print Chemin & Fichier
    Fichier = Dir()

Loop

Utilisable entre deux semaines d'une même année.

Bonne journée,
 

ShuarS

XLDnaute Occasionnel
J'avais pas vu la correction, j'étais en train de me battre avec la première version !

Un grand merci c'est vraiment top !

Merci pour le temps et le partage c'est vraiment sympa.
Je peux continuer la mise à jour beaucoup plus simplement.

Bravo et MERCI @xUpsilon ,
Shu
 

Statistiques des forums

Discussions
314 732
Messages
2 112 286
Membres
111 499
dernier inscrit
cg19