Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

onglet récapitulatif

3 réponses
Avatar
Patrick BASTARD
Bonsoir gentes dames, gentils messieurs.

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

Bien cordialement,

Patrick Bastard

3 réponses

Avatar
MichelB
Bonsoir Patrick

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
Avatar
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 ?


Avatar
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