Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

merci de me corriger

9 réponses
Avatar
gerard
bonsoir
je pensais avoir trouvé mais cela ne fonctionne pas tout a fait
la saisie se fait dans les cellule de format text sous la forme mm/yy
exemple 02/03
quand je saisie dans L144 pas de prob la verification est faite
des que je saisie dans M144, il effectue le controle mais me recontrole les
deux plages L et M
et me repete deux fois la meme chose voici mon code


Private Sub Worksheet_Change(ByVal Target As Range)
' ' format des cellules
On Error Resume Next
If Union(Target, Range("L144:L148")).Address <> "" Then
'MsgBox CDate("01/" & Target.Value)
If CDate("01/" & Target.Value) > Now Then
MsgBox "Votre date de début est Futuriste"
End If
End If
If Union(Target, Range("M144:M148")).Address <> "" Then
If CDate("01/" & Target.Value) > Now Then
MsgBox "Votre date de fin est Futuriste"
End If
'MsgBox CDate("01/" & Target.Offset(0, -1))
If CDate("01/" & Target.Value) < CDate("01/" & Target.Offset(0, -1))
Then
MsgBox "Votre date de fin est antérieur à la date de début"
End If
End If

End Sub

merci de votre aide
ge

9 réponses

Avatar
sabatier
bonjour gérard
moi je ne saurais corriger que cela :

MsgBox "Votre date de fin est antérieurE à la date de début"

pour le reste, les caïds ne vont pas tarder à sortir de leurs mechtas
jps

gerard a écrit:
bonsoir
je pensais avoir trouvé mais cela ne fonctionne pas tout a fait
la saisie se fait dans les cellule de format text sous la forme mm/yy
exemple 02/03
quand je saisie dans L144 pas de prob la verification est faite
des que je saisie dans M144, il effectue le controle mais me recontrole les
deux plages L et M
et me repete deux fois la meme chose voici mon code


Private Sub Worksheet_Change(ByVal Target As Range)
' ' format des cellules
On Error Resume Next
If Union(Target, Range("L144:L148")).Address <> "" Then
'MsgBox CDate("01/" & Target.Value)
If CDate("01/" & Target.Value) > Now Then
MsgBox "Votre date de début est Futuriste"
End If
End If
If Union(Target, Range("M144:M148")).Address <> "" Then
If CDate("01/" & Target.Value) > Now Then
MsgBox "Votre date de fin est Futuriste"
End If
'MsgBox CDate("01/" & Target.Offset(0, -1))
If CDate("01/" & Target.Value) < CDate("01/" & Target.Offset(0, -1))
Then
MsgBox "Votre date de fin est antérieur à la date de début"
End If
End If

End Sub

merci de votre aide
ge




Avatar
gerard
salut
merci quand meme
ge
"sabatier" a écrit dans le message de
news:
bonjour gérard
moi je ne saurais corriger que cela :

MsgBox "Votre date de fin est antérieurE à la date de début"

pour le reste, les caïds ne vont pas tarder à sortir de leurs mechtas
jps

gerard a écrit:
bonsoir
je pensais avoir trouvé mais cela ne fonctionne pas tout a fait
la saisie se fait dans les cellule de format text sous la forme mm/yy
exemple 02/03
quand je saisie dans L144 pas de prob la verification est faite
des que je saisie dans M144, il effectue le controle mais me recontrole
les


deux plages L et M
et me repete deux fois la meme chose voici mon code


Private Sub Worksheet_Change(ByVal Target As Range)
' ' format des cellules
On Error Resume Next
If Union(Target, Range("L144:L148")).Address <> "" Then
'MsgBox CDate("01/" & Target.Value)
If CDate("01/" & Target.Value) > Now Then
MsgBox "Votre date de début est Futuriste"
End If
End If
If Union(Target, Range("M144:M148")).Address <> "" Then
If CDate("01/" & Target.Value) > Now Then
MsgBox "Votre date de fin est Futuriste"
End If
'MsgBox CDate("01/" & Target.Offset(0, -1))
If CDate("01/" & Target.Value) < CDate("01/" &
Target.Offset(0, -1))


Then
MsgBox "Votre date de fin est antérieur à la date de début"
End If
End If

End Sub

merci de votre aide
ge







Avatar
Jean-François Aubert
Salut Gérard,

If Union(Target, Range("L144:L148")).Address <> ""
renvoie toujours une adresse: celle de l'union de Target et de L144:L148 !!!!!!!



