OVH Cloud OVH Cloud

Validation de date

8 réponses
Avatar
JacquesH
Bonjour à toutes et tous,

Mes maigres compétences en VBA ont encore atteint leurs limites.
Voilà mon problème :

Je saisis une date dans une cellule et je souhaite vérifier qu'elle
est bien postérieure à celle d'une autre cellule.

Lorsque je valide cette cellule, si la date n'est pas correcte,
apparait une Msgbox :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Range("E5").Value < Range("C5").Value Then
MsgBox "Cette date doit être postérieure à la précédente"
End If

End Sub


Cela fonctionne bien sauf que E5 et C5 ne sont pas mes uniques
cellules à vérifier.

Comment faire pour que, quand je valide E6, la macro compare la date
à C6 (idem pour E7 - C7)....?

Merci par avance de votre aide

Jacques

8 réponses

Avatar
SL
Bonjour

Pourquoi utliser VBA alors qu'une validation de données suffit ?

sélectionner les cellules E5:Ex
données / validation / nombre entier / supérieur à / Å (sans $)
dans l'onglet alerte mettre le message voulu.

Stéphane

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

Bonjour à toutes et tous,

Mes maigres compétences en VBA ont encore atteint leurs limites. Voilà
mon problème :

Je saisis une date dans une cellule et je souhaite vérifier qu'elle
est bien postérieure à celle d'une autre cellule.

Lorsque je valide cette cellule, si la date n'est pas correcte,
apparait une Msgbox :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Range("E5").Value < Range("C5").Value Then
MsgBox "Cette date doit être postérieure à la précédente"
End If

End Sub


Cela fonctionne bien sauf que E5 et C5 ne sont pas mes uniques
cellules à vérifier.

Comment faire pour que, quand je valide E6, la macro compare la date
à C6 (idem pour E7 - C7)....?

Merci par avance de votre aide

Jacques






Avatar
JacquesH
Bonjour et merci pour ta réponse,

Effectivement, je ne l'avais pas fait car mes valeurs sont en réalité
des dates et je n'avais regardé que du côté des dates pour "Données
Validation".

Je viens de tester, cela fonctionne.

En revanche, au titre de ma formation, je suis toujours intéressé par
une solution VBA. Si tu as une solution...

Bonne journée

Bonjour

Pourquoi utliser VBA alors qu'une validation de données suffit ?

sélectionner les cellules E5:Ex
données / validation / nombre entier / supérieur à / Å (sans $)
dans l'onglet alerte mettre le message voulu.

Stéphane

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

Bonjour à toutes et tous,

Mes maigres compétences en VBA ont encore atteint leurs limites. Voilà
mon problème :

Je saisis une date dans une cellule et je souhaite vérifier qu'elle
est bien postérieure à celle d'une autre cellule.

Lorsque je valide cette cellule, si la date n'est pas correcte,
apparait une Msgbox :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Range("E5").Value < Range("C5").Value Then
MsgBox "Cette date doit être postérieure à la précédente"
End If

End Sub


Cela fonctionne bien sauf que E5 et C5 ne sont pas mes uniques
cellules à vérifier.

Comment faire pour que, quand je valide E6, la macro compare la date
à C6 (idem pour E7 - C7)....?

Merci par avance de votre aide

Jacques











Avatar
Jacky
Bonjour Jacques

En revanche, au titre de ma formation, je suis toujours intéressé par
une solution VBA. Si tu as une solution
Un truc du genre:

'--------
For i = 5 To 8 '***A adapter ***
If Range("E" & i).Value < Range("C" & i).Value Then
MsgBox "Cette date en E" & i & " doit être postérieure à C" & i
End If
Next
'----------
Salutations
JJ

Avatar
JacquesH
Bonjour et merci pour ta réponse,

C'est ce que je cherchais à faire et cela fonctionne.

En revanche, il faut gérer un petit problème car dès qu'il y a une date
validée dans une cellule de C, la Msgbox apparaît jusqu'à ce qu'on ait
saisi en E. Sais-tu le faire ?

Jacques

Bonjour Jacques


En revanche, au titre de ma formation, je suis toujours intéressé par
une solution VBA. Si tu as une solution


Un truc du genre:
'--------
For i = 5 To 8 '***A adapter ***
If Range("E" & i).Value < Range("C" & i).Value Then
MsgBox "Cette date en E" & i & " doit être postérieure à C" & i
End If
Next
'----------
Salutations
JJ





Avatar
Jacky
Euuh
Ca le fait pas ??
Ou alors j'ai pas compris....
JJ

"JacquesH" a écrit dans le message de
news:
Bonjour et merci pour ta réponse,

C'est ce que je cherchais à faire et cela fonctionne.

En revanche, il faut gérer un petit problème car dès qu'il y a une date
validée dans une cellule de C, la Msgbox apparaît jusqu'à ce qu'on ait
saisi en E. Sais-tu le faire ?

Jacques

Bonjour Jacques


