VBA : Saisir une valeur et afficher résultat
Résolu
ph.souchal
Messages postés
17
Date d'inscription
Statut
Membre
Dernière intervention
-
tompols Messages postés 1273 Date d'inscription Statut Contributeur Dernière intervention -
tompols Messages postés 1273 Date d'inscription Statut Contributeur Dernière intervention -
A voir également:
- Stxt vba
- Stxt en anglais - Guide
- Excel compter cellule couleur sans vba - Guide
- Incompatibilité de type vba ✓ - Forum VB / VBA
- Erreur 13 incompatibilité de type VBA excel ✓ - Forum Excel
- Mkdir vba ✓ - Forum VB / VBA
15 réponses
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
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 ! ;-) )
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 ;)
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
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à ;) )
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 ?
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....
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) ?
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
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,
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 ?
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 ?
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 ;) )
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 !