empêcher la saisie après une date

bebop59

XLDnaute Nouveau
Bonsoir
j'ai réalisé cette macro qui permet de bloquer les saisies lorsque la date du jour est passée sur plusieurs lignes et plusieurs colonnes.


Private Sub Worksheet_selectionChange(ByVal Target As Range)
Dim c As Range


For Each c In Target


If Range("C1") > Range("A1") Then Exit Sub

If c.Address(0, 0) = "C2" Then Range("A1").Select
If c.Address(0, 0) = "C4" Then Range("A1").Select
If c.Address(0, 0) = "C6" Then Range("A1").Select
If c.Address(0, 0) = "C8" Then Range("A1").Select
If c.Address(0, 0) = "C10" Then Range("A1").Select
'......

If Range("D1") > Range("A1") Then Exit Sub

If c.Address(0, 0) = "D2" Then Range("A1").Select
If c.Address(0, 0) = "D4" Then Range("A1").Select
If c.Address(0, 0) = "D6" Then Range("A1").Select
If c.Address(0, 0) = "D8" Then Range("A1").Select
If c.Address(0, 0) = "D10" Then Range("A1").Select
'........

If Range("E1") > Range("A1") Then Exit Sub

If c.Address(0, 0) = "E2" Then Range("A1").Select
If c.Address(0, 0) = "E4" Then Range("A1").Select
If c.Address(0, 0) = "E6" Then Range("A1").Select
If c.Address(0, 0) = "E8" Then Range("A1").Select
If c.Address(0, 0) = "E10" Then Range("A1").Select

'..........


'If Range("c3") > Range("A4") Then Exit Sub
'If c.Address(0, 0) = "C4" Then Range("A1").Select

Next c
End Sub


Je voudrais la simplifier en réalisant des boucles mais je n'y arrive pas, d'autant que mon tableau de saisie comprend de nombreuses lignes et colonnes . Je joint un fichier avec la macro de l'essai de boucle .

Merci de votre aide
 

Pièces jointes

  • pastouche2.xlsm
    22.1 KB · Affichages: 50

Grand Chaman Excel

XLDnaute Impliqué
Re : empêcher la saisie après une date

Bonjour bebop59,
Un essai, si j'ai bien compris :

VB:
Private Sub Worksheet_selectionChange(ByVal Target As Range)
   Dim c As Range
   
   Set c = Target
  
   If Cells(1, c.Column) > Range("A1") Then Exit Sub
   If c.Row Mod 2 = 0 Then Range("A1").Select
   
End Sub
A+
 

bebop59

XLDnaute Nouveau
Re : empêcher la saisie après une date

Bonjour grand Chaman
Oui c'est exactement cela! mais y a t'il une méthode pour que ' l'échappement' ne commence qu' à partir de la colonne C et éventuellement la ligne 4 par exemple si les entêtes de ligne sont en ligne 3 ?
Peux tu m'expliquez le principe de fonctionnement de la ligne c.row mod 2=0 ?

Un grand merci à toi
Bebop
 

Grand Chaman Excel

XLDnaute Impliqué
Re : empêcher la saisie après une date

Bonjour,

Pour commencer à partir d'une ligne / colonne précise, on peut ajouter des conditions :

VB:
Private Sub Worksheet_selectionChange(ByVal Target As Range)
    Dim c As Range
    
    Set c = Target
   
    If Cells(1, c.Column) > Range("A1") And c.Row < 4 And c.Column < 3 Then Exit Sub
    If c.Row Mod 2 = 0 Then Range("A1").Select
    
End Sub

c.row mod 2 = 0 est l'utilisation de la fonction modulo.
Voir ici Modulo (opération) - Wikipédia

Exemple
4 mod 2 = 0
5 mod 2 = 1
6 mod 2 = 0
 

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 339
Membres
102 865
dernier inscrit
FreyaSalander