Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Probleme macro blocage selection ligne

sirusg60

XLDnaute Nouveau
Re bonjour,

Je voulais modifier ma macro qui rend impossible la sélection d une plage de cellule en fonction de si la date est dépassée :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("a4:y34")) Is Nothing Then
jour = Cells(Target.Row, 2).Value
If Date > jour Then
MsgBox ("Vous ne pouvez pas revenir à une date précedente")
[A1].Select
Exit Sub
End If
End If
End Sub

Mes dates se trouvent de B4 a B34
Je voulais ajouter cette condition pour le mois de février :
B32 est le 29/02 qui s affiche si l année est bissextile.
e32:u32 est une plage de cellule dont je veux qu on ne puisse pas la sélectionner si b32 est vide

J ai donc modifier ma macro en:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("a4:y31")) Is Nothing Then
jour = Cells(Target.Row, 2).Value
If Date > jour Then
MsgBox ("Vous ne pouvez pas revenir à une date précedente")
[A1].Select
Exit Sub
End If
End If
If Not Intersect(Target, Range("e32:u32")) Is Nothing Then
jour = Cells(Target.Row, 2).Value
If b32 = "" Then
MsgBox ("Vous ne pouvez pas revenir à une date précedente")
[A1].Select
Exit Sub
End If
End If
End Sub

Le soucis c est que ca ne marche pas :
Avec if b32="" then ca me bloque la plage de cellule peut importe si b32 est vide ou pas
Ave if b32<>"" then je peut sélectionner la plage de cellule même si b32 est vide.
 

sirusg60

XLDnaute Nouveau
Finalement j ai trouvé tout seul comme un grand .
Je donne ma soluce pour mon cas des fois que ca puisse aider quelqu un :

Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("a4:y31")) Is Nothing Then
jour = Cells(Target.Row, 2).Value
If Date > jour Then
MsgBox ("Vous ne pouvez pas revenir à une date précedente")
[A1].Select
End If
End If
If Not Intersect(Target, Range("a32:y32")) Is Nothing Then
jour = Cells(Target.Row, 2).Value
If Range("B32") = "" Then
MsgBox ("Vous ne pouvez pas revenir à une date précedente")
[A1].Select
End If
End If
End Sub
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…