En revanche, au titre de ma formation, je suis toujours intéressé par
une solution VBA. Si tu as une solution


Un truc du genre:
'--------
For i = 5 To 8 '***A adapter ***
If Range("E" & i).Value < Range("C" & i).Value Then
MsgBox "Cette date en E" & i & " doit être postérieure à C" & i
End If
Next
'----------
Salutations
JJ







Avatar
JacquesH
Je me suis sans doute mal exprimé.

Ce que je souhaite faire :
- J'ai une date en C5
- Je tape une date en E5
- Si la date en E5 est antérieure, alors Msgbox.
Cela la Macro le fait très bien.

En revanche, ce qui ne m'arrange pas trop :
- Je tape une date en C5
- Immédiatement la Msgbox apparait
Je souhaiterais qu'elle n'apparaisse que quand on valide une cellule de
la colonne E.

Est-ce plus clair ?

Merci par avance

Jacques


Euuh
Ca le fait pas ??
Ou alors j'ai pas compris....
JJ

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

Bonjour et merci pour ta réponse,

C'est ce que je cherchais à faire et cela fonctionne.

En revanche, il faut gérer un petit problème car dès qu'il y a une date
validée dans une cellule de C, la Msgbox apparaît jusqu'à ce qu'on ait
saisi en E. Sais-tu le faire ?

Jacques


Bonjour Jacques



En revanche, au titre de ma formation, je suis toujours intéressé par
une solution VBA. Si tu as une solution


Un truc du genre:
'--------
For i = 5 To 8 '***A adapter ***
If Range("E" & i).Value < Range("C" & i).Value Then
MsgBox "Cette date en E" & i & " doit être postérieure à C" & i
End If
Next
'----------
Salutations
JJ












Avatar
Jacky
Re..
OK
Change cette ligne
'--------
If Range("E" & i).Value < Range("C" & i).Value And Range("E" & i) <> ""
Then
'----------
JJ

"JacquesH" a écrit dans le message de
news:%
Je me suis sans doute mal exprimé.

Ce que je souhaite faire :
- J'ai une date en C5
- Je tape une date en E5
- Si la date en E5 est antérieure, alors Msgbox.
Cela la Macro le fait très bien.

En revanche, ce qui ne m'arrange pas trop :
- Je tape une date en C5
- Immédiatement la Msgbox apparait
Je souhaiterais qu'elle n'apparaisse que quand on valide une cellule de
la colonne E.

Est-ce plus clair ?

Merci par avance

Jacques


Euuh
Ca le fait pas ??
Ou alors j'ai pas compris....
JJ

"JacquesH" a écrit dans le message
de


news:

Bonjour et merci pour ta réponse,

C'est ce que je cherchais à faire et cela fonctionne.

En revanche, il faut gérer un petit problème car dès qu'il y a une date
validée dans une cellule de C, la Msgbox apparaît jusqu'à ce qu'on ait
saisi en E. Sais-tu le faire ?

Jacques


Bonjour Jacques



En revanche, au titre de ma formation, je suis toujours intéressé par
une solution VBA. Si tu as une solution


Un truc du genre:
'--------
For i = 5 To 8 '***A adapter ***
If Range("E" & i).Value < Range("C" & i).Value Then
MsgBox "Cette date en E" & i & " doit être postérieure à C" & i
End If
Next
'----------
Salutations
JJ














Avatar
JacquesH
OK, tout va bien.

Merci pour ton aide.

Jacques

Re..
OK
Change cette ligne
'--------
If Range("E" & i).Value < Range("C" & i).Value And Range("E" & i) <> ""
Then
'----------
JJ

"JacquesH" a écrit dans le message de
news:%

Je me suis sans doute mal exprimé.

Ce que je souhaite faire :
- J'ai une date en C5
- Je tape une date en E5
- Si la date en E5 est antérieure, alors Msgbox.
Cela la Macro le fait très bien.

En revanche, ce qui ne m'arrange pas trop :
- Je tape une date en C5
- Immédiatement la Msgbox apparait
Je souhaiterais qu'elle n'apparaisse que quand on valide une cellule de
la colonne E.

Est-ce plus clair ?

Merci par avance

Jacques



Euuh
Ca le fait pas ??
Ou alors j'ai pas compris....
JJ

"JacquesH" a écrit dans le message



de

news:


Bonjour et merci pour ta réponse,

C'est ce que je cherchais à faire et cela fonctionne.

En revanche, il faut gérer un petit problème car dès qu'il y a une date
validée dans une cellule de C, la Msgbox apparaît jusqu'à ce qu'on ait
saisi en E. Sais-tu le faire ?

Jacques



Bonjour Jacques




En revanche, au titre de ma formation, je suis toujours intéressé par
une solution VBA. Si tu as une solution


Un truc du genre:
'--------
For i = 5 To 8 '***A adapter ***
If Range("E" & i).Value < Range("C" & i).Value Then
MsgBox "Cette date en E" & i & " doit être postérieure à C" & i
End If
Next
'----------
Salutations
JJ