Autres Modifier automatiquement une suite de cellule selon la date du jour

Tmdu79

XLDnaute Nouveau
Bonjour à tous,
J'essai sans succès de créer une macro pour qu'au lancement et à la fermeture du fichier le contenu de la cellule J et K soient copier en "dur" lorsque la donnée date d'après la date du jour.

Cela doit permettre de modifier les cellules de saisi sans qu'il n'y ai d'incidence sur les données passées.

Je travail sous Excel 2007.

Je vous remercie d'avance pour votre aide !
 

Pièces jointes

  • test.xlsx
    11.9 KB · Affichages: 15

fanch55

XLDnaute Barbatruc
Salut, une contribution à ce que propose Staple1600
(j'ai pas bien compris pourquoi il commence le processus en ligne 2 et non en 7 comme dans l'exemple que tu as fourni)

Pour la première question de ta dernière requête :
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'C'est une procédure événementielle
'(à ne pas placer dans un Module standard comme Module1)
Dim DerL&
Sheets("Ton_Onglet").activate
DerL = Cells(Rows.Count, 2).End(3).Row
For i = 7 To DerL
If Cells(i, 2) < Date Then ' si inférieur à date du jour
Cells(i, 10).Resize(, 2) = Cells(i, 10).Resize(, 2).Value ' alors valeurs seules en colonne J et K
End If
Next
End Sub
ou
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'C'est une procédure événementielle
'(à ne pas placer dans un Module standard comme Module1)
Dim DerL&
With Sheets("Ton_Onglet")
DerL = .Cells(Rows.Count, 2).End(3).Row
For i = 7 To DerL
If .Cells(i, 2) < Date Then ' si inférieur à date du jour
.Cells(i, 10).Resize(, 2) = .Cells(i, 10).Resize(, 2).Value ' alors valeurs seules en colonne J et K
End If
Next
End With
End Sub

Pour la 2ème question :

Je ne vois pas ce qui t'empêche de rajouter une colonne après celle de la DEFAITE, ce serait plutôt si tu devais en insérer une autre avant,
En ce cas il faudrait renseigner les colonnes cible et source comme ci-dessous
Private Sub Workbook_BeforeClose(Cancel As Boolean)
'C'est une procédure événementielle
'(à ne pas placer dans un Module standard comme Module1)
Dim DerL&, Cible&, Source&
Sheets("Ton_Onglet").activate
DerL=Cells(Rows.Count, 2).End(3).Row
Cible=10
Source=2
For i = 7 To DerL
If Cells(i, Source) < Date Then ' si inférieur à date du jour
Cells(i, Cible).Resize(, 2) = Cells(i, Cible).Resize(, 2).Value ' alors valeurs seules en colonne J et K
End If
Next
End Sub

Ceci dit, ce ne sont que des exemples rapides avec des valeurs de référence en "dur", le code peut être évolutif ...


Oups, mal lue la deuxième question, en fait tu sembles vouloir étendre les colonnes à conserver :

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'C'est une procédure événementielle
'(à ne pas placer dans un Module standard comme Module1)
Dim DerL&, Cible&, Source&,NombreDeColonnes&
Sheets("Ton_Onglet").activate
DerL=Cells(Rows.Count, 2).End(3).Row
Cible=10
Source=2
NombreDeColonnes&=3

For i = 7 To DerL
If Cells(i, Source) < Date Then ' si inférieur à date du jour
Cells(i, Cible).Resize(, NombreDeColonnes) = Cells(i, Cible).Resize(, NombreDeColonnes).Value ' alors valeurs seules en colonne J et K
End If
Next
End Sub
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 947
Membres
101 849
dernier inscrit
florentMIG