OVH Cloud OVH Cloud

Saisie controlée

9 réponses
Avatar
didierf
Bonjour,

Sans votre aide, vu mes connaissances, je risque d'avoir la solution de
mon problème beaucoup trop tard ...!

J'ai regardé un peu du côté de "target" avec l'évènement "change" mais
c'est un peu embrouillé dans ma tête !

Voilà le sujet : soit 3 colonnes dans une feuille d'un classeur.
actuellement 674 lignes ( de 3 cellules ) sont remplies.

à partir de la ligne 675 ( jusqu'à 65000... )

dans la colonne A on rentre la date du jour
dans la colonne B une référence (quelconque : pas d'intéret)
mais je veux (maintenant)faire dans la 3ème colonne un controle de
saisie ( simple, du genre : la somme des chiffres entrés doit etre
supérieure à 15, par exemple...)avec une msgbox en cas d'erreur la
signalant.

Certainement simple à réaliser pour des pros !

moi,j'en ai pour x heures !

merci
(ci possible, réponse en plus à l'email, une fois corrigé - merci )
--
************************
Pour m'écrire, enlever les trois dernières lettres du nom ( avant at)

9 réponses

Avatar
Youky
Salut,
Voici qui doit faire l'affaire
Youky

Private Sub Worksheet_Change(ByVal Target As Range)
If Selection.Count > 1 Then Exit Sub
If Target.Column <> 3 Then Exit Sub
If Target.Value = "" Then Exit Sub
If IsNumeric(Target.Value) Then
If Target.Value > 15 Then Exit Sub
End If
MsgBox "Le montant n'est pas correct"""
Target.Value = ""
Target.Select
End Sub

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

Bonjour,

Sans votre aide, vu mes connaissances, je risque d'avoir la solution de
mon problème beaucoup trop tard ...!

J'ai regardé un peu du côté de "target" avec l'évènement "change" mais
c'est un peu embrouillé dans ma tête !

Voilà le sujet : soit 3 colonnes dans une feuille d'un classeur.
actuellement 674 lignes ( de 3 cellules ) sont remplies.

à partir de la ligne 675 ( jusqu'à 65000... )

dans la colonne A on rentre la date du jour
dans la colonne B une référence (quelconque : pas d'intéret)
mais je veux (maintenant)faire dans la 3ème colonne un controle de
saisie ( simple, du genre : la somme des chiffres entrés doit etre
supérieure à 15, par exemple...)avec une msgbox en cas d'erreur la
signalant.

Certainement simple à réaliser pour des pros !

moi,j'en ai pour x heures !

merci
(ci possible, réponse en plus à l'email, une fois corrigé - merci )
--
************************
Pour m'écrire, enlever les trois dernières lettres du nom ( avant at)



Avatar
Youky
Ou encore j'avais oublié
Selectionne toute la partie concernée et Menu Donnée-Validation
Autoriser-nombre entier- superieur à 15 ou autres
Youky
"Youky" a écrit dans le message de news:

Salut,
Voici qui doit faire l'affaire
Youky

Private Sub Worksheet_Change(ByVal Target As Range)
If Selection.Count > 1 Then Exit Sub
If Target.Column <> 3 Then Exit Sub
If Target.Value = "" Then Exit Sub
If IsNumeric(Target.Value) Then
If Target.Value > 15 Then Exit Sub
End If
MsgBox "Le montant n'est pas correct"""
Target.Value = ""
Target.Select
End Sub

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

Bonjour,

Sans votre aide, vu mes connaissances, je risque d'avoir la solution de
mon problème beaucoup trop tard ...!

J'ai regardé un peu du côté de "target" avec l'évènement "change" mais
c'est un peu embrouillé dans ma tête !

Voilà le sujet : soit 3 colonnes dans une feuille d'un classeur.
actuellement 674 lignes ( de 3 cellules ) sont remplies.

à partir de la ligne 675 ( jusqu'à 65000... )

dans la colonne A on rentre la date du jour
dans la colonne B une référence (quelconque : pas d'intéret)
mais je veux (maintenant)faire dans la 3ème colonne un controle de
saisie ( simple, du genre : la somme des chiffres entrés doit etre
supérieure à 15, par exemple...)avec une msgbox en cas d'erreur la
signalant.

Certainement simple à réaliser pour des pros !

moi,j'en ai pour x heures !

merci
(ci possible, réponse en plus à l'email, une fois corrigé - merci )
--
************************
Pour m'écrire, enlever les trois dernières lettres du nom ( avant at)







Avatar
didierf
Le Sun, 02 Jul 2006 18:13:47 +0200, Youky a écrit :

Salut,
Voici qui doit faire l'affaire
Youky

Private Sub Worksheet_Change(ByVal Target As Range)
If Selection.Count > 1 Then Exit Sub
If Target.Column <> 3 Then Exit Sub
If Target.Value = "" Then Exit Sub
If IsNumeric(Target.Value) Then
If Target.Value > 15 Then Exit Sub
End If
MsgBox "Le montant n'est pas correct"""
Target.Value = ""
Target.Select
End Sub

Je te remercie, je teste ça à l'instant !


bonne semaine !

Avatar
didierf
Le Sun, 02 Jul 2006 18:21:32 +0200, Youky a écrit :

Ou encore j'avais oublié
Selectionne toute la partie concernée et Menu Donnée-Validation
Autoriser-nombre entier- superieur à 15 ou autres
Youky
"Youky" a écrit dans le message de news:

Salut,
Voici qui doit faire l'affaire
Youky

non ,en fait, je dois faire un calcul plus compliqué :



et j'ai un petit problème avec ton code , il semble que le "change" ne
devienne actif que lorsque je REVIENS sur la cellule concernée

( pour info ; voilà le calcul de validation : sur (!) une expression de
la forme 99AA99999&( & étant chiffre ou la lettre "x" ) , je veux diviser
par 11 le nombre de 5 chiffres, garder la partie décimale et la
multiplier par 11 ! en enfin transformer le 10 ( quand il arrive ! ) par
un X , et vérifier si ça correspond à & !!

Drôle, non ?


Avatar
Youky
Oui bien sur le worksheet-change n'a lieu que lors d'un changement de la
valeur d'une cellule de la colonne C
Donc en clair pour le déclenchement de la macro il faut changer la valeur
dans une cellule de la colonne C.
La chaleur et le rosé font leurs effets et en ce qui concerne tes calculs
(trés drôle en effet), je passe la main pour ce soir.
Ou encore, un bout de ton code pour ce calcul serais bienvenu pour mieux
démarrer
youky

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


Ou encore j'avais oublié
Selectionne toute la partie concernée et Menu Donnée-Validation
Autoriser-nombre entier- superieur à 15 ou autres
Youky
"Youky" a écrit dans le message de news:

Salut,
Voici qui doit faire l'affaire
Youky

non ,en fait, je dois faire un calcul plus compliqué :



et j'ai un petit problème avec ton code , il semble que le "change" ne
devienne actif que lorsque je REVIENS sur la cellule concernée

( pour info ; voilà le calcul de validation : sur (!) une expression de
la forme 99AA99999&( & étant chiffre ou la lettre "x" ) , je veux diviser
par 11 le nombre de 5 chiffres, garder la partie décimale et la
multiplier par 11 ! en enfin transformer le 10 ( quand il arrive ! ) par
un X , et vérifier si ça correspond à & !!

Drôle, non ?







Avatar
Papiauche
Amusant, malgré la chaleur

Valeur 99AA99999& en C1
1 si vrai
0 si faux

=SI(STXT(C1;10;1)=SI((STXT(C1;5;5)-ENT(STXT(C1;5;5)/11)*11);"x";TEXTE(STXT(C1;5;5)-11*(ENT(STXT(C1;5;5)/11));0));1;0)

A l'air de gérer les 10, les x, les lettres et les chiffres


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


Ou encore j'avais oublié
Selectionne toute la partie concernée et Menu Donnée-Validation
Autoriser-nombre entier- superieur à 15 ou autres
Youky
"Youky" a écrit dans le message de news:

Salut,
Voici qui doit faire l'affaire
Youky

non ,en fait, je dois faire un calcul plus compliqué :



et j'ai un petit problème avec ton code , il semble que le "change" ne
devienne actif que lorsque je REVIENS sur la cellule concernée

( pour info ; voilà le calcul de validation : sur (!) une expression de
la forme 99AA99999&( & étant chiffre ou la lettre "x" ) , je veux diviser
par 11 le nombre de 5 chiffres, garder la partie décimale et la
multiplier par 11 ! en enfin transformer le 10 ( quand il arrive ! ) par
un X , et vérifier si ça correspond à & !!

Drôle, non ?







Avatar
didierf
Le Mon, 03 Jul 2006 18:03:21 +0200, Papiauche a écrit :

Amusant, malgré la chaleur

Valeur 99AA99999& en C1
1 si vrai
0 si faux

=SI(STXT(C1;10;1)=SI((STXT(C1;5;5)-ENT(STXT(C1;5;5)/11)*11);"x";TEXTE(STXT(C1;5;5)-11*(ENT(STXT(C1;5;5)/11));0));1;0)

A l'air de gérer les 10, les x, les lettres et les chiffres


Bondiou ! elle est belle, celle là !

je teste
;-)
--
************************
Pour m'écrire, enlever les trois dernières lettres du nom ( avant at)

Avatar
didierf
Le Sun, 02 Jul 2006 22:10:05 +0200, Youky a écrit :

Oui bien sur le worksheet-change n'a lieu que lors d'un changement de la
valeur d'une cellule de la colonne C
Donc en clair pour le déclenchement de la macro il faut changer la valeur
dans une cellule de la colonne C.
La chaleur et le rosé font leurs effets et en ce qui concerne tes calculs
(trés drôle en effet), je passe la main pour ce soir.
Ou encore, un bout de ton code pour ce calcul serais bienvenu pour mieux
démarrer
youky



bonsoir Youky


Comme tu souhaitais, je te joins ,en fait le résultat, de ce problème :
J'avais , malencontreusement sélectionné selectionchange au lieu de
change : c'est pourquoi j'avais un petit problème !

Le calcul est détaillée avec plusieurs variables, car je voulais suivre
facilement le fonctionnement du code -- au dernière nouvelles, en
position réelle de travail, ça a l'air de marcher !




Private Sub Worksheet_Change(ByVal Target As Excel.Range)

If Selection.Count > 1 Then Exit Sub
If Target.Column <> 3 Then Exit Sub
If Target.Value = "" Then Exit Sub
If Len(Target.Value) > 9 Then


cle = (Right(Target.Value, 1))
If cle = "x" Or cle = "X" Then
cle = 10
Else
cle = Val(cle)
End If

extrait = Mid(Target.Value, 5, 5)

division = extrait / 11
partie_decimale = division - Int(division)

multiplication = CInt(partie_decimale * 11)

If multiplication <> cle Then
MsgBox "Erreur de saisie"
Target.Value = ""
Target.Select
End If

End If



End Sub

merci encore de m'avoir permis de démarrer
je trinque un verre de rosé, à ta santé ;-)
a+
--
************************
Pour m'écrire, enlever les trois dernières lettres du nom ( avant at)


Avatar
Youky
Tching, tching.... Didier,
Rien à redire sur ton calcul, je vois que tu connais bien la technique.
Fait toujours aussi chaud , mais tant que le rosé est frais.........
Santé....
Youky

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


Oui bien sur le worksheet-change n'a lieu que lors d'un changement de la
valeur d'une cellule de la colonne C
Donc en clair pour le déclenchement de la macro il faut changer la valeur
dans une cellule de la colonne C.
La chaleur et le rosé font leurs effets et en ce qui concerne tes calculs
(trés drôle en effet), je passe la main pour ce soir.
Ou encore, un bout de ton code pour ce calcul serais bienvenu pour mieux
démarrer
youky



bonsoir Youky


Comme tu souhaitais, je te joins ,en fait le résultat, de ce problème :
J'avais , malencontreusement sélectionné selectionchange au lieu de
change : c'est pourquoi j'avais un petit problème !

Le calcul est détaillée avec plusieurs variables, car je voulais suivre
facilement le fonctionnement du code -- au dernière nouvelles, en
position réelle de travail, ça a l'air de marcher !




Private Sub Worksheet_Change(ByVal Target As Excel.Range)

If Selection.Count > 1 Then Exit Sub
If Target.Column <> 3 Then Exit Sub
If Target.Value = "" Then Exit Sub
If Len(Target.Value) > 9 Then


cle = (Right(Target.Value, 1))
If cle = "x" Or cle = "X" Then
cle = 10
Else
cle = Val(cle)
End If

extrait = Mid(Target.Value, 5, 5)

division = extrait / 11
partie_decimale = division - Int(division)

multiplication = CInt(partie_decimale * 11)

If multiplication <> cle Then
MsgBox "Erreur de saisie"
Target.Value = ""
Target.Select
End If

End If



End Sub

merci encore de m'avoir permis de démarrer
je trinque un verre de rosé, à ta santé ;-)
a+
--
************************
Pour m'écrire, enlever les trois dernières lettres du nom ( avant at)