Compléter un test
Résolu/Fermé
A voir également:
- Compléter un test
- Test performance pc - Guide
- Test composant pc - Guide
- Redmi note 13 5g test - Accueil - Téléphones
- Test steam deck oled - Guide
- Test hdd - Télécharger - Informations & Diagnostic
7 réponses
jordane45
Messages postés
38446
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 février 2025
4 739
9 févr. 2020 à 17:59
9 févr. 2020 à 17:59
Bonjour,
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$F$31" And Target.Address <> "$F$32" And _ Target.Address <> "$F$33" And Target.Address <> "$F$34" Then Exit Sub Select Case Target.Value Case Is = 0 'Si zéro Application.EnableEvents = False Target.Value = "" Case Is <> "" 'Si cellule non vide With Target.Offset(0, 1) .Value = "Versement en attente" .Font.ColorIndex = 3 'Rouge End With Case Is = "" 'Si cellule vide With Target.Offset(0, 1) .Value = "Versement effectuer" .Font.ColorIndex = 4 'Vert End With Case Else Range("F31:F34").Value = "" Range("G31:G34").Value = "" End Select Application.EnableEvents = True End Sub
jordane45
Messages postés
38446
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 février 2025
4 739
10 févr. 2020 à 17:00
10 févr. 2020 à 17:00
Vu le nombre de cellules concernées par ton code... l'utilisation du SELECT ne pose aucun problème.
Lorsque tu as lu ce genre d'indication... c'est sur du traitement de centaines/millier de lignes ou les débutant code comme ci ils "manipulaient" le classeur à la souris au lieu de passer par les propriétés/méthodes des objets.
Toi tu veux positionner la souris.. donc.. faire un SELECT de cellule.
Lorsque tu as lu ce genre d'indication... c'est sur du traitement de centaines/millier de lignes ou les débutant code comme ci ils "manipulaient" le classeur à la souris au lieu de passer par les propriétés/méthodes des objets.
Toi tu veux positionner la souris.. donc.. faire un SELECT de cellule.
Re jordane45,
Merci pour la réponse, pour les chiffres négatifs c'est bon.
Mais
pour définir le focus sur une cellule utilise la propriété Select
Heu , pas tout compris, tu peux svp m'en dire plus comment et ou le placer.
Merci pour ton aide
Cdlt Raymond
Merci pour la réponse, pour les chiffres négatifs c'est bon.
Mais
pour définir le focus sur une cellule utilise la propriété Select
Heu , pas tout compris, tu peux svp m'en dire plus comment et ou le placer.
Merci pour ton aide
Cdlt Raymond
jordane45
Messages postés
38446
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 février 2025
4 739
9 févr. 2020 à 19:14
9 févr. 2020 à 19:14
Salut a tous, forum
Salut jordane45
Après maintes essais je n'arrive pas a terminer ce que je souhaitai faire.
Pas faute de chercher une solution mais ca marche pas.
je remets le fichier pour essais, j'ai mis ce que je rencontre comme soucis et donc
ce qui ne fonctionne pas.
Bonne journée et merci.
Cdlt Raymond
Lien pour le fichier
https://www.cjoint.com/c/JBkkb7mQaWY
Salut jordane45
Après maintes essais je n'arrive pas a terminer ce que je souhaitai faire.
Pas faute de chercher une solution mais ca marche pas.
je remets le fichier pour essais, j'ai mis ce que je rencontre comme soucis et donc
ce qui ne fonctionne pas.
Bonne journée et merci.
Cdlt Raymond
Lien pour le fichier
https://www.cjoint.com/c/JBkkb7mQaWY
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
jordane45
Messages postés
38446
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 février 2025
4 739
10 févr. 2020 à 11:26
10 févr. 2020 à 11:26
Bonjour,
Poster un fichier c'est bien.
Expliquer (dans le forum) le souci rencontré exactement ET montrer le code qui pose problème est mieux.
Pourquoi ? .. par ce que les soucis que tu rencontres peuvent interesser d'autres internautes... et le moteur de recherche n'est pas capable d'aller voir le texte explicatif que tu mets dans tes liens.
Brefs..
Ton souci semble être la "non" différenciation entre les cellules vides et les zéro.
Essaye ça :
NB: Vu que tu n'as pas essayé de gérer la position du curseur (via la méthode .Select que je t'ai donné avant...) je n'ai pas pris en compte cette demande.
Mais en gros... la réponse est simplement un truc du genre :
Poster un fichier c'est bien.
Expliquer (dans le forum) le souci rencontré exactement ET montrer le code qui pose problème est mieux.
Pourquoi ? .. par ce que les soucis que tu rencontres peuvent interesser d'autres internautes... et le moteur de recherche n'est pas capable d'aller voir le texte explicatif que tu mets dans tes liens.
Brefs..
Ton souci semble être la "non" différenciation entre les cellules vides et les zéro.
Essaye ça :
Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$F$31" And Target.Address <> "$F$32" And _ Target.Address <> "$F$33" And Target.Address <> "$F$34" Then Exit Sub Select Case Target.Value Case IsNumeric(Target.Value) And Target.Value = 0 And Not IsEmpty(Target.Value) = False 'Si zéro Application.EnableEvents = False Target.Value = "" Case Is < 0 'Si chiffre négatif Target.Value = "" Case Is <> "" 'Si cellule non vide With Target.Offset(0, 1) .Value = "Versement en attente" .Font.ColorIndex = 3 'Rouge End With Case Is = "" 'Si cellule vide With Target.Offset(0, 1) .Value = "Versement effectuer" .Font.ColorIndex = 4 'Vert End With Case Else: Range("F31:F34").Value = "" Range("G31:G34").Value = "" End Select Application.EnableEvents = True End Sub
NB: Vu que tu n'as pas essayé de gérer la position du curseur (via la méthode .Select que je t'ai donné avant...) je n'ai pas pris en compte cette demande.
Mais en gros... la réponse est simplement un truc du genre :
Target.Select
Re salut jordane45,
Merci pour ta réponse et la modification du fichier,
Pour te répondre du NB que tu me mets: dans le fichier joint et dans la bulle j'écris que j'ai bien consulter le lien attentivement que tu m'a proposer et que j'ai fait des essais divers par rapport a ce que j'ai pu comprendre mais hélas je n'ai pas compris le fonctionnement de "Select"
Pour "Target.Select" proposer je l'ai placer également a plusieurs endroits, mais ca plante.
'================
-1) Pour le test des chiffres négatifs, c'est pas bon, ca me mets Ex pour entrée " -5" affichage message "Versement effectuer" en vert, donc devrai rien se passer comme pour le zéro.
-2) Pour le zéro c'est bon, dans la situation actuelle.
Mais voila je fait mon possible mais je n'ai pas tes connaissances.
Merci a toi pour ton aide, bonne après midi.
Cdlt Raymond
Merci pour ta réponse et la modification du fichier,
Pour te répondre du NB que tu me mets: dans le fichier joint et dans la bulle j'écris que j'ai bien consulter le lien attentivement que tu m'a proposer et que j'ai fait des essais divers par rapport a ce que j'ai pu comprendre mais hélas je n'ai pas compris le fonctionnement de "Select"
Pour "Target.Select" proposer je l'ai placer également a plusieurs endroits, mais ca plante.
'================
-1) Pour le test des chiffres négatifs, c'est pas bon, ca me mets Ex pour entrée " -5" affichage message "Versement effectuer" en vert, donc devrai rien se passer comme pour le zéro.
-2) Pour le zéro c'est bon, dans la situation actuelle.
Mais voila je fait mon possible mais je n'ai pas tes connaissances.
Merci a toi pour ton aide, bonne après midi.
Cdlt Raymond
jordane45
Messages postés
38446
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 février 2025
4 739
10 févr. 2020 à 14:05
10 févr. 2020 à 14:05
Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$F$31" And Target.Address <> "$F$32" And _ Target.Address <> "$F$33" And Target.Address <> "$F$34" Then Exit Sub Application.EnableEvents = False ' désactive les autres évènements que pourraient déclencher ta macro Select Case Target.Value Case IsNumeric(Target.Value) And Target.Value = 0 And Not IsEmpty(Target.Value) = False 'Si zéro Target.Value = "" Target.Select Case Is < 0 'Si chiffre négatif Target.Value = "" Target.Select Case Is <> "" 'Si cellule non vide With Target.Offset(0, 1) .Value = "Versement en attente" .Font.ColorIndex = 3 'Rouge End With Case Is = "" 'Si cellule vide With Target.Offset(0, 1) .Value = "Versement effectuer" .Font.ColorIndex = 4 'Vert End With Case Else: Range("F31:F34").Value = "" Range("G31:G34").Value = "" End Select Application.EnableEvents = True End Sub
duduleray
>
jordane45
Messages postés
38446
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
28 février 2025
10 févr. 2020 à 15:50
10 févr. 2020 à 15:50
Re jordane45,
De nouveau merci pour le retour du fichier modifier, cette fois c'est bon pour moi.
plus de plantage ni d'erreur d'entrée.
Mais dans mes lectures sur "Case is" j'ai lu plusieurs fois qu'il n'était pas conseillé d'utiliser "Select" car cela ralenti le code.
Mais plutôt "Offset(0,1)" par exemple qui serait beaucoup plus rapide, tu en penses quoi ???
Sinon merci beaucoup pour ta patience qui a fini par payer, grâce a toi j'ai pu finir mon programme.
Bonne fin d'après midi et encore merci a toi pour ton savoir partager, ca été cool.
Bien cordialement Raymond
De nouveau merci pour le retour du fichier modifier, cette fois c'est bon pour moi.
plus de plantage ni d'erreur d'entrée.
Mais dans mes lectures sur "Case is" j'ai lu plusieurs fois qu'il n'était pas conseillé d'utiliser "Select" car cela ralenti le code.
Mais plutôt "Offset(0,1)" par exemple qui serait beaucoup plus rapide, tu en penses quoi ???
Sinon merci beaucoup pour ta patience qui a fini par payer, grâce a toi j'ai pu finir mon programme.
Bonne fin d'après midi et encore merci a toi pour ton savoir partager, ca été cool.
Bien cordialement Raymond
9 févr. 2020 à 18:44
Merci pour ta réponse rapide, c'est gentil a toi,
Donc pour les zéros ca fonctionne bien, merci.
Serait t'il possible d'interdire de rentrer aussi des chiffres négatifs qui me sont pas utiles du tout Ex: interdire -1 ou - 45
et la possibilité que le curseur reste ou revienne a gauche enfin qu'il reste en colonne F31:F34
car quand j'entre un chiffre plage F31:F34 le curseur se déplace d'une colonne a droite pour écrire le message et reste dans la cellule G31:G34
j'ai essayer un Target.Offset(0,-1) pour forcer le curseur a revenir d'une colonne a gauche donc plageF31:F34
Merci pour ton aide, je te souhaite la bonne soirée
Cdlt Raymond
9 févr. 2020 à 19:00
Pour interdire les nombres négatifs il suffit de vérifier si ils sont inférieurs à zéro