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

Interdire la saisie de données dans des cellules

12 réponses
Avatar
Luc
Bonjour à tous,

Je souhaiterais controler la saisie de certaines données (heures) dans les
cases d'un planning. Par exemple, interdire la saisie d'une heure comprise
entre 00:00 et 12:00 dans certaines cases ou entre 12:01 et 24:00 dans
d'autres.
Evidemment, par la validation des données de la barre d'outil excel, ça
marche très bien sauf que je souhaite établir un planning par semaine sur 1
an (30 salariés, 7 jours et 52 semaines, donc 52 répétitions du tableau de la
première semaine sur une feuille) et le nombre de validations étant
apparemment limité, cela crée une erreur:
"Impossible d'enregistrer la totalité des données et mises en formes
apportées récemment à "nomdufichier.xls".

Est-possible en VBA ? De quelle manière ?

Je vous remercie d'avance pour votre aide

10 réponses

1 2
Avatar
Jacky
Bonjour,

Ceci peut-être:

Dans le module de la feuille en question.
Plage a5:g5 à adapter selon les plages de saisie
'----------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
x = Format(Target, "hh:mm")
If Not Application.Intersect(Target, [a5:d5]) Is Nothing Then
If x > "00:00" And x <= "12:00" Then MsgBox "Saisie 1 incorrecte"
End If
If Not Application.Intersect(Target, [e5:g5]) Is Nothing Then
If x > "12:00" And x <= "23:59" Then MsgBox "Saisie 2 incorrecte"
End If
End Sub
'------------
Salutations
JJ
"Luc" a écrit dans le message de news:

Bonjour à tous,

Je souhaiterais controler la saisie de certaines données (heures) dans les
cases d'un planning. Par exemple, interdire la saisie d'une heure comprise
entre 00:00 et 12:00 dans certaines cases ou entre 12:01 et 24:00 dans
d'autres.
Evidemment, par la validation des données de la barre d'outil excel, ça
marche très bien sauf que je souhaite établir un planning par semaine sur
1
an (30 salariés, 7 jours et 52 semaines, donc 52 répétitions du tableau de
la
première semaine sur une feuille) et le nombre de validations étant
apparemment limité, cela crée une erreur:
"Impossible d'enregistrer la totalité des données et mises en formes
apportées récemment à "nomdufichier.xls".

Est-possible en VBA ? De quelle manière ?

Je vous remercie d'avance pour votre aide




Avatar
Luc
Je démarre avec VBA. J'ai donc copier mot a mot le texte que tu m'as inscrit,
en remplacant bien sûr les coordonnées des cellules par celles de mon
tableau, mais je n'obtiens aucun message d'erreur.
Pourtant, ton texte peut être retranscrit tel quel apparemment non ?
Je ne comprends pas pourquoi cela ne marche pas


Bonjour,

Ceci peut-être:

Dans le module de la feuille en question.
Plage a5:g5 à adapter selon les plages de saisie
'----------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
x = Format(Target, "hh:mm")
If Not Application.Intersect(Target, [a5:d5]) Is Nothing Then
If x > "00:00" And x <= "12:00" Then MsgBox "Saisie 1 incorrecte"
End If
If Not Application.Intersect(Target, [e5:g5]) Is Nothing Then
If x > "12:00" And x <= "23:59" Then MsgBox "Saisie 2 incorrecte"
End If
End Sub
'------------
Salutations
JJ
"Luc" a écrit dans le message de news:

Bonjour à tous,

Je souhaiterais controler la saisie de certaines données (heures) dans les
cases d'un planning. Par exemple, interdire la saisie d'une heure comprise
entre 00:00 et 12:00 dans certaines cases ou entre 12:01 et 24:00 dans
d'autres.
Evidemment, par la validation des données de la barre d'outil excel, ça
marche très bien sauf que je souhaite établir un planning par semaine sur
1
an (30 salariés, 7 jours et 52 semaines, donc 52 répétitions du tableau de
la
première semaine sur une feuille) et le nombre de validations étant
apparemment limité, cela crée une erreur:
"Impossible d'enregistrer la totalité des données et mises en formes
apportées récemment à "nomdufichier.xls".

Est-possible en VBA ? De quelle manière ?

Je vous remercie d'avance pour votre aide