Est-ce que ceci te convient ?

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 12 And Target.Row >= 144 And Target.Row <= 148 Then
If CDate("01/" & Target.Value) > Now Then
MsgBox "Votre date de début est Futuriste"
End If
End If
If Target.Column = 13 And Target.Row >= 144 And Target.Row <= 148 Then
If CDate("01/" & Target.Value) > Now Then
MsgBox "Votre date de fin est Futuriste"
End If
If CDate("01/" & Target.Value) < CDate("01/" & Target.Offset(0, -1)) Then
MsgBox "Votre date de fin est antérieur à la date de début"
End If
End If
End Sub


--
Amicalement

Jean-François Aubert (pas caïd du tout)


"gerard" a écrit dans le message de
news:bu23ap$mqi$
bonsoir
je pensais avoir trouvé mais cela ne fonctionne pas tout a fait
la saisie se fait dans les cellule de format text sous la forme mm/yy
exemple 02/03
quand je saisie dans L144 pas de prob la verification est faite
des que je saisie dans M144, il effectue le controle mais me recontrole les
deux plages L et M
et me repete deux fois la meme chose voici mon code


Private Sub Worksheet_Change(ByVal Target As Range)
' ' format des cellules
On Error Resume Next
If Union(Target, Range("L144:L148")).Address <> "" Then
'MsgBox CDate("01/" & Target.Value)
If CDate("01/" & Target.Value) > Now Then
MsgBox "Votre date de début est Futuriste"
End If
End If
If Union(Target, Range("M144:M148")).Address <> "" Then
If CDate("01/" & Target.Value) > Now Then
MsgBox "Votre date de fin est Futuriste"
End If
'MsgBox CDate("01/" & Target.Offset(0, -1))
If CDate("01/" & Target.Value) < CDate("01/" & Target.Offset(0, -1))
Then
MsgBox "Votre date de fin est antérieur à la date de début"
End If
End If

End Sub

merci de votre aide
ge




Avatar
ChrisV
Bonjour Gérard,

Tu peux aussi utiliser la méthode Intersect...
(donc avec les plages de données dates début et de fin nommées
respectivement "deB" et "fiN")

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("deB")) Is Nothing Then
If CDate("01/" & Target) > Now Then
MsgBox "Votre date de début est Futuriste"
End If
End If
If Not Intersect(Target, Range("fiN")) Is Nothing Then
If CDate("01/" & Target) > Now Then
MsgBox "Votre date de début est Futuriste"
End If
If CDate("01/" & Target) < CDate("01/" & Target.Offset(0, -1)) Then
MsgBox "Votre date de fin est antérieur à la date de début"
End If
End If
End Sub


ChrisV


"gerard" a écrit dans le message de news:
bu23ap$mqi$
bonsoir
je pensais avoir trouvé mais cela ne fonctionne pas tout a fait
la saisie se fait dans les cellule de format text sous la forme mm/yy
exemple 02/03
quand je saisie dans L144 pas de prob la verification est faite
des que je saisie dans M144, il effectue le controle mais me recontrole
les

deux plages L et M
et me repete deux fois la meme chose voici mon code


Private Sub Worksheet_Change(ByVal Target As Range)
' ' format des cellules
On Error Resume Next
If Union(Target, Range("L144:L148")).Address <> "" Then
'MsgBox CDate("01/" & Target.Value)
If CDate("01/" & Target.Value) > Now Then
MsgBox "Votre date de début est Futuriste"
End If
End If
If Union(Target, Range("M144:M148")).Address <> "" Then
If CDate("01/" & Target.Value) > Now Then
MsgBox "Votre date de fin est Futuriste"
End If
'MsgBox CDate("01/" & Target.Offset(0, -1))
If CDate("01/" & Target.Value) < CDate("01/" &
Target.Offset(0, -1))

Then
MsgBox "Votre date de fin est antérieur à la date de début"
End If
End If

End Sub

merci de votre aide
ge




Avatar
AV
je pensais avoir trouvé mais cela ne fonctionne pas tout a fait
la saisie se fait dans les cellule de format text sous la forme mm/yy


Indépendamment du fait que je trouve que c'est pas une bonne idée, comment
tester par rapport à la date du jour ?
C'est une comparaison au mois près ?
Bizarre....

AV

