VBA: boucle sur des onglets d'un autre fichier
Ferméyg_be Messages postés 23406 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 décembre 2024 - 7 août 2023 à 13:45
- VBA: boucle sur des onglets d'un autre fichier
- Mkdir vba ✓ - Forum VB / VBA
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Vba range avec variable ✓ - Forum VB / VBA
- Autofill vba ✓ - Forum Excel
2 réponses
7 août 2023 à 11:19
Bonjour
la méthode Sheets() prend soit une string en paramètre soit un entier correspondant à l'index de la page.
Tu peux donc utiliser un for pour iterer tes feuilles.
7 août 2023 à 12:29
bonjour,
"appliquer toute la formule décrite ci dessous sur chaque onglet": tu veux faire une boucle sur les onglets, ou chercher simultanément dans tous les onglets?
un exemple de boucle:
Dim wbgestion As Workbook, wsloop As Worksheet Set wbgestion = Workbooks.Open( _ "P:\Bureau\Audit Contrôle\Suivi des risques\tableau de bord\Portefeuille FIA sous gestion.xlsx") For Each wsloop In wbgestion.Worksheets Next wsloop
7 août 2023 à 12:37
un autre exemple:
Sub stress_test_passif() Dim a, i, j Dim wbgestion As Workbook, wbstress As Workbook Dim wsinactif As Worksheet, wsloop As Worksheet Application.ScreenUpdating = False Set wbgestion = Workbooks.Open( _ "P:\Bureau\Audit Contrôle\Suivi des risques\tableau de bord\Portefeuille FIA sous gestion.xlsx") Set wbstress = Workbooks("suivi des augmentations de K + STRESS TEST PASSIF.xlsm") Set wsinactif = wbstress.Sheets("marché secondaire inactif") For j = 3 To 61 Step 4 For i = 1 To 40 For Each wsloop In wbgestion.Worksheets a = WorksheetFunction.Small(wsloop.Range("k10:k49"), i) wsinactif.Cells(56, j) = wsinactif.Cells(56, j) + a If wsinactif.Cells(56, j) >= wsinactif.Cells(56, j - 1) Then If wsinactif.Cells(56, j) = 0 Then wsinactif.Cells(56, j + 1) = 0 End If GoTo nextj End If If wsinactif.Cells(56, j) > 0 Then wsinactif.Cells(56, j + 1) = _ (i - WorksheetFunction.CountIf(wsloop.Range("k10:k49"), 0)) + 1 End If Next wsloop Next i nextj: Next j wbstress.Activate End Sub
7 août 2023 à 13:18
Merci yg_be
je te remercie pour ce code beaucoup moins lourd que le mien et plus lisible .
Petite question, comme tu peux le voir mes "cells" vont de cells(56,j). si je souhaite avoir une boucle allant de z = 53 to 84 pour faire cells(z,j)
ou dois je placer cette boucle z dans ton code ? (j'ai essayé de le bidouiller mais le résultat qui sort ne me convient pas, je dois donc me tromper de place )
Merci !
7 août 2023 à 13:45
Sans comprendre ce que ton code doit réaliser, je suggère de mettre la boucle en z autour de la boucle en j.