Avatar
JLuc
*Bonjour Luc*,
C'est normal, les tests sont fait a l'envers lol.
Tu devrais avoir le message si tu saisis une bonne valeur

Essaie :

If Not Application.Intersect(Target, [a5:d5]) Is Nothing Then
If Not(x > "00:00" And x <= "12:00") Then MsgBox "Saisie 1
incorrecte"
End If
If Not Application.Intersect(Target, [e5:g5]) Is Nothing Then
If Not(x > "12:00" And x <= "23:59") Then MsgBox "Saisie 2
incorrecte"
End If


Je démarre avec VBA. J'ai donc copier mot a mot le texte que tu m'as inscrit,
en remplacant bien sûr les coordonnées des cellules par celles de mon
tableau, mais je n'obtiens aucun message d'erreur.
Pourtant, ton texte peut être retranscrit tel quel apparemment non ?
Je ne comprends pas pourquoi cela ne marche pas


Bonjour,

Ceci peut-être:

Dans le module de la feuille en question.
Plage a5:g5 à adapter selon les plages de saisie
'----------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
x = Format(Target, "hh:mm")
If Not Application.Intersect(Target, [a5:d5]) Is Nothing Then
If x > "00:00" And x <= "12:00" Then MsgBox "Saisie 1 incorrecte"
End If
If Not Application.Intersect(Target, [e5:g5]) Is Nothing Then
If x > "12:00" And x <= "23:59" Then MsgBox "Saisie 2 incorrecte"
End If
End Sub
'------------
Salutations
JJ
"Luc" a écrit dans le message de news:

Bonjour à tous,

Je souhaiterais controler la saisie de certaines données (heures) dans les
cases d'un planning. Par exemple, interdire la saisie d'une heure comprise
entre 00:00 et 12:00 dans certaines cases ou entre 12:01 et 24:00 dans
d'autres.
Evidemment, par la validation des données de la barre d'outil excel, ça
marche très bien sauf que je souhaite établir un planning par semaine sur
1
an (30 salariés, 7 jours et 52 semaines, donc 52 répétitions du tableau de
la
première semaine sur une feuille) et le nombre de validations étant
apparemment limité, cela crée une erreur:
"Impossible d'enregistrer la totalité des données et mises en formes
apportées récemment à "nomdufichier.xls".

Est-possible en VBA ? De quelle manière ?

Je vous remercie d'avance pour votre aide









--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O



Avatar
Luc
Voilà exactement ce que j'ai mis dans VBA à la suite de mes macros existantes :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
x = Format(Target, "hh:mm")
If Not Application.Intersect(Target, [d46:d48]) Is Nothing Then
If Not (x > "00:00" And x <= "12:00") Then MsgBox "Saisie 1 "
incorrecte ""
End If
If Not Application.Intersect(Target, [e46:e48]) Is Nothing Then
If Not (x > "12:00" And x <= "23:59") Then MsgBox "Saisie 2 "
incorrecte ""
End If
End Sub

Toujours pas de messages. Je suis désolé d'insister mas je me mets tout
doucement à VBA et c'est loin d'être facile au début.




*Bonjour Luc*,
C'est normal, les tests sont fait a l'envers lol.
Tu devrais avoir le message si tu saisis une bonne valeur

Essaie :

If Not Application.Intersect(Target, [a5:d5]) Is Nothing Then
If Not(x > "00:00" And x <= "12:00") Then MsgBox "Saisie 1
incorrecte"
End If
If Not Application.Intersect(Target, [e5:g5]) Is Nothing Then
If Not(x > "12:00" And x <= "23:59") Then MsgBox "Saisie 2
incorrecte"
End If


Je démarre avec VBA. J'ai donc copier mot a mot le texte que tu m'as inscrit,
en remplacant bien sûr les coordonnées des cellules par celles de mon
tableau, mais je n'obtiens aucun message d'erreur.
Pourtant, ton texte peut être retranscrit tel quel apparemment non ?
Je ne comprends pas pourquoi cela ne marche pas


Bonjour,

Ceci peut-être:

Dans le module de la feuille en question.
Plage a5:g5 à adapter selon les plages de saisie
'----------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
x = Format(Target, "hh:mm")
If Not Application.Intersect(Target, [a5:d5]) Is Nothing Then
If x > "00:00" And x <= "12:00" Then MsgBox "Saisie 1 incorrecte"
End If
If Not Application.Intersect(Target, [e5:g5]) Is Nothing Then
If x > "12:00" And x <= "23:59" Then MsgBox "Saisie 2 incorrecte"
End If
End Sub
'------------
Salutations
JJ
"Luc" a écrit dans le message de news:

