Microsoft 365 Aide pour modification de code

  • Initiateur de la discussion Initiateur de la discussion ShuarS
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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 " &...
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,
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Code VBA
Réponses
10
Affichages
793
Réponses
2
Affichages
403
Réponses
3
Affichages
598
Réponses
3
Affichages
514
Réponses
1
Affichages
461
Compte Supprimé 979
C
Retour