Avatar
gerard
salut
prend l'exemple si c'est un stage déjà effectué il ne faut pas que la date
de fin soit superieur a la date du jour !
a+
ge
"AV" a écrit dans le message de
news:
je pensais avoir trouvé mais cela ne fonctionne pas tout a fait
la saisie se fait dans les cellule de format text sous la forme mm/yy


Indépendamment du fait que je trouve que c'est pas une bonne idée, comment
tester par rapport à la date du jour ?
C'est une comparaison au mois près ?
Bizarre....

AV





Avatar
gerard
salut
merci ChrisV pour la methode intersect
c'est celle qui me semble la plus simple et la plus compréhensible a mon
niveau

On Error Resume Next
If Not Intersect(Target, Range("deB")) Is Nothing Then
If Target.Value = "" Then Exit Sub
If CDate("01/" & Target) > Now Then
MsgBox "Votre date de début est Futuriste"
Target.Select
End If
End If

j'ai juste rajouté deux lignes
1. pour revenir sur la cellule en faute Target.Select
2. si l'on vide la cellule avant de la resaisir il y a erreur type
imcompatible, avec on error je passe a la ligne suivante
et pour eviter un message qui n'a pas raison d'etre j'ai du rajouter au
debut If Target.Value = "" Then Exit Sub
voila

merci à ChrisV et à Jean-François
"ChrisV" a écrit dans le message de
news:
Bonjour Gérard,

Tu peux aussi utiliser la méthode Intersect...
(donc avec les plages de données dates début et de fin nommées
respectivement "deB" et "fiN")

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("deB")) Is Nothing Then
If CDate("01/" & Target) > Now Then
MsgBox "Votre date de début est Futuriste"
End If
End If
If Not Intersect(Target, Range("fiN")) Is Nothing Then
If CDate("01/" & Target) > Now Then
MsgBox "Votre date de début est Futuriste"
End If
If CDate("01/" & Target) < CDate("01/" & Target.Offset(0, -1))
Then

MsgBox "Votre date de fin est antérieur à la date de début"
End If
End If
End Sub


ChrisV


"gerard" a écrit dans le message de news:
bu23ap$mqi$
bonsoir
je pensais avoir trouvé mais cela ne fonctionne pas tout a fait
la saisie se fait dans les cellule de format text sous la forme mm/yy
exemple 02/03
quand je saisie dans L144 pas de prob la verification est faite
des que je saisie dans M144, il effectue le controle mais me recontrole
les

deux plages L et M
et me repete deux fois la meme chose voici mon code


Private Sub Worksheet_Change(ByVal Target As Range)
' ' format des cellules
On Error Resume Next
If Union(Target, Range("L144:L148")).Address <> "" Then
'MsgBox CDate("01/" & Target.Value)
If CDate("01/" & Target.Value) > Now Then
MsgBox "Votre date de début est Futuriste"
End If
End If
If Union(Target, Range("M144:M148")).Address <> "" Then
If CDate("01/" & Target.Value) > Now Then
MsgBox "Votre date de fin est Futuriste"
End If
'MsgBox CDate("01/" & Target.Offset(0, -1))
If CDate("01/" & Target.Value) < CDate("01/" &
Target.Offset(0, -1))

Then
MsgBox "Votre date de fin est antérieur à la date de début"
End If
End If

End Sub

merci de votre aide
ge








Avatar
AV
prend l'exemple si c'est un stage déjà effectué il ne faut pas que la date
de fin soit superieur a la date du jour !


C'est pas une réponse à mon interrogation mais puisque ça te va comme ça...

AV

Avatar
ChrisV
j'ai juste rajouté deux lignes


Très bien... Parfait ! ;-)


ChrisV


"gerard" a écrit dans le message de news:
bu31k3$de3$
salut
merci ChrisV pour la methode intersect
c'est celle qui me semble la plus simple et la plus compréhensible a mon
niveau

On Error Resume Next
If Not Intersect(Target, Range("deB")) Is Nothing Then
If Target.Value = "" Then Exit Sub
If CDate("01/" & Target) > Now Then
MsgBox "Votre date de début est Futuriste"
Target.Select
End If
End If

j'ai juste rajouté deux lignes
1. pour revenir sur la cellule en faute Target.Select
2. si l'on vide la cellule avant de la resaisir il y a erreur type
imcompatible, avec on error je passe a la ligne suivante
et pour eviter un message qui n'a pas raison d'etre j'ai du rajouter au
debut If Target.Value = "" Then Exit Sub
voila

merci à ChrisV et à Jean-François