Bonjour à tous,

Je souhaiterais controler la saisie de certaines données (heures) dans les
cases d'un planning. Par exemple, interdire la saisie d'une heure comprise
entre 00:00 et 12:00 dans certaines cases ou entre 12:01 et 24:00 dans
d'autres.
Evidemment, par la validation des données de la barre d'outil excel, ça
marche très bien sauf que je souhaite établir un planning par semaine sur
1
an (30 salariés, 7 jours et 52 semaines, donc 52 répétitions du tableau de
la
première semaine sur une feuille) et le nombre de validations étant
apparemment limité, cela crée une erreur:
"Impossible d'enregistrer la totalité des données et mises en formes
apportées récemment à "nomdufichier.xls".

Est-possible en VBA ? De quelle manière ?

Je vous remercie d'avance pour votre aide









--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O








Avatar
Jacky
Re...
Le code doit être placé dans le module de la feuille:
Clique droit sur l'onglet de la feuille puis choisir "visualiser le code" et
coller le code.
Voir ici:
http://cjoint.com/?iFiEKoQlgs
JJ


"Luc" a écrit dans le message de
news:
Voilà exactement ce que j'ai mis dans VBA à la suite de mes macros
existantes :


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
x = Format(Target, "hh:mm")
If Not Application.Intersect(Target, [d46:d48]) Is Nothing Then
If Not (x > "00:00" And x <= "12:00") Then MsgBox "Saisie 1 "
incorrecte ""
End If
If Not Application.Intersect(Target, [e46:e48]) Is Nothing Then
If Not (x > "12:00" And x <= "23:59") Then MsgBox "Saisie 2 "
incorrecte ""
End If
End Sub

Toujours pas de messages. Je suis désolé d'insister mas je me mets tout
doucement à VBA et c'est loin d'être facile au début.




*Bonjour Luc*,
C'est normal, les tests sont fait a l'envers lol.
Tu devrais avoir le message si tu saisis une bonne valeur

Essaie :

If Not Application.Intersect(Target, [a5:d5]) Is Nothing Then
If Not(x > "00:00" And x <= "12:00") Then MsgBox "Saisie 1
incorrecte"
End If
If Not Application.Intersect(Target, [e5:g5]) Is Nothing Then
If Not(x > "12:00" And x <= "23:59") Then MsgBox "Saisie 2
incorrecte"
End If


Je démarre avec VBA. J'ai donc copier mot a mot le texte que tu m'as
inscrit,



en remplacant bien sûr les coordonnées des cellules par celles de mon
tableau, mais je n'obtiens aucun message d'erreur.
Pourtant, ton texte peut être retranscrit tel quel apparemment non ?
Je ne comprends pas pourquoi cela ne marche pas


Bonjour,

Ceci peut-être:

Dans le module de la feuille en question.
Plage a5:g5 à adapter selon les plages de saisie
'----------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
x = Format(Target, "hh:mm")
If Not Application.Intersect(Target, [a5:d5]) Is Nothing Then
If x > "00:00" And x <= "12:00" Then MsgBox "Saisie 1 incorrecte"
End If
If Not Application.Intersect(Target, [e5:g5]) Is Nothing Then
If x > "12:00" And x <= "23:59" Then MsgBox "Saisie 2 incorrecte"
End If
End Sub
'------------
Salutations
JJ
"Luc" a écrit dans le message de
news:





Bonjour à tous,

Je souhaiterais controler la saisie de certaines données (heures)
dans les





cases d'un planning. Par exemple, interdire la saisie d'une heure
comprise





entre 00:00 et 12:00 dans certaines cases ou entre 12:01 et 24:00
dans





d'autres.
Evidemment, par la validation des données de la barre d'outil excel,
ça





marche très bien sauf que je souhaite établir un planning par
semaine sur





1
an (30 salariés, 7 jours et 52 semaines, donc 52 répétitions du
tableau de





la
première semaine sur une feuille) et le nombre de validations étant
apparemment limité, cela crée une erreur:
"Impossible d'enregistrer la totalité des données et mises en formes
apportées récemment à "nomdufichier.xls".

