Excel-VBA instruction select case
Résolu
mod77
Messages postés
1284
Date d'inscription
Statut
Membre
Dernière intervention
-
mod77 Messages postés 1284 Date d'inscription Statut Membre Dernière intervention -
mod77 Messages postés 1284 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je voudrais avoir la correction des ligne où il ya " ? " SVP:
resultat = mesure / (debit * temps)
resultat = (resultat * 10) <------------- ? ici, "résultat" ne change pas et reste le même
Me.Controls("tbx4") = resultat que sur la ligne d'avant
Select Case resultat
Case 10 < resultat < 20 <------------ ? ici, même si "resultat" = 15 je n'ai pas "Ok!"
Me.Controls("tbx4") = "Ok!" d'afficher
Case Is > 20
End Select
Merci
Je voudrais avoir la correction des ligne où il ya " ? " SVP:
resultat = mesure / (debit * temps)
resultat = (resultat * 10) <------------- ? ici, "résultat" ne change pas et reste le même
Me.Controls("tbx4") = resultat que sur la ligne d'avant
Select Case resultat
Case 10 < resultat < 20 <------------ ? ici, même si "resultat" = 15 je n'ai pas "Ok!"
Me.Controls("tbx4") = "Ok!" d'afficher
Case Is > 20
End Select
Merci
A voir également:
- Excel-VBA instruction select case
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Aller à la ligne dans une case excel - Guide
12 réponses
Bonjour,
Au passage :
Contrôler que la valeur de résultat est correcte ici:
Salutations.
Le Pingou
Au passage :
Case 10 To 20
Contrôler que la valeur de résultat est correcte ici:
resultat = mesure / (debit * temps)
Salutations.
Le Pingou
Bonjour Le Pingou,
J'ai essayé votre formule, elle fonctionne mais aussi pour des valeurs incorrectes
voici mon code:
Private Sub tbx3_Change()
mesure = Me.Controls("tbx3") 'je récupère ici un chiffre, "2" par exemple
Sheets("Grille 1").Range("C4") = mesure
Select Case mesure 'min = 10 et Max = 20
Case Is < min <------------------------ jamais, le programme passe ici !
Me.Controls("tbx4") = "Débit correct" même pour "mesure = 6" ?
Case min To max
Me.Controls("tbx4") = "10<Debit<20"
Case Is > Max
Me.Controls("tbx4") = "Debit>20"
End Select
Je ne vois pas pourquoi, Pouvez-vous m'aider SVP?
J'ai essayé votre formule, elle fonctionne mais aussi pour des valeurs incorrectes
voici mon code:
Private Sub tbx3_Change()
mesure = Me.Controls("tbx3") 'je récupère ici un chiffre, "2" par exemple
Sheets("Grille 1").Range("C4") = mesure
Select Case mesure 'min = 10 et Max = 20
Case Is < min <------------------------ jamais, le programme passe ici !
Me.Controls("tbx4") = "Débit correct" même pour "mesure = 6" ?
Case min To max
Me.Controls("tbx4") = "10<Debit<20"
Case Is > Max
Me.Controls("tbx4") = "Debit>20"
End Select
Je ne vois pas pourquoi, Pouvez-vous m'aider SVP?
Bonsoir,
Es-tu sûr de l'initialisation de tes variables min et Max ?
Tu as :
Il faudrait :
Es-tu sûr de l'initialisation de tes variables min et Max ?
Tu as :
Select Case mesure'min = 10 et Max = 20
Case Is < min Me.Controls("tbx4") = "Débit correct" Case min To Max Me.Controls("tbx4") = "10<Debit<20" Case Is > Max Me.Controls("tbx4") = "Debit>20" End Select
Il faudrait :
min = 10 Max = 20 Select Case mesure Case Is < min Me.Controls("tbx4") = "Débit correct" Case min To Max Me.Controls("tbx4") = "10<Debit<20" Case Is > Max Me.Controls("tbx4") = "Debit>20" End Select
Bonsoir,
Une suggestion : je ne vois pas la déclaration des variables.
Débute ton code par
dim mesure as double
(ou résultat, tes variables changent de nom en cours de route)
pour être sûr qu'elle soit bien numérique et non pas en variant qui serait en chaine....
eric
Une suggestion : je ne vois pas la déclaration des variables.
Débute ton code par
dim mesure as double
(ou résultat, tes variables changent de nom en cours de route)
pour être sûr qu'elle soit bien numérique et non pas en variant qui serait en chaine....
eric
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonsoir à tous,
merci pour vos suggestions.
Voila les réponses à vos questions:
J'ai changé le nom des variables min et max en mini et maxi, car je me suis aperçu que ce sont des noms de code.
mini et max sont affectées du résultat d'une opération (type: 2,3*nombre).
Toutes mes variables sont définies en tant que déclaration, générale:
Dim maxi, mini, mesure As Integer
J'ai voulu déclarer comme étant décimale mais je n'ai pas trouvé quel code taper alors j'ai mis integer. Est-ce que c'est gênant ? car
A part ça, j'ai un doute sur ce code: mesure = Me.Controls("tbx3")
Est-ce correcte d'écrire cela ? et d'utiliser le nombre tapé dans mes opérations?
Je ne comprends pas pourquoi le programme voit quand c'est supérieur à maxi mais pas quand c'est inférieur à mini ?
voila
merci pour vos suggestions.
Voila les réponses à vos questions:
J'ai changé le nom des variables min et max en mini et maxi, car je me suis aperçu que ce sont des noms de code.
mini et max sont affectées du résultat d'une opération (type: 2,3*nombre).
Toutes mes variables sont définies en tant que déclaration, générale:
Dim maxi, mini, mesure As Integer
J'ai voulu déclarer comme étant décimale mais je n'ai pas trouvé quel code taper alors j'ai mis integer. Est-ce que c'est gênant ? car
A part ça, j'ai un doute sur ce code: mesure = Me.Controls("tbx3")
Est-ce correcte d'écrire cela ? et d'utiliser le nombre tapé dans mes opérations?
Je ne comprends pas pourquoi le programme voit quand c'est supérieur à maxi mais pas quand c'est inférieur à mini ?
voila
Bonjour mod77,
Ma proposition fonctionne parfaitement par rapport à votre demande du début.
Me dire: J'ai essayé votre formule, elle fonctionne mais aussi pour des valeurs incorrectes
et me présenter un code qui est différent c'est le sommet.
De plus je vous ai demandé :
Contrôler que la valeur de résultat est correcte ici:
Pas de réponse donc de ma part non plus.
Ma proposition fonctionne parfaitement par rapport à votre demande du début.
Me dire: J'ai essayé votre formule, elle fonctionne mais aussi pour des valeurs incorrectes
et me présenter un code qui est différent c'est le sommet.
De plus je vous ai demandé :
Contrôler que la valeur de résultat est correcte ici:
resultat = mesure / (debit * temps)
Pas de réponse donc de ma part non plus.
Bonjour,
Merci Eric pour ta conversion je vais l'essayer.
Je suis désolé pour les sauts d'étapes dans mes postes, je voulais gagner du temps et ne pas écrire des pages de détails, c'est loupé!
Pour Le Pingou, il faut pas se fâcher, je voulais dire que votre proposition marche telle que vous ma l'avez proposé, mais lorsque résultat est 15 le programme passe pas par le case 10<resultat<15. C'est pourquoi j'ai changé ma façon de faire et que j'ai remplacé 10 par min puis mini et 20 par max puis maxi.
Il est vrai que j'ai failli, car je n'ai pas répondu au contrôle de la variable résultat.
Je l'avais fait afficher, et elle était bonne. "était", parce que j'ai encore changé ma façon de faire, je ne fais plus d'opération pour faire plus simple. C'est pourquoi j'ai introduit les valeurs mini et maxi.
Donc, méa culpa, j'aurai dû l'expliquer quand même!
mon code actuel est:
Private Sub tbx3_Change()
mesure = Me.Controls("tbx3") 'je récupère ici un chiffre, "2" par exemple
Sheets("Grille 1").Range("C4") = mesure 'je contrôle la valeur de "mesure"
Select Case mesure 'min = 10 et Max = 20
Case Is < min
Me.Controls("tbx4") = "Débit correct"
Case min To max
Me.Controls("tbx4") = "10<Debit<20"
Case Is > Max
Me.Controls("tbx4") = "Debit>20"
End Select
je fais la modif de Eriiic et je reviens vers vous tous
merci à tous.
Merci Eric pour ta conversion je vais l'essayer.
Je suis désolé pour les sauts d'étapes dans mes postes, je voulais gagner du temps et ne pas écrire des pages de détails, c'est loupé!
Pour Le Pingou, il faut pas se fâcher, je voulais dire que votre proposition marche telle que vous ma l'avez proposé, mais lorsque résultat est 15 le programme passe pas par le case 10<resultat<15. C'est pourquoi j'ai changé ma façon de faire et que j'ai remplacé 10 par min puis mini et 20 par max puis maxi.
Il est vrai que j'ai failli, car je n'ai pas répondu au contrôle de la variable résultat.
Je l'avais fait afficher, et elle était bonne. "était", parce que j'ai encore changé ma façon de faire, je ne fais plus d'opération pour faire plus simple. C'est pourquoi j'ai introduit les valeurs mini et maxi.
Donc, méa culpa, j'aurai dû l'expliquer quand même!
mon code actuel est:
Private Sub tbx3_Change()
mesure = Me.Controls("tbx3") 'je récupère ici un chiffre, "2" par exemple
Sheets("Grille 1").Range("C4") = mesure 'je contrôle la valeur de "mesure"
Select Case mesure 'min = 10 et Max = 20
Case Is < min
Me.Controls("tbx4") = "Débit correct"
Case min To max
Me.Controls("tbx4") = "10<Debit<20"
Case Is > Max
Me.Controls("tbx4") = "Debit>20"
End Select
je fais la modif de Eriiic et je reviens vers vous tous
merci à tous.
Merci à tous, merci Eriiic, c'est bien la conversion qui est nécessaire et je ne le savais pas.
Bonne journée
Bonne journée
Excusez moi j'ai encore une question
dans la formule d'Eriiic: "mesure = Cint(Me.Controls("tbx3"))"
lorsque j'efface le contenu de ma zone de saisie "tbx3" le programme plante en
"erreur d'exécution 13, incompatibilité de type".
Y a -t-il un moyen d'éviter cela SVP ?
dans la formule d'Eriiic: "mesure = Cint(Me.Controls("tbx3"))"
lorsque j'efface le contenu de ma zone de saisie "tbx3" le programme plante en
"erreur d'exécution 13, incompatibilité de type".
Y a -t-il un moyen d'éviter cela SVP ?
Merci Eric ça marche!
Serais-tu me dire cependant, comment je peux afficher dans une textbox le résultat de ma mesure sur 5 caractères car pour mini il apparait bien des chiffres après la virgule mais pas pour maxi, et je ne vois pas pourquoi?
Merci
Serais-tu me dire cependant, comment je peux afficher dans une textbox le résultat de ma mesure sur 5 caractères car pour mini il apparait bien des chiffres après la virgule mais pas pour maxi, et je ne vois pas pourquoi?
Merci