A voir également:
- Modifier code interdire entrée des chiffres
- Modifier dns - Guide
- Modifier liste déroulante excel - Guide
- Comment modifier un pdf - Guide
- Code asci - Guide
- Modifier code pin - Guide
5 réponses
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
26 mars 2020 à 14:07
26 mars 2020 à 14:07
Bonjour Dudulle, bonjour le forum,
Peut-être comme ça :
Peut-être comme ça :
Private TEST As Boolean Private Sub Worksheet_Change(ByVal Target As Range) Dim MSG As String If Intersect(Target, Range("H2:H90")) Is Nothing Then Exit Sub If Target.Count > 1 Then Exit Sub If TEST = True Then Exit Sub MSG = "Entrée non valide ! Veuillez recommencez." Select Case Len(Target.Value) Case Is > 2 TEST = True: Target.ClearContents: MsgBox MSG Case 2 If Target.Value = "00" Then TEST = True: Target.ClearContents: MsgBox MSG: Target.Select If Left(Target.Value, 1) = "0" Then Target.Value = Right(Target.Value, 1): TEST = False If IsNumeric(Target.Value) = False Then Target.Value = ClearContents: MsgBox MSG: Target.Select: TEST = False Case 1 If Target.Value = "0" Then TEST = True: Target.ClearContents: MsgBox MSG: Target.Select If IsNumeric(Target.Value) = False Then Target.Value = ClearContents: MsgBox MSG: Target.Select End Select If Target.Value = "" Then MsgBox "Seules sont autorisées les valeurs entières de 1 à 99": Target.Select: TEST = False End Sub
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
Modifié le 26 mars 2020 à 14:13
Modifié le 26 mars 2020 à 14:13
Bonjour,
Pourquoi passer par du VBA quand une simple validation de données (nombre entier de 1 à 99) est
suffisante !
Exemple : https://mon-partage.fr/f/IKDtNIiT/
Pourquoi passer par du VBA quand une simple validation de données (nombre entier de 1 à 99) est
suffisante !
Exemple : https://mon-partage.fr/f/IKDtNIiT/
yg_be
Messages postés
23412
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
28 décembre 2024
Ambassadeur
1 557
26 mars 2020 à 14:44
26 mars 2020 à 14:44
bonjour,
tu ne l'écris pas, mais je suppose que tu veux réagir au moment où une cellule est modifiée, et corriger cette cellule.
je pense que les lignes 4 et 5 ne servent à rien.
l'indentation de ton code n'est pas conforme, cela n'aide pas à le comprendre.
en ligne 18, tu utilises temp, alors que tu n'y a rien mis.
j'ai l'impression que tu utilises des nombres comme si c'était du texte.
comme tu fais une boucle avec sCell, il ne faut plus utiliser Target dans cette boucle.
commence par faire un cas simple, par exemple remplacer 2 par 3, cela t'aidera à comprendre.
tu ne l'écris pas, mais je suppose que tu veux réagir au moment où une cellule est modifiée, et corriger cette cellule.
je pense que les lignes 4 et 5 ne servent à rien.
l'indentation de ton code n'est pas conforme, cela n'aide pas à le comprendre.
en ligne 18, tu utilises temp, alors que tu n'y a rien mis.
j'ai l'impression que tu utilises des nombres comme si c'était du texte.
comme tu fais une boucle avec sCell, il ne faut plus utiliser Target dans cette boucle.
commence par faire un cas simple, par exemple remplacer 2 par 3, cela t'aidera à comprendre.
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
26 mars 2020 à 17:15
26 mars 2020 à 17:15
Bonjour le fil, bonjour le forum,
En effet la ligne 19 est une ineptie : Target.Value = Clearcontents ! À remplacer bien évidemment par : Target.ClearContents et ne pas oublier la ligne 1 hors macro en début du module.
Pour ma part les quelques tests que j'ai fait, sur les cellules H2 à H90, étaient satisfaisant.
Le code corrigé :
En effet la ligne 19 est une ineptie : Target.Value = Clearcontents ! À remplacer bien évidemment par : Target.ClearContents et ne pas oublier la ligne 1 hors macro en début du module.
Pour ma part les quelques tests que j'ai fait, sur les cellules H2 à H90, étaient satisfaisant.
Le code corrigé :
Private TEST As Boolean Private Sub Worksheet_Change(ByVal Target As Range) Dim MSG As String If Intersect(Target, Range("H2:H90")) Is Nothing Then Exit Sub If Target.Count > 1 Then Exit Sub If TEST = True Then Exit Sub MSG = "Entrée non valide ! Veuillez recommencez." Select Case Len(Target.Value) Case Is > 2 TEST = True: Target.ClearContents: MsgBox MSG Case 2 If Target.Value = "00" Then TEST = True: Target.ClearContents: MsgBox MSG: Target.Select If Left(Target.Value, 1) = "0" Then Target.Value = Right(Target.Value, 1): TEST = False If IsNumeric(Target.Value) = False Then Target.Value = ClearContents: MsgBox MSG: Target.Select: TEST = False Case 1 If Target.Value = "0" Then TEST = True: Target.ClearContents: MsgBox MSG: Target.Select If IsNumeric(Target.Value) = False Then Target.ClearContents: MsgBox MSG: Target.Select End Select If Target.Value = "" Then MsgBox "Seules sont autorisées les valeurs entières de 1 à 99": Target.Select: TEST = False End Sub
Re ThauTheme,
Merci pour la modification.
Mais quand je test de cette façon Ex:
Si j'entre dans la cellule un zéro 0 je valide par Enter comme ce n'ai pas bon, la cellule s"efface
et j'ai le message "Entrée non valide ! Veuillez recommencer" qui s'affiche, je fais ok dans le message, il s"efface
Puis un autre message s'affiche "Seules sont autorisées de 1 à 99" je fais de nouveau ok le message s"efface
et je peux corriger.
Et exactement la même chose quand j'entre deux zéros 00 ou bien si j'entre 3 chiffres 251 .
Voila je te remercie beaucoup pour ton aide.
Cdlt Dudulle
Merci pour la modification.
Mais quand je test de cette façon Ex:
Si j'entre dans la cellule un zéro 0 je valide par Enter comme ce n'ai pas bon, la cellule s"efface
et j'ai le message "Entrée non valide ! Veuillez recommencer" qui s'affiche, je fais ok dans le message, il s"efface
Puis un autre message s'affiche "Seules sont autorisées de 1 à 99" je fais de nouveau ok le message s"efface
et je peux corriger.
Et exactement la même chose quand j'entre deux zéros 00 ou bien si j'entre 3 chiffres 251 .
Voila je te remercie beaucoup pour ton aide.
Cdlt Dudulle
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
>
duduleray
27 mars 2020 à 11:50
27 mars 2020 à 11:50
Ben, ça fonctionne alors !... Tu voudrais quoi ? Je ne comprends pas où se situe le problème...
duduleray
>
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
27 mars 2020 à 11:57
27 mars 2020 à 11:57
Salut ThauTheme,
Merci pour la réponse,
J'ai du mal m'exprimer, en fait je ne veux pas autoriser l'entrée de un zéro , ni l'entrée de deux zéros , ni plus de deux chiffres, seul les chiffres de 1 à 99 me sont utiles
au mieux le signe (-) et (+) on peux interdire aussi
Merci pour ton aide, vu l'heure bon app a toi
Cdlt Dudulle
Merci pour la réponse,
J'ai du mal m'exprimer, en fait je ne veux pas autoriser l'entrée de un zéro , ni l'entrée de deux zéros , ni plus de deux chiffres, seul les chiffres de 1 à 99 me sont utiles
au mieux le signe (-) et (+) on peux interdire aussi
Merci pour ton aide, vu l'heure bon app a toi
Cdlt Dudulle
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
1 779
>
duduleray
Modifié le 27 mars 2020 à 12:55
Modifié le 27 mars 2020 à 12:55
Finalement tu veux une validation de données pour un nombre entier de 1 à 99, c'est ce que je t'ai proposé ici (sans macro), l'as-tu essayé ?
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
>
Patrice33740
Messages postés
8556
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
2 mars 2023
27 mars 2020 à 14:14
27 mars 2020 à 14:14
Re,
Oui Patrice, je suis comme toi, il me semble que c'est la solution la plus évidente et la plus simple.
Oui Patrice, je suis comme toi, il me semble que c'est la solution la plus évidente et la plus simple.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Salut yg_be,
merci pour ta réponse, c'est sympa.
Effectivement pour l'indentation, je n'ai plus le programme "INDENTER" qui faisait ça.
Je vais essayer de le retrouver et le réinstaller.
Tu ne l'écris pas, mais je suppose que tu veux réagir au moment où une cellule est modifiée, et corriger cette cellule.
Réponse: oui c'est bien ça.
Le premier code n'ai pas de moi et j'ai juste mis le code ci-dessous que je trouve bien car c'est paramétrable le message disparait automatiquement, nul besoin de cliquer sur "Ok"
je n'ai pas toucher aux tests
Donc ça ne fonctionne pas comme je le souhaitais.
Bonne après midi a toi, merci.
PS: d'ailleurs je viens d'essayer a nouveau le code de l'ami ThauTheme qui ne fonctionne pas non plus trouver d'autres erreurs.
Cdlt dudulle
merci pour ta réponse, c'est sympa.
Effectivement pour l'indentation, je n'ai plus le programme "INDENTER" qui faisait ça.
Je vais essayer de le retrouver et le réinstaller.
Tu ne l'écris pas, mais je suppose que tu veux réagir au moment où une cellule est modifiée, et corriger cette cellule.
Réponse: oui c'est bien ça.
Le premier code n'ai pas de moi et j'ai juste mis le code ci-dessous que je trouve bien car c'est paramétrable le message disparait automatiquement, nul besoin de cliquer sur "Ok"
CreateObject("Wscript.shell").Popup "Erreur cellule [" & sCell.Address(False, False) & "] :Non numérique", 2, vbInformation
je n'ai pas toucher aux tests
Donc ça ne fonctionne pas comme je le souhaitais.
Bonne après midi a toi, merci.
PS: d'ailleurs je viens d'essayer a nouveau le code de l'ami ThauTheme qui ne fonctionne pas non plus trouver d'autres erreurs.
Cdlt dudulle
Modifié le 26 mars 2020 à 15:26
Merci pour ta réponse et pour la modification du code.
J'ai une erreur a chaque ligne qui me génère " erreur de compilation & variable non définie".
Quand j'entre un chiffre qu'il soit bon ou mauvais, j'ai tous les messages qui s'affichent les uns après les autres.
Merci a toi et bonne après midi.
Cdlt dudulle