Est-possible en VBA ? De quelle manière ?

Je vous remercie d'avance pour votre aide









--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O










Avatar
Luc
Fantastique !!! Ca marche. je vous remercie encore.

Je ne voudrais pas abuser mais est il possible
- Que ces message soit bloquant pour obliger l'utilisateur à corriger sa
saisie
- Qu'il ne s'applique qu'aux saisies d'heures (ou de variables de ce type).
En effet, sur les mêmes colonnes (dans d'autres cases), l'utilisateur peut
être amené à saisir par un bouton macro des mots comme "congés" ou "Maladie".



Re...
Le code doit être placé dans le module de la feuille:
Clique droit sur l'onglet de la feuille puis choisir "visualiser le code" et
coller le code.
Voir ici:
http://cjoint.com/?iFiEKoQlgs
JJ


"Luc" a écrit dans le message de
news:
Voilà exactement ce que j'ai mis dans VBA à la suite de mes macros
existantes :


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
x = Format(Target, "hh:mm")
If Not Application.Intersect(Target, [d46:d48]) Is Nothing Then
If Not (x > "00:00" And x <= "12:00") Then MsgBox "Saisie 1 "
incorrecte ""
End If
If Not Application.Intersect(Target, [e46:e48]) Is Nothing Then
If Not (x > "12:00" And x <= "23:59") Then MsgBox "Saisie 2 "
incorrecte ""
End If
End Sub

Toujours pas de messages. Je suis désolé d'insister mas je me mets tout
doucement à VBA et c'est loin d'être facile au début.




*Bonjour Luc*,
C'est normal, les tests sont fait a l'envers lol.
Tu devrais avoir le message si tu saisis une bonne valeur

Essaie :

If Not Application.Intersect(Target, [a5:d5]) Is Nothing Then
If Not(x > "00:00" And x <= "12:00") Then MsgBox "Saisie 1
incorrecte"
End If
If Not Application.Intersect(Target, [e5:g5]) Is Nothing Then
If Not(x > "12:00" And x <= "23:59") Then MsgBox "Saisie 2
incorrecte"
End If


Je démarre avec VBA. J'ai donc copier mot a mot le texte que tu m'as
inscrit,



en remplacant bien sûr les coordonnées des cellules par celles de mon
tableau, mais je n'obtiens aucun message d'erreur.
Pourtant, ton texte peut être retranscrit tel quel apparemment non ?
Je ne comprends pas pourquoi cela ne marche pas


Bonjour,

Ceci peut-être:

Dans le module de la feuille en question.
Plage a5:g5 à adapter selon les plages de saisie
'----------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
x = Format(Target, "hh:mm")
If Not Application.Intersect(Target, [a5:d5]) Is Nothing Then
If x > "00:00" And x <= "12:00" Then MsgBox "Saisie 1 incorrecte"
End If
If Not Application.Intersect(Target, [e5:g5]) Is Nothing Then
If x > "12:00" And x <= "23:59" Then MsgBox "Saisie 2 incorrecte"
End If
End Sub
'------------
Salutations
JJ
"Luc" a écrit dans le message de
news:





Bonjour à tous,

Je souhaiterais controler la saisie de certaines données (heures)
dans les





cases d'un planning. Par exemple, interdire la saisie d'une heure
comprise





entre 00:00 et 12:00 dans certaines cases ou entre 12:01 et 24:00
dans





d'autres.
Evidemment, par la validation des données de la barre d'outil excel,
ça





marche très bien sauf que je souhaite établir un planning par
semaine sur





1
an (30 salariés, 7 jours et 52 semaines, donc 52 répétitions du
tableau de





la
première semaine sur une feuille) et le nombre de validations étant
apparemment limité, cela crée une erreur:
"Impossible d'enregistrer la totalité des données et mises en formes
apportées récemment à "nomdufichier.xls".

Est-possible en VBA ? De quelle manière ?

Je vous remercie d'avance pour votre aide









--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O















Avatar
JLuc
Luc avait soumis l'idée :
Fantastique !!! Ca marche. je vous remercie encore.

Je ne voudrais pas abuser mais est il possible
- Que ces message soit bloquant pour obliger l'utilisateur à corriger sa
saisie
- Qu'il ne s'applique qu'aux saisies d'heures (ou de variables de ce type).
En effet, sur les mêmes colonnes (dans d'autres cases), l'utilisateur peut
être amené à saisir par un bouton macro des mots comme "congés" ou "Maladie".
Apres le message de mauvaise saisie, tu met :

Target.select






Re...
Le code doit être placé dans le module de la feuille:
Clique droit sur l'onglet de la feuille puis choisir "visualiser le code" et
coller le code.
Voir ici:
http://cjoint.com/?iFiEKoQlgs
JJ


"Luc" a écrit dans le message de
news:
Voilà exactement ce que j'ai mis dans VBA à la suite de mes macros
existantes :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
x = Format(Target, "hh:mm")
If Not Application.Intersect(Target, [d46:d48]) Is Nothing Then
If Not (x > "00:00" And x <= "12:00") Then MsgBox "Saisie 1 "
incorrecte ""
End If
If Not Application.Intersect(Target, [e46:e48]) Is Nothing Then
If Not (x > "12:00" And x <= "23:59") Then MsgBox "Saisie 2 "
incorrecte ""
End If
End Sub

Toujours pas de messages. Je suis désolé d'insister mas je me mets tout
doucement à VBA et c'est loin d'être facile au début.




*Bonjour Luc*,
C'est normal, les tests sont fait a l'envers lol.
Tu devrais avoir le message si tu saisis une bonne valeur

Essaie :

If Not Application.Intersect(Target, [a5:d5]) Is Nothing Then
If Not(x > "00:00" And x <= "12:00") Then MsgBox "Saisie 1
incorrecte"
End If
If Not Application.Intersect(Target, [e5:g5]) Is Nothing Then
If Not(x > "12:00" And x <= "23:59") Then MsgBox "Saisie 2
incorrecte"
End If


Je démarre avec VBA. J'ai donc copier mot a mot le texte que tu m'as
inscrit, en remplacant bien sûr les coordonnées des cellules par celles
de mon tableau, mais je n'obtiens aucun message d'erreur.
Pourtant, ton texte peut être retranscrit tel quel apparemment non ?
Je ne comprends pas pourquoi cela ne marche pas


Bonjour,

Ceci peut-être:

Dans le module de la feuille en question.
Plage a5:g5 à adapter selon les plages de saisie
'----------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
x = Format(Target, "hh:mm")
If Not Application.Intersect(Target, [a5:d5]) Is Nothing Then
If x > "00:00" And x <= "12:00" Then MsgBox "Saisie 1 incorrecte"
End If
If Not Application.Intersect(Target, [e5:g5]) Is Nothing Then
If x > "12:00" And x <= "23:59" Then MsgBox "Saisie 2 incorrecte"
End If
End Sub
'------------
Salutations
JJ
"Luc" a écrit dans le message de news:

Bonjour à tous,

Je souhaiterais controler la saisie de certaines données (heures) dans
les cases d'un planning. Par exemple, interdire la saisie d'une heure
comprise entre 00:00 et 12:00 dans certaines cases ou entre 12:01 et
24:00 dans d'autres.
Evidemment, par la validation des données de la barre d'outil excel, ça
marche très bien sauf que je souhaite établir un planning par semaine
sur 1
an (30 salariés, 7 jours et 52 semaines, donc 52 répétitions du tableau
de la
première semaine sur une feuille) et le nombre de validations étant
apparemment limité, cela crée une erreur:
"Impossible d'enregistrer la totalité des données et mises en formes
apportées récemment à "nomdufichier.xls".

Est-possible en VBA ? De quelle manière ?

Je vous remercie d'avance pour votre aide









--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O











--
JLuc







Avatar
Jacky
Re..
Change les conditions de cette façon:
'--------
If Not Application.Intersect(Target, [d46:d48]) Is Nothing Then
If Not (x > "00:00" And x <= "12:00") Then
MsgBox "Saisie 1 incorrecte "
Target.Select
End If
End If
'---------
idem pour l'autre.
Ceci re-sélectionne la cellule tant que la saisie ne remplie pas la
condition.
JJ

"Luc" a écrit dans le message de
news:
Fantastique !!! Ca marche. je vous remercie encore.

Je ne voudrais pas abuser mais est il possible
- Que ces message soit bloquant pour obliger l'utilisateur à corriger sa
saisie
- Qu'il ne s'applique qu'aux saisies d'heures (ou de variables de ce
type).

En effet, sur les mêmes colonnes (dans d'autres cases), l'utilisateur peut
être amené à saisir par un bouton macro des mots comme "congés" ou
"Maladie".




Re...
Le code doit être placé dans le module de la feuille:
Clique droit sur l'onglet de la feuille puis choisir "visualiser le
code" et


coller le code.
Voir ici:
http://cjoint.com/?iFiEKoQlgs
JJ


"Luc" a écrit dans le message de
news:
Voilà exactement ce que j'ai mis dans VBA à la suite de mes macros
existantes :


Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
x = Format(Target, "hh:mm")
If Not Application.Intersect(Target, [d46:d48]) Is Nothing Then
If Not (x > "00:00" And x <= "12:00") Then MsgBox "Saisie 1 "
incorrecte ""
End If
If Not Application.Intersect(Target, [e46:e48]) Is Nothing Then
If Not (x > "12:00" And x <= "23:59") Then MsgBox "Saisie 2 "
incorrecte ""
End If
End Sub

Toujours pas de messages. Je suis désolé d'insister mas je me mets
tout



doucement à VBA et c'est loin d'être facile au début.




*Bonjour Luc*,
C'est normal, les tests sont fait a l'envers lol.
Tu devrais avoir le message si tu saisis une bonne valeur

Essaie :

If Not Application.Intersect(Target, [a5:d5]) Is Nothing Then
If Not(x > "00:00" And x <= "12:00") Then MsgBox "Saisie 1
incorrecte"
End If
If Not Application.Intersect(Target, [e5:g5]) Is Nothing Then
If Not(x > "12:00" And x <= "23:59") Then MsgBox "Saisie 2
incorrecte"
End If


Je démarre avec VBA. J'ai donc copier mot a mot le texte que tu
m'as





inscrit,
en remplacant bien sûr les coordonnées des cellules par celles de
mon





tableau, mais je n'obtiens aucun message d'erreur.
Pourtant, ton texte peut être retranscrit tel quel apparemment non
?





Je ne comprends pas pourquoi cela ne marche pas


Bonjour,

Ceci peut-être:

Dans le module de la feuille en question.
Plage a5:g5 à adapter selon les plages de saisie
'----------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
x = Format(Target, "hh:mm")
If Not Application.Intersect(Target, [a5:d5]) Is Nothing Then
If x > "00:00" And x <= "12:00" Then MsgBox "Saisie 1
incorrecte"






End If
If Not Application.Intersect(Target, [e5:g5]) Is Nothing Then
If x > "12:00" And x <= "23:59" Then MsgBox "Saisie 2
incorrecte"






End If
End Sub
'------------
Salutations
JJ
"Luc" a écrit dans le message de
news:





Bonjour à tous,

Je souhaiterais controler la saisie de certaines données
(heures)







dans les
cases d'un planning. Par exemple, interdire la saisie d'une
heure







comprise
entre 00:00 et 12:00 dans certaines cases ou entre 12:01 et
24:00







dans
d'autres.
Evidemment, par la validation des données de la barre d'outil
excel,







ça
marche très bien sauf que je souhaite établir un planning par
semaine sur





1
an (30 salariés, 7 jours et 52 semaines, donc 52 répétitions du
tableau de





la
première semaine sur une feuille) et le nombre de validations
étant







apparemment limité, cela crée une erreur:
"Impossible d'enregistrer la totalité des données et mises en
formes







apportées récemment à "nomdufichier.xls".

Est-possible en VBA ? De quelle manière ?

Je vous remercie d'avance pour votre aide









--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O

















Avatar
Luc
Effectivement, ça remet le curseur dans la case de saisie, mais on peut
contourner l'erreur en placant le curseur dans une autre case. N'y a t-il pas
un moyen de bloquer carrément toute saisie tant que celle-ci n'est pas la
bonne ? Mais laisser la possibilité d'inscrire un texte à la place des heures
?


Luc avait soumis l'idée :
Fantastique !!! Ca marche. je vous remercie encore.

Je ne voudrais pas abuser mais est il possible
- Que ces message soit bloquant pour obliger l'utilisateur à corriger sa
saisie
- Qu'il ne s'applique qu'aux saisies d'heures (ou de variables de ce type).
En effet, sur les mêmes colonnes (dans d'autres cases), l'utilisateur peut
être amené à saisir par un bouton macro des mots comme "congés" ou "Maladie".
Apres le message de mauvaise saisie, tu met :

Target.select






Re...
Le code doit être placé dans le module de la feuille:
Clique droit sur l'onglet de la feuille puis choisir "visualiser le code" et
coller le code.
Voir ici:
http://cjoint.com/?iFiEKoQlgs
JJ


"Luc" a écrit dans le message de
news:
Voilà exactement ce que j'ai mis dans VBA à la suite de mes macros
existantes :

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
x = Format(Target, "hh:mm")
If Not Application.Intersect(Target, [d46:d48]) Is Nothing Then
If Not (x > "00:00" And x <= "12:00") Then MsgBox "Saisie 1 "
incorrecte ""
End If
If Not Application.Intersect(Target, [e46:e48]) Is Nothing Then
If Not (x > "12:00" And x <= "23:59") Then MsgBox "Saisie 2 "
incorrecte ""
End If
End Sub

Toujours pas de messages. Je suis désolé d'insister mas je me mets tout
doucement à VBA et c'est loin d'être facile au début.




*Bonjour Luc*,
C'est normal, les tests sont fait a l'envers lol.
Tu devrais avoir le message si tu saisis une bonne valeur

Essaie :

If Not Application.Intersect(Target, [a5:d5]) Is Nothing Then
If Not(x > "00:00" And x <= "12:00") Then MsgBox "Saisie 1
incorrecte"
End If
If Not Application.Intersect(Target, [e5:g5]) Is Nothing Then
If Not(x > "12:00" And x <= "23:59") Then MsgBox "Saisie 2
incorrecte"
End If


Je démarre avec VBA. J'ai donc copier mot a mot le texte que tu m'as
inscrit, en remplacant bien sûr les coordonnées des cellules par celles
de mon tableau, mais je n'obtiens aucun message d'erreur.
Pourtant, ton texte peut être retranscrit tel quel apparemment non ?
Je ne comprends pas pourquoi cela ne marche pas


Bonjour,

Ceci peut-être:

Dans le module de la feuille en question.
Plage a5:g5 à adapter selon les plages de saisie
'----------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
x = Format(Target, "hh:mm")
If Not Application.Intersect(Target, [a5:d5]) Is Nothing Then
If x > "00:00" And x <= "12:00" Then MsgBox "Saisie 1 incorrecte"
End If
If Not Application.Intersect(Target, [e5:g5]) Is Nothing Then
If x > "12:00" And x <= "23:59" Then MsgBox "Saisie 2 incorrecte"
End If
End Sub
'------------
Salutations
JJ
"Luc" a écrit dans le message de news:

Bonjour à tous,

Je souhaiterais controler la saisie de certaines données (heures) dans
les cases d'un planning. Par exemple, interdire la saisie d'une heure
comprise entre 00:00 et 12:00 dans certaines cases ou entre 12:01 et
24:00 dans d'autres.
Evidemment, par la validation des données de la barre d'outil excel, ça
marche très bien sauf que je souhaite établir un planning par semaine
sur 1
an (30 salariés, 7 jours et 52 semaines, donc 52 répétitions du tableau
de la
première semaine sur une feuille) et le nombre de validations étant
apparemment limité, cela crée une erreur:
"Impossible d'enregistrer la totalité des données et mises en formes
apportées récemment à "nomdufichier.xls".

Est-possible en VBA ? De quelle manière ?

Je vous remercie d'avance pour votre aide









--
____
( O | O )
--
_oooO_ JLuc _Oooo_

O-O











--
JLuc












Avatar
JLuc
Luc avait soumis l'idée :
Effectivement, ça remet le curseur dans la case de saisie, mais on peut
contourner l'erreur en placant le curseur dans une autre case. N'y a t-il pas
un moyen de bloquer carrément toute saisie tant que celle-ci n'est pas la
bonne ? Mais laisser la possibilité d'inscrire un texte à la place des heures
?

A part verifier les valeurs dans la plage avant la premiere ligne a

chaque fois qu'on change une cellule, je vois pas :/
Le probleme, c'est qu'a chaque changement dans une cellule de la
feuille, tu aura le test ce qui peut devenir lourd si la plage est
grande

--
JLuc

1 2