Qui peut me dire comment, sur une feuille récapitulative, lister en vertical
(par ex :A1 à A31) la liste des feuilles contenues dans le même classeur, et
récupérer dans les colonnes suivantes les valeurs correspondantes de chacune
des feuilles dont le nom finit par une constante (ex par 2004).
Le but : créer, à la fin d'un classeur mensuel, une feuille par jour (28 à
31 feuilles) une feuille récapitulative avec dans les colonnes suivantes les
valeurs saisies au jour le jour.
Je précise que les feuilles quotidiennes sont semblables, mais que leur
disposition n'est bien sûr pas identique au récap.
A la main, je saurais faire, mais pour automatiser, j'aurais bien besoin de
vos pistes-lumières.
Je ne sais malheureusement pas encore utiliser les formules matricielles.
Merci d'avance à toutes les bonnes volontés.
Toutes les pistes que vous voudrez bien m'indiquer seront les bienvenues
Une reprise du forum, ces macros superbes pour la première partie de ta question :
liste des noms de feuilles En reprenant la procédure d'Isabelle placée dans le module de ThisWorkbook et en
admettant que la liste des noms de feuilles se trouve dans la 1ère feuille du classeur :
Sub ListerFeuilles()
Dim i As Integer
Sheets(1).Cells.ClearContents
For i = 2 To Sheets.Count
Sheets(1).Cells(i - 1, 1).Value = Sheets(i).Name
Next i
End Sub
Tu peux activer la mise à jour à chaque sélection de la feuille1
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name = Sheets(1).Name Then ListerFeuilles
End Sub
Ou tu peux activer la mise à jour à chaque création de feuille
Private Sub Workbook_NewSheet(ByVal Sh As Object)
ListerFeuilles
End Sub
L'évènement SuppressionFeuille n'existe pas donc la méthode par SheetActivate
est la plus sensée. Pour plus de sureté tu peux aussi utiliser la méthode
BeforePrint et SheetCalculate selon l'emploi que tu réserve à ta liste.
Ca te convient ?
-- Salut Michel ---- ;o) Enlever _nospam pour me répondre
Patrick BASTARD
Bonsoir,MichelB
Et merci pour ta réponse. Je teste, j'adapte, et si ça ne va pas, je reviens.
Bien cordialement,
Patrick
...dans le module de ThisWorkbook et en admettant que la liste des noms de feuilles se trouve dans la 1ère feuille du classeur :
Sub ListerFeuilles() Dim i As Integer Sheets(1).Cells.ClearContents For i = 2 To Sheets.Count Sheets(1).Cells(i - 1, 1).Value = Sheets(i).Name Next i End Sub
Ca te convient ?
Bonsoir,MichelB
Et merci pour ta réponse.
Je teste, j'adapte, et si ça ne va pas, je reviens.
Bien cordialement,
Patrick
...dans le module de ThisWorkbook et en admettant que la liste des noms de
feuilles se trouve dans la 1ère feuille du classeur :
Sub ListerFeuilles()
Dim i As Integer
Sheets(1).Cells.ClearContents
For i = 2 To Sheets.Count
Sheets(1).Cells(i - 1, 1).Value = Sheets(i).Name
Next i
End Sub
Et merci pour ta réponse. Je teste, j'adapte, et si ça ne va pas, je reviens.
Bien cordialement,
Patrick
...dans le module de ThisWorkbook et en admettant que la liste des noms de feuilles se trouve dans la 1ère feuille du classeur :
Sub ListerFeuilles() Dim i As Integer Sheets(1).Cells.ClearContents For i = 2 To Sheets.Count Sheets(1).Cells(i - 1, 1).Value = Sheets(i).Name Next i End Sub
Ca te convient ?
Patrick BASTARD
Bonjour, *MichelB* J'ai lu ton post avec le plus grand intéret :
Mais ce code, adapté pour n'effacer que la colonne A : **************************** Option Explicit
Sub ListerFeuilles()
Dim i As Integer 'On Error Resume Next Columns("A:A").Cells.ClearContents For i = 2 To Sheets.Count Sheets(1).Cells(i - 1, 1).Value = Sheets(i).Name Next i End Sub ************************ me renvoie une erreur 400. Pas trouvé dans l'aide :-(
Un petit coup de pouce serait le bienvenu.
Bien cordalement,
Patrick.
PS : subsidiare : où se trouvent les explications sur les codes d'erreur ?
En reprenant la procédure d'Isabelle placée dans le module de ThisWorkbook et en
admettant que la liste des noms de feuilles se trouve dans la 1ère feuille du classeur :
Sub ListerFeuilles()
Dim i As Integer
Sheets(1).Cells.ClearContents
For i = 2 To Sheets.Count
Sheets(1).Cells(i - 1, 1).Value = Sheets(i).Name
Next i
End Sub
Bonjour, *MichelB*
J'ai lu ton post OZMcUDn0EHA.2716@TK2MSFTNGP14.phx.gbl
avec le plus grand intéret :
Mais ce code, adapté pour n'effacer que la colonne A :
****************************
Option Explicit
Sub ListerFeuilles()
Dim i As Integer
'On Error Resume Next
Columns("A:A").Cells.ClearContents
For i = 2 To Sheets.Count
Sheets(1).Cells(i - 1, 1).Value = Sheets(i).Name
Next i
End Sub
************************
me renvoie une erreur 400.
Pas trouvé dans l'aide :-(
Un petit coup de pouce serait le bienvenu.
Bien cordalement,
Patrick.
PS : subsidiare : où se trouvent les explications sur les codes d'erreur ?
En reprenant la procédure d'Isabelle placée dans le module de
ThisWorkbook et en
admettant que la liste des noms de feuilles se trouve dans la 1ère
feuille du classeur :
Bonjour, *MichelB* J'ai lu ton post avec le plus grand intéret :
Mais ce code, adapté pour n'effacer que la colonne A : **************************** Option Explicit
Sub ListerFeuilles()
Dim i As Integer 'On Error Resume Next Columns("A:A").Cells.ClearContents For i = 2 To Sheets.Count Sheets(1).Cells(i - 1, 1).Value = Sheets(i).Name Next i End Sub ************************ me renvoie une erreur 400. Pas trouvé dans l'aide :-(
Un petit coup de pouce serait le bienvenu.
Bien cordalement,
Patrick.
PS : subsidiare : où se trouvent les explications sur les codes d'erreur ?
En reprenant la procédure d'Isabelle placée dans le module de ThisWorkbook et en
admettant que la liste des noms de feuilles se trouve dans la 1ère feuille du classeur :