OVH Cloud OVH Cloud

feuille mensuelle

7 réponses
Avatar
philippe
Bonjour,

J'ai une feuille qui est régulièrement mise à jour.

Est il possible d'automatiser par une macro chaque 1er du mois la manip
suivante :

copier cette feuille,
créer une nouvelle feuille avec le nom du mois
d'y effectuer un collage spécial "valeur" pour geler les données

merci de votre aide

Phil.

7 réponses

Avatar
AV
Dans le module de ThisWorkbook :

Private Sub Workbook_Open()
On Error Resume Next
x = Sheets(Format(Date, "mmmm")).[A1]
If Err.Number = 0 Then Exit Sub
If Day(Date) = 1 Then
Sheets("Modèle").Copy After:=Sheets(Sheets.Count)
With ActiveSheet
.Name = Format(Date, "mmmm")
.UsedRange.Value = .UsedRange.Value
End With
End If
End Sub

PS : faut ouvrir le fichier tous les jours sinon ça le fera pas ou alors
..demande si tu veux que "ça le fasse" même si on a passé le 1° du mois !

AV
Avatar
Clément Marcotte
Bonjour,

Dans Excel, faire Alt-F11, ou Outils - Macro - VisualBasic Editor.

Dans la fenêtre en haut à gauche (L'Explorateur de projets), tu fais
un clic-droit sur l'icône "ThisWorkbook" qui correspond à ton
classeur. Tu cliques sur Code dans le menu contextuel.

Tu colles la procédure dans la nouvelle fenêtre qui s'affiche


"philippe" <philippe.geai(supprimerceci)@laposte.net> a écrit dans le
message de news:%
Merci,
Je suis un néophyte:

Comment coller ces instructions dans le "module de ThisWorkbook " ?

merci deton aide

"AV" a écrit dans le message de news:

Dans le module de ThisWorkbook :

Private Sub Workbook_Open()
On Error Resume Next
x = Sheets(Format(Date, "mmmm")).[A1]
If Err.Number = 0 Then Exit Sub
If Day(Date) = 1 Then
Sheets("Modèle").Copy After:=Sheets(Sheets.Count)
With ActiveSheet
.Name = Format(Date, "mmmm")
.UsedRange.Value = .UsedRange.Value
End With
End If
End Sub

PS : faut ouvrir le fichier tous les jours sinon ça le fera pas
ou alors


..demande si tu veux que "ça le fasse" même si on a passé le 1° du
mois !



AV








Avatar
FxM
Bonjour,

Presse et mainteins ALT puis presse F11, tu viens d'entrer dans
l'éditeur de code VBA nommé VBE.

Regarde dur le coté gauche, il y a tous les classeurs ouverts. Choisis
le tien et clique sur la croix juste à la gauche de son nom. Ca déplie
son contenu. Tu dois voir apparaître ThisWorkbook. Recopies-y ce que t'a
indiqué AV et ça devrait marcher le 1er du mois.
Nul doute qu'Alain va adapter ce code pour ca marche aussi le 2 janvier :o)

@+
FxM

Merci,
Je suis un néophyte:

Comment coller ces instructions dans le "module de ThisWorkbook " ?

merci deton aide

"AV" a écrit dans le message de news:


Dans le module de ThisWorkbook :

Private Sub Workbook_Open()
On Error Resume Next
x = Sheets(Format(Date, "mmmm")).[A1]
If Err.Number = 0 Then Exit Sub
If Day(Date) = 1 Then
Sheets("Modèle").Copy After:=Sheets(Sheets.Count)
With ActiveSheet
.Name = Format(Date, "mmmm")
.UsedRange.Value = .UsedRange.Value
End With
End If
End Sub

PS : faut ouvrir le fichier tous les jours sinon ça le fera pas ou alors
..demande si tu veux que "ça le fasse" même si on a passé le 1° du mois !

AV









Avatar
FxM
Comment coller ces instructions dans le "module de ThisWorkbook " ?



Copier le code > alt+F11 > double-clic sur "ThisWorkbook" (fenêtre de gauche) >
coller

AV





... qui a fait des essais de date ? :o))


Avatar
AV
... qui a fait des essais de date ? :o))


C'est une réponse "2° degré" à la question posée...demain !

;-)
AV

Avatar
philippe
Merci,
Je suis un néophyte:

Comment coller ces instructions dans le "module de ThisWorkbook " ?

merci deton aide

"AV" a écrit dans le message de news:

Dans le module de ThisWorkbook :

Private Sub Workbook_Open()
On Error Resume Next
x = Sheets(Format(Date, "mmmm")).[A1]
If Err.Number = 0 Then Exit Sub
If Day(Date) = 1 Then
Sheets("Modèle").Copy After:=Sheets(Sheets.Count)
With ActiveSheet
.Name = Format(Date, "mmmm")
.UsedRange.Value = .UsedRange.Value
End With
End If
End Sub

PS : faut ouvrir le fichier tous les jours sinon ça le fera pas ou alors
..demande si tu veux que "ça le fasse" même si on a passé le 1° du mois !

AV




Avatar
philippe
MERCI à TOUS POUR votre AIDE

Bon week end

Philippe


"FxM" a écrit dans le message de news:
%
Bonjour,

Presse et mainteins ALT puis presse F11, tu viens d'entrer dans l'éditeur
de code VBA nommé VBE.

Regarde dur le coté gauche, il y a tous les classeurs ouverts. Choisis le
tien et clique sur la croix juste à la gauche de son nom. Ca déplie son
contenu. Tu dois voir apparaître ThisWorkbook. Recopies-y ce que t'a
indiqué AV et ça devrait marcher le 1er du mois.
Nul doute qu'Alain va adapter ce code pour ca marche aussi le 2 janvier
:o)

@+
FxM

Merci,
Je suis un néophyte:

Comment coller ces instructions dans le "module de ThisWorkbook " ?

merci deton aide

"AV" a écrit dans le message de news:


Dans le module de ThisWorkbook :

Private Sub Workbook_Open()
On Error Resume Next
x = Sheets(Format(Date, "mmmm")).[A1]
If Err.Number = 0 Then Exit Sub
If Day(Date) = 1 Then
Sheets("Modèle").Copy After:=Sheets(Sheets.Count)
With ActiveSheet
.Name = Format(Date, "mmmm")
.UsedRange.Value = .UsedRange.Value
End With
End If
End Sub

PS : faut ouvrir le fichier tous les jours sinon ça le fera pas ou alors
..demande si tu veux que "ça le fasse" même si on a passé le 1° du mois !

AV