OVH Cloud OVH Cloud

Mois + 1

3 réponses
Avatar
Knolram
Bonjour les experts !

Voici mon pb :

J'ai un classeur contenant 11 feuilles
Les 10 premières feuilles sont des feuilles de paie mensuelles (ce sont
elles qui me posent pb)

Je voudrais pouvoir initialiser ces 10 feuilles grace à un USERFORM ou autre
de manière à ce que :
Je n'ai qu'a entrer une seule date : ex : 01/10/2004

Ensuite une macro devra faire les opérations suivantes avec cette date :

Le nom de la feuille 1 = "MMM AAAA" = cellule B7 (ex : oct 2004)
Le nom de la feuille 2 = "MMM +1 AAAA"= cellule B7 de la feuille 2 (ex :
nov 2004)
Le nom de la feuille 3 = "MMM + 2 AAAA" = cellule B7 de la feuille 3 (ex:
déc 2004)
etc jusqu'à la feuille 10

De cette façon, quand j'initialiserai mes feuille de paie : je n'aurai qu'à
entrer le 1er mois de la période :
cette date servira de nom à la première feuille, sera recopiée dans la
cellule B7 de la première feuille et incrémentée d'1mois par feuille.

Je ne sais si l'explication est très claire
Place aux experts interressés !

Merci !

Knolram.

PS : la période de 10 mois peut commencer en 2004 et finir en 2005

3 réponses

Avatar
Nicolas B.
Bonjour Knolram,

Dans le module de la feuille dans laquelle tu rentres la date de début,
colle ceci :

Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Integer
If Not Intersect([A1], Target) Is Nothing Then
For i = 1 To 10
Sheets(i).Range("B7").Value = DateSerial(Year(Target.Value), _
Month(Target.Value) + i - 1, 1)
Sheets(i).Name = Format(DateSerial(Year(Target.Value), _
Month(Target.Value) + i - 1, 1), "yyyy mmm")
Next
End If
End Sub

En entrant une date en A1 dans cette feuille, les feuilles 1 à 10 seront
renommées en les cellules B7 contiendront la date du premier du mois
concerné (mets donc les cellules B7 au format aaaa mmm).


A+
Nicolas B.

Bonjour les experts !

Voici mon pb :

J'ai un classeur contenant 11 feuilles
Les 10 premières feuilles sont des feuilles de paie mensuelles (ce sont
elles qui me posent pb)

Je voudrais pouvoir initialiser ces 10 feuilles grace à un USERFORM ou autre
de manière à ce que :
Je n'ai qu'a entrer une seule date : ex : 01/10/2004

Ensuite une macro devra faire les opérations suivantes avec cette date :

Le nom de la feuille 1 = "MMM AAAA" = cellule B7 (ex : oct 2004)
Le nom de la feuille 2 = "MMM +1 AAAA"= cellule B7 de la feuille 2 (ex :
nov 2004)
Le nom de la feuille 3 = "MMM + 2 AAAA" = cellule B7 de la feuille 3 (ex:
déc 2004)
etc jusqu'à la feuille 10

De cette façon, quand j'initialiserai mes feuille de paie : je n'aurai qu'à
entrer le 1er mois de la période :
cette date servira de nom à la première feuille, sera recopiée dans la
cellule B7 de la première feuille et incrémentée d'1mois par feuille.

Je ne sais si l'explication est très claire
Place aux experts interressés !

Merci !

Knolram.

PS : la période de 10 mois peut commencer en 2004 et finir en 2005




Avatar
abcd
La chose est faisable assez facilmenet, par contre il faudrait préciser
ton souhait:

veux-tu que la macro se charge de changer les noms ET de remplir les
cellules B7 (la macro pouvant éventuellement être lancée par change ment
de la première cellule B7). Les cellules B7 contiendraient alors des
données "figées" (sans formule) jusqu'à la prochaine fois.

Si tel est le cas, tu peux essayer la macro suivante. NOTE: tu dois
donner un style nommé "DateAuto" à toutes les cellules B7 concernée s

c'est un moyen que j'ai choisi pour repérer quelles feuilles doivent
accepter la date automatique (donc exclure ta feuille 11 dans un premier
temps mais éventuellement d'autres ensuite).

donner le format voulu à la première cellule B7 (par exemple n'affich er
que le mois et l'année),
puis menu Format > Style
taper "DateAuto", puis faire OK.
dans les 9 autres B7 des feuilles à date, changer le style normal en
DateAuto dans le même menu.

tape la macro suivante dans l'éditeur VBA: pourla première feuille
uniquement (celle qui doit déclencher la modification)

--> il te suffira de taper une date (complète) en B7 de la première
feuille pour enclencher l'événement voulu.




Private Sub Worksheet_Change(ByVal Target As Range)
Const CELL$ = "B7" ' cellule de déclenchement ET remplissage
Const NomStyle$ = "DateAuto" ' nom du style servant de repère

If Not (Intersect(Target, Me.Range(CELL)) Is Nothing) Then
Dim Sh As Worksheet, mois As Integer, annee As Integer, ladate As Dat e
mois = Month(Me.Range(CELL).Value)
annee = Year(Me.Range(CELL).Value)

For Each Sh In ThisWorkbook.Sheets
If (Sh.Range(CELL).Style = NomStyle) Then
ladate = DateSerial(annee, mois, 1) ' si mois dépasse 12 ,
il rectifie
Sh.Name = Format(ladate, "mmm yyyy")
If (Sh.Name <> Me.Name) Then
Sh.Range(CELL).Value = ladate
End If
mois = mois + 1
End If
Next Sh
End If
End Sub
Avatar
Knolram
Un grand Merci à tous les deux pour vos réponses rapides !

La soluce de Nicolas B. marche admirablement bien
Je suis en test pour la soluce de abcd (tu as vu juste : mon souhait est de
changer les noms des feuilles 1 à 10 ET de remplir les cellules B7)

Je teste vos macros avec celles déjà existantes de mon fameux classeur et
je vous tiens au courant !

Merci encore, vous me facilitez bcp la vie !

Knolram.

"Knolram" a écrit dans le message de news:
ejdB%
Bonjour les experts !

Voici mon pb :

J'ai un classeur contenant 11 feuilles
Les 10 premières feuilles sont des feuilles de paie mensuelles (ce sont
elles qui me posent pb)

Je voudrais pouvoir initialiser ces 10 feuilles grace à un USERFORM ou
autre de manière à ce que :
Je n'ai qu'a entrer une seule date : ex : 01/10/2004

Ensuite une macro devra faire les opérations suivantes avec cette date :

Le nom de la feuille 1 = "MMM AAAA" = cellule B7 (ex : oct 2004)
Le nom de la feuille 2 = "MMM +1 AAAA"= cellule B7 de la feuille 2 (ex :
nov 2004)
Le nom de la feuille 3 = "MMM + 2 AAAA" = cellule B7 de la feuille 3 (ex:
déc 2004)
etc jusqu'à la feuille 10

De cette façon, quand j'initialiserai mes feuille de paie : je n'aurai
qu'à entrer le 1er mois de la période :
cette date servira de nom à la première feuille, sera recopiée dans la
cellule B7 de la première feuille et incrémentée d'1mois par feuille.

Je ne sais si l'explication est très claire
Place aux experts interressés !

Merci !

Knolram.

PS : la période de 10 mois peut commencer en 2004 et finir en 2005