feuille année date

  • Initiateur de la discussion Alex
  • Date de début
A

Alex

Guest
Bonjour,

Comment faire pour selectionner ou rendre visible certaine feuilles :


For Each feuilles In Worksheets
moncar = feuilles.name
anne = Len(moncar) - 5

moncar1 = Left(moncar, anne)

Dim MoisOk As Boolean
MoisOk = False

For I = 1 To 12
If moncar1 = MonthName(I) Then
MoisOk = True
numeroannee = Right(feuilles.name, 5)

End If
Next I
Next
End Sub



par le biais de se programme jobtiens les feuilles ayant le noms d'un mois et une année (avec la variable numeroannee)
je voudrait pouvoir par exemple travailler sur les feuilles de l'année 2004
comment faire?


et aussi tant ke jy suis si qqn c trier les feuilles suivant le mois et l'année....

merci d'avance
 
M

myDearFriend

Guest
Bonjour Alex,


Si j'ai bien compris, dans ton classeur, tu as des feuilles ayant un nom sous cette forme : Mois (en toutes lettres) + espace + Année (en chiffres)
Par exemple :"juin 2004", "décembre 2003", etc...


1 / La procédure suivante permet de ne visualiser que les feuilles correspondant à l'année recherchée :
----------------------------------
Sub SelectionnerFeuilles()
Dim Sh As Worksheet
Dim NF As Byte
Dim FInv As Byte
Dim R As String
R = InputBox("Année souhaitée :" & vbCrLf & "(ne rien saisir pour tout réafficher)", "Sélection de feuilles", "2004")
'Afficher toutes les feuilles
AfficherFeuilles
If Val(R) < 1 Then Exit Sub
NF = Worksheets.Count
'Pour chaque feuille
For Each Sh In Worksheets
If IsDate(Sh.Name) Then
'Masquer les feuilles correspondants à une autre année
If Val(R) <> Year(DateValue(Sh.Name)) Then
FInv = FInv + 1
If FInv < NF Then
Sh.Visible = xlSheetHidden
Else
AfficherFeuilles
MsgBox "Aucune feuille trouvée"
Exit Sub
End If
End If
End If
Next Sh
End Sub
----------------------------------
Sub AfficherFeuilles()
Dim Sh As Worksheet
For Each Sh In Worksheets
Sh.Visible = xlSheetVisible
Next Sh
End Sub
----------------------------------

2/ La procédure ci-dessous trie les onglets en fonction des dates représentées :
----------------------------------
Sub TrierFeuilles()
Dim Sh As Worksheet
Dim N As Byte
Dim F As Byte
AfficherFeuilles
'254 feuilles maximum
If Worksheets.Count >= 254 Then
MsgBox "Trop de feuilles (254 maxi pour cette macro) !"
Exit Sub
End If
Application.ScreenUpdating = False
'Créer une nouvelle feuille temporaire
Sheets.Add
ActiveSheet.Name = "Temp"
With Sheets("Temp")
'Pour chaque feuille
For Each Sh In Worksheets
N = N + 1
'Stocker le nom ainsi que sa valeur sous format "Date"
.Cells(N, 1).Value = Sh.Name
If IsDate(Sh.Name) Then
.Cells(N, 2).Value = DateValue(Sh.Name)
Else
.Cells(N, 2).Value = 0
End If
Next Sh
'Trier les noms (en fonction de la valeur Date)
Columns("A:B").Sort Key1:=Range("B1")
For F = 1 To N
Sheets(.Cells(F, 1).Value).Move Before:=Sheets(F)
Next F
'Supprimer l'onglet temporaire
Application.DisplayAlerts = False
.Delete
Application.DisplayAlerts = True
End With
Application.ScreenUpdating = True
End Sub
----------------------------------

Espérant t'avoir aidé.

Cordialement.
Didier_mDF
 
A

Alex

Guest
encore une petite question

Comment faire pour que toutes les feuilles d'une année corresponde à un bilan de l'année et ca de facon automatique
donc les feuiles de 2004 correspondent au bilan 2004....

Merci d'avance
 
M

myDearFriend

Guest
Bonjour Alex,

Je ne comprends pas bien ta dernière question. Fais-tu référence au fil suivant : <http://www.excel-downloads.com/html/French/forum/read.php?f=1&i=96612&t=96478> ?

Dans l'attente de te lire...

Cordialement.
Didier_mDF
 

Discussions similaires

Réponses
8
Affichages
666

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 459
dernier inscrit
Arnocal