VBA : Saisir une valeur et afficher résultat
Résolu/Fermé
ph.souchal
Messages postés
17
Date d'inscription
dimanche 17 décembre 2006
Statut
Membre
Dernière intervention
21 décembre 2009
-
21 déc. 2009 à 10:34
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 - 21 déc. 2009 à 15:18
tompols Messages postés 1273 Date d'inscription jeudi 29 juillet 2004 Statut Contributeur Dernière intervention 25 novembre 2013 - 21 déc. 2009 à 15:18
A voir également:
- VBA : Saisir une valeur et afficher résultat
- Mkdir vba ✓ - Forum VB / VBA
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Vba range avec variable ✓ - Forum VB / VBA
- Autofill vba ✓ - Forum Excel
15 réponses
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
21 déc. 2009 à 12:28
21 déc. 2009 à 12:28
je regarde ça après la pause déj' (à moins que michel_m ne le fasse avant ;)
mais non, rassure-toi , je te laisse le bébé !!! ;-)
jpourrais faire un tite sieste
mais non, rassure-toi , je te laisse le bébé !!! ;-)
jpourrais faire un tite sieste
ph.souchal
Messages postés
17
Date d'inscription
dimanche 17 décembre 2006
Statut
Membre
Dernière intervention
21 décembre 2009
1
21 déc. 2009 à 13:20
21 déc. 2009 à 13:20
Merci infiniment à tout les deux (et bon appétit !).
Je fait le test avec la formule dans le code de michel_m.
Pour la formule (bien vu tompols !) :
Somme des nombres en position Pair x 3
Somme des nombres en position Impair.
Somme des deux résultats (1)
Enfin : (2) soustraction du résultat de son arrondi supérieur à la dizaine !
Si le résultat (1) est 82 alors le résultats final (2) est donc : 90 - 82 = 8.
Merci à tout les deux je vous tiens informé du résultat (si j'en obtient un en ajoutant la formule ! ;-) )
Je fait le test avec la formule dans le code de michel_m.
Pour la formule (bien vu tompols !) :
Somme des nombres en position Pair x 3
Somme des nombres en position Impair.
Somme des deux résultats (1)
Enfin : (2) soustraction du résultat de son arrondi supérieur à la dizaine !
Si le résultat (1) est 82 alors le résultats final (2) est donc : 90 - 82 = 8.
Merci à tout les deux je vous tiens informé du résultat (si j'en obtient un en ajoutant la formule ! ;-) )
tompols
Messages postés
1273
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
435
21 déc. 2009 à 14:39
21 déc. 2009 à 14:39
Re,
ça ferait donc un truc comme ça :
voilà, à copier/coller dans le bloc note puis enregistrer en modifiant l'extension en .vbs .... pour l'execution, double click sur le fichier....
Un ptit merci en passant à michel_m pour la boucle de controle du nombre saisi ;)
ça ferait donc un truc comme ça :
'boucle de controle du nombre saisie do while flag=false nombre=inputbox("intoduire un nombre de 12 chiffres") if isempty(nombre) then wscript.quit 0 end if if isnumeric(nombre) and len(nombre)=12 then flag=true else msgbox "saisie erronée" end if loop 'la somme des nombre en position impaire for i = 1 to 11 step 2 somimpair = somimpair + cint(mid(nombre,i,1)) next 'la somme des nombre en position paire for i = 2 to 12 step 2 sompair = sompair + cint(mid(nombre,i,1)) next 'opération intermédiaire (1) res = (sompair *3) + somimpair 'on détermine si multiple de 10, si oui resultat = 0 sinon on arrondi et on soustrait le nombre if right(res,1) <> 0 then arr = (int(res/10) + 1) * 10 result = arr- res else result = 0 end if msgbox "nombre entré : " & nombre & vbcrlf & "résultat : " & result
voilà, à copier/coller dans le bloc note puis enregistrer en modifiant l'extension en .vbs .... pour l'execution, double click sur le fichier....
Un ptit merci en passant à michel_m pour la boucle de controle du nombre saisi ;)
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
21 déc. 2009 à 15:00
21 déc. 2009 à 15:00
Bien joué tompols,
j'adore ces posts où on cherche ensemble
A bientôt, j'espère, pour de nouvelles aventures :-)
j'adore ces posts où on cherche ensemble
A bientôt, j'espère, pour de nouvelles aventures :-)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
tompols
Messages postés
1273
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
435
21 déc. 2009 à 15:18
21 déc. 2009 à 15:18
re,
c'est sur que sans les boucles ou autres "astuces" c'est un peu plus long mais ça marche qd meme ;)
Excellentes fêtes de fin d'année à toi également (et à tous ceux qui passeront par là ;) )
c'est sur que sans les boucles ou autres "astuces" c'est un peu plus long mais ça marche qd meme ;)
Excellentes fêtes de fin d'année à toi également (et à tous ceux qui passeront par là ;) )
tompols
Messages postés
1273
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
435
21 déc. 2009 à 10:48
21 déc. 2009 à 10:48
Bonjour,
Je ne comprends pas bien pourquoi utiliser Excel dans ce cas ? La formule appliquée se base-t-elle sur des données présentes dans une feuille ? quelle est la formule que tu veux appliquer ?
Je ne comprends pas bien pourquoi utiliser Excel dans ce cas ? La formule appliquée se base-t-elle sur des données présentes dans une feuille ? quelle est la formule que tu veux appliquer ?
ph.souchal
Messages postés
17
Date d'inscription
dimanche 17 décembre 2006
Statut
Membre
Dernière intervention
21 décembre 2009
1
21 déc. 2009 à 10:52
21 déc. 2009 à 10:52
Bonjour,
Avant tout merci pour cette réponse rapide.
Je pense à cette solution car les données ne seront pas présentes dans une feuille.
Le calcul devra être fait au cas par cas et de façon ponctuelle mais répétée pour des valeurs non connues à l'avance.
L'idée est que l'utilisateur n'ai qu'a ouvrir l'application et saisir son chiffre pour pouvoir disposer du résultat....
Je ne sais pas si je suis assez clair....
Avant tout merci pour cette réponse rapide.
Je pense à cette solution car les données ne seront pas présentes dans une feuille.
Le calcul devra être fait au cas par cas et de façon ponctuelle mais répétée pour des valeurs non connues à l'avance.
L'idée est que l'utilisateur n'ai qu'a ouvrir l'application et saisir son chiffre pour pouvoir disposer du résultat....
Je ne sais pas si je suis assez clair....
tompols
Messages postés
1273
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
435
21 déc. 2009 à 11:08
21 déc. 2009 à 11:08
Bonjour
Ok, je vois mais ça ne répond pas à ma question : quelle est le calcul à faire (quelle formule) ?
Ok, je vois mais ça ne répond pas à ma question : quelle est le calcul à faire (quelle formule) ?
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
21 déc. 2009 à 11:36
21 déc. 2009 à 11:36
bonjour,
Comme Tompols, j'ai du mal à comprendre... pourquoi Excel
Peut-être pourrais tu utiliser un vbscript comme ci dessous
dans ce code, l'utilisateur est obligé de rentrer un nombre à 12 chiffres pour sortir de la procédure mais si tu veux annuler si erreur, on peut trouver autre chose
Comme Tompols, j'ai du mal à comprendre... pourquoi Excel
Peut-être pourrais tu utiliser un vbscript comme ci dessous
do while flag=false nombre=inputbox("introduire un nombre de 12 chiffres") if isnumeric(nombre) and len(nombre)=12 then flag=true else msgbox "saisie erronée" end if loop nombre=nombre + 200 msgbox nombre
dans ce code, l'utilisateur est obligé de rentrer un nombre à 12 chiffres pour sortir de la procédure mais si tu veux annuler si erreur, on peut trouver autre chose
tompols
Messages postés
1273
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
435
21 déc. 2009 à 11:39
21 déc. 2009 à 11:39
héhé, je pensais aussi à du vbs, reste encore à savoir quel calcul appliquer.... ;)
ph.souchal
Messages postés
17
Date d'inscription
dimanche 17 décembre 2006
Statut
Membre
Dernière intervention
21 décembre 2009
1
21 déc. 2009 à 11:51
21 déc. 2009 à 11:51
Oups excusez moi je suis à la traine !
J'ai la formule en version excel (comme vous l'aurais compris je suis plus formuliste que VBiste ! ;-) ) :
=(ARRONDI.SUP((((STXT(A1;2;1)+STXT(A1;4;1)+STXT(A1;6;1)+STXT(A1;8;1)+STXT(A1;10;1)+STXT(A1;12;1))*3)+(STXT(A1;1;1)+STXT(A1;3;1)+STXT(A1;5;1)+STXT(A1;7;1)+STXT(A1;9;1)+STXT(A1;11;1)))/10;0)*10)-(((STXT(A1;2;1)+STXT(A1;4;1)+STXT(A1;6;1)+STXT(A1;8;1)+STXT(A1;10;1)+STXT(A1;12;1))*3)+(STXT(A1;1;1)+STXT(A1;3;1)+STXT(A1;5;1)+STXT(A1;7;1)+STXT(A1;9;1)+STXT(A1;11;1)))
A1 étant vous l'aurez compris la valeur saisie et le résultat étant A1 et le résultat de la formule.
Je précise également à toute fin utile qu'il n'est pas nécessaire de "sauvegarder" le résultat mais uniquement de l'afficher.
Merci encore pour votre aide à tout les deux,
J'ai la formule en version excel (comme vous l'aurais compris je suis plus formuliste que VBiste ! ;-) ) :
=(ARRONDI.SUP((((STXT(A1;2;1)+STXT(A1;4;1)+STXT(A1;6;1)+STXT(A1;8;1)+STXT(A1;10;1)+STXT(A1;12;1))*3)+(STXT(A1;1;1)+STXT(A1;3;1)+STXT(A1;5;1)+STXT(A1;7;1)+STXT(A1;9;1)+STXT(A1;11;1)))/10;0)*10)-(((STXT(A1;2;1)+STXT(A1;4;1)+STXT(A1;6;1)+STXT(A1;8;1)+STXT(A1;10;1)+STXT(A1;12;1))*3)+(STXT(A1;1;1)+STXT(A1;3;1)+STXT(A1;5;1)+STXT(A1;7;1)+STXT(A1;9;1)+STXT(A1;11;1)))
A1 étant vous l'aurez compris la valeur saisie et le résultat étant A1 et le résultat de la formule.
Je précise également à toute fin utile qu'il n'est pas nécessaire de "sauvegarder" le résultat mais uniquement de l'afficher.
Merci encore pour votre aide à tout les deux,
ph.souchal
Messages postés
17
Date d'inscription
dimanche 17 décembre 2006
Statut
Membre
Dernière intervention
21 décembre 2009
1
21 déc. 2009 à 11:58
21 déc. 2009 à 11:58
Autre précision je n'ai rien contre une autre solution mais j'ai besoin d'être sûr que cette petite application pourra être utilisée sur n'importe quel poste.... c'est ce qui m'a fait envisager excel, de plus je ne maitrise pas très bien la nuance entre VBS et VBA et ce la même chose mais sans passer par excel ?
michel_m
Messages postés
16603
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2023
3 310
21 déc. 2009 à 12:06
21 déc. 2009 à 12:06
Merci Tompols, je me sens moins seul dans ce monde ingrat! :-d
petite amélioration pour sortir pat annuler ou la croix
do while flag=false
nombre=inputbox("intoduire un nombre de 12 chiffres")
if isempty(nombre) then
wscript.quit 0
end if
if isnumeric(nombre) and len(nombre)=12 then
flag=true
else
msgbox "saisie erronée"
end if
loop
nombre=nombre + 200
msgbox nombre
pour la formule (hé bé...pas simple), faut voir si la traduction en anglais est admise par vbscript...normalement oui mais...
pour ph.souchai: que désires tu faire comme transformation de ton nombre initial car la logique est différente en prog que par formule
edit ;VBS est de la m^me famille que VBA Excel mais on peut pas normalement utiliser les fonctions excel
j'ai testé ta formule sur XL avec le nombre 123456789012 et j'ai comme résultat 8 c'est cela ?
petite amélioration pour sortir pat annuler ou la croix
do while flag=false
nombre=inputbox("intoduire un nombre de 12 chiffres")
if isempty(nombre) then
wscript.quit 0
end if
if isnumeric(nombre) and len(nombre)=12 then
flag=true
else
msgbox "saisie erronée"
end if
loop
nombre=nombre + 200
msgbox nombre
pour la formule (hé bé...pas simple), faut voir si la traduction en anglais est admise par vbscript...normalement oui mais...
pour ph.souchai: que désires tu faire comme transformation de ton nombre initial car la logique est différente en prog que par formule
edit ;VBS est de la m^me famille que VBA Excel mais on peut pas normalement utiliser les fonctions excel
j'ai testé ta formule sur XL avec le nombre 123456789012 et j'ai comme résultat 8 c'est cela ?
tompols
Messages postés
1273
Date d'inscription
jeudi 29 juillet 2004
Statut
Contributeur
Dernière intervention
25 novembre 2013
435
21 déc. 2009 à 12:19
21 déc. 2009 à 12:19
re :)
pour la formule, à ce que je vois, stocker en variable la somme des nombre en position pair et la somme des nombres en position impair puis faire tes addtions/multiplications soustractions....je regarde ça après la pause déj' (à moins que michel_m ne le fasse avant ;) )
pour la formule, à ce que je vois, stocker en variable la somme des nombre en position pair et la somme des nombres en position impair puis faire tes addtions/multiplications soustractions....je regarde ça après la pause déj' (à moins que michel_m ne le fasse avant ;) )
ph.souchal
Messages postés
17
Date d'inscription
dimanche 17 décembre 2006
Statut
Membre
Dernière intervention
21 décembre 2009
1
21 déc. 2009 à 15:06
21 déc. 2009 à 15:06
Whaouh !!!
Pour info : J'avais commencé la transformation de ma formule en VBA et je ne butais plus que sur le problème d'arrondi supérieur lorsque la décimale était inférieure à 0.5 ! Ce qui donnait a peu près ceci :
(Round((((Val(Mid(nombre, 2, 1)) + Val(Mid(nombre, 4, 1)) + Val(Mid(nombre, 6, 1)) + Val(Mid(nombre, 8, 1)) + Val(Mid(nombre, 10, 1)) + Val(Mid(nombre, 12, 1))) * 3) + Val((Mid(nombre, 1, 1)) + Val(Mid(nombre, 3, 1)) + Val(Mid(nombre, 5, 1)) + Val(Mid(nombre, 7, 1)) + Val(Mid(nombre, 9, 1)) + Val(Mid(nombre, 11, 1)))) / 10, 0) * 10) - (((Val(Mid(nombre, 2, 1)) + Val(Mid(nombre, 4, 1)) + Val(Mid(nombre, 6, 1)) + Val(Mid(nombre, 8, 1)) + Val(Mid(nombre, 10, 1)) + Val(Mid(nombre, 12, 1))) * 3) + (Val(Mid(nombre, 1, 1)) + Val(Mid(nombre, 3, 1)) + Val(Mid(nombre, 5, 1)) + Val(Mid(nombre, 7, 1)) + Val(Mid(nombre, 9, 1)) + Val(Mid(nombre, 11, 1))))
J'étais très fier de moi jusqu'a ce que je vois ton post ! Je constate donc comme attendu mais avec un grand respect qu'une traduction ne remplacera jamais une bonne maitrîse du code : cela semble tellement simple présenté comme ça !!!
Un grand grand merci à tout les deux pour votre aide, en vous souhaitant à l'occasion d'excellentes fêtes de fin d'année !
Pour info : J'avais commencé la transformation de ma formule en VBA et je ne butais plus que sur le problème d'arrondi supérieur lorsque la décimale était inférieure à 0.5 ! Ce qui donnait a peu près ceci :
(Round((((Val(Mid(nombre, 2, 1)) + Val(Mid(nombre, 4, 1)) + Val(Mid(nombre, 6, 1)) + Val(Mid(nombre, 8, 1)) + Val(Mid(nombre, 10, 1)) + Val(Mid(nombre, 12, 1))) * 3) + Val((Mid(nombre, 1, 1)) + Val(Mid(nombre, 3, 1)) + Val(Mid(nombre, 5, 1)) + Val(Mid(nombre, 7, 1)) + Val(Mid(nombre, 9, 1)) + Val(Mid(nombre, 11, 1)))) / 10, 0) * 10) - (((Val(Mid(nombre, 2, 1)) + Val(Mid(nombre, 4, 1)) + Val(Mid(nombre, 6, 1)) + Val(Mid(nombre, 8, 1)) + Val(Mid(nombre, 10, 1)) + Val(Mid(nombre, 12, 1))) * 3) + (Val(Mid(nombre, 1, 1)) + Val(Mid(nombre, 3, 1)) + Val(Mid(nombre, 5, 1)) + Val(Mid(nombre, 7, 1)) + Val(Mid(nombre, 9, 1)) + Val(Mid(nombre, 11, 1))))
J'étais très fier de moi jusqu'a ce que je vois ton post ! Je constate donc comme attendu mais avec un grand respect qu'une traduction ne remplacera jamais une bonne maitrîse du code : cela semble tellement simple présenté comme ça !!!
Un grand grand merci à tout les deux pour votre aide, en vous souhaitant à l'occasion d'excellentes fêtes de fin d'année !