Bonsoir Pierre et toi le Forum,
Bon attention...va y avoir de la lecture là...hi hi hi
D'abord pour ce qui est de la variable
An dans la macro, il n'y aura aucune incidence dans le fonctionnement de celle-ci, même s'il éxiste déjà une cellule nommée
An sur la feuille...en fait la macro est indépendante à ce niveau...
ça c'est pour la première question...
Maintenant pour la cellule A1 j'vais essayer de te répondre d'après ce que je crois comprendre ici...lol...je vais tâcher d'être le plus explicite...ouarf !
Bon à c't'heure-ci j'imagine un fichier avec deux feuilles...la première nommée
SOMMAIRE et la deuxième nommée
FEVRIER...bon çà c'est sur le classeur...
Mais dans VBA ces mêmes feuilles porteront le nom :
Feuil1(SOMMAIRE) et
Feuil2(FEVRIER)...jusque là c'est simple...
Ainsi pour faire réference à la feuille FEVRIER dans la procédure With, on pourrait écrire...
With Feuil2
.Columns(31).Hidden = False
.Columns(66).Hidden = False
.Columns(102).Hidden = False
End With
ou bien...
With Sheets("FEVRIER")
.Columns(31).Hidden = False
.Columns(66).Hidden = False
.Columns(102).Hidden = False
End With
Mais le plus simple est de renommer chaque feuille dans vba :
F1(SOMMAIRE)......
(à la place de Feuil1(SOMMAIRE))
F2(FEVRIER)......
(à la place de Feuil1(FEVRIER))
ce qui donnerait dans la procédure With :
With F2
.Columns(31).Hidden = False
.Columns(66).Hidden = False
.Columns(102).Hidden = False
End With
c'est plus propre
(hein Ti...lol)...c'était une parenthèse...
jusqu'à présent, la macro que je t'ai proposée au début se place dans un Module
(et non sur une feuille dans vba)...
Seulement j'ai inscris
With [A1]...
...et ce [A1],
dans les macros Afficher ou Masquer, applique la procédure sur la feuille active...
en clair, si ta feuille active est
SOMMAIRE la macro se réfère automatiquement à la cellule A1 de cette feuille...et si ta feuille active est
FEVRIER la macro travaillera automatiquement sur cette feuille et non sur l'autre...
Ca va ? tu suis...lool
Bon...ben j'continue alors...lol
maintenant, on va faire en sorte de cacher les colonnes de la feuille FEVRIER si année bissextile...
mais aussi que la variable
An prenne la valeur de la cellule
B5 de la feuille
SOMMAIRE...ce qui donnera comme macro...
Option Explicit
'
Sub Masquer()
'masquer certaines colonnes si année bissextile
'dans la cellule A1 il faut une donnée
'année (2003) et non une date (17/09/03)
'Vériland
'http://www.excel-downloads.com/html/French/forum/messages/1_49640_49619.htm
Dim Bissextile As String
Dim An As String
'on prend la valeur année
'F1 = Feuil1 renommée
An = F1.Range("B5").Value
'on définit la variable
Bissextile = (Day(DateSerial(An, 2, 29)) = 29)
'si année bissextile alors
If Bissextile = True Then
'cacher les colonnes AE(31), BN(66), CX(102)
With F2
.Columns(2).Hidden = True
.Columns(3).Hidden = True
.Columns(4).Hidden = True
End With
'fin
End If
End Sub
Sub Afficher()
'cà c'est pour afficher
'les colonnes AE(31), BN(66), CX(102)
'F2 = Feuil2 renommée
With F2
.Columns(2).Hidden = False
.Columns(3).Hidden = False
.Columns(4).Hidden = False
End With
End Sub
j'ai pris la cellule B5 de la feuille SOMMAIRE mais j'aurais pu en choisir une autre...sur une feuille il y à 16.711.680 cellules...lol
Par contre pour que cela fonctionne bien il faut qu'il y ait une valeur entière de TYPE
2003 dans la cellule B5...
Mais...???
Comment inscrire cette valeur dans cette cellule ?...je ne vais tout de même pas la mettre à chaque fois non ???
Ah ben c'est une bonne question là...lol...il y a une solution...
Alors pour afficher l'année dans cette cellule B5 on va déjà supposer que dans la cellule D5 il y a déjà une date...
par exemple :
18/09/03
ainsi pour arriver au résultat souhaité dans
B5 il faut inscrire cette formule...dans la cellule B5...
=ANNEE(D5)
...
(ANNEE est une fonction)
...voilà...normalement je pense que tu y arriveras...si ce n'est pas compréhensible joins nous un fichier...
Bonne programmation
PS : Tiens j'bois un coup j'ai soif là...hi hi hi...Santé...
Macro à copier depuis le forum auquel cas tu risques d'avoir les attributs gras du post dedans...