Je voudrais en finir definitivement avec les soucis de conversion - une petite a

Résolu
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 - 15 nov. 2011 à 19:09
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 - 17 nov. 2011 à 23:00
Bonsoir,

Je m’aperçois que 80% de mes requêtes ont trait a un souci de conversions que je n'arrive pas a comprendre malgré pas mal de lecture
alors je voudrais, par un exemple simple, régler le problème

voila
Un form
3 textbox A B C
J'entre a la main des valeurs disons comprises entre 100 et 200 dans A et B
C contiendra la valeur de A + B grâce a un button calcul

Moi je ferais pour ce qui est de la déclaration

Dim valA As Double
Dim valB As Double
Dim valB As Double


Ou je coince c'est pour le calcul
je ferais sur calcul.click

ValC = ValA + ValB

Mais après je me mélange complétement les pinceaux avec les Cstr, Tostring et autre Cdbl

Quelqu'un pourrait il de manière très simple me montrer comment utiliser a bon escient ces paramètres ???

Mille merci par avance

60 réponses

cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
16 nov. 2011 à 22:08
Bonsoir à tous

je tiens le record de message échangé
(je crois)
http://www.vbfrance.com/forum/sujet-BUTANT-ARRIVE-PAS-MANIPULER-TABLEAUX_1494966.aspx

il va peut etre etre battu
0
Utilisateur anonyme
16 nov. 2011 à 22:11
Salut Shay,

Ça craint!... surtout pour un problème de conversion en numérique...

Excuse j'en ai mis encore un post...

CF2i - Guadeloupe
Ingénierie Informatique
0
Utilisateur anonyme
16 nov. 2011 à 22:14
Bonsoir ShayW,
Comment ca va ce soir ?
Tu nous prépares une surprise ?
(Il faudra déplacer le sujet dans le bar si ca continue lol)
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
16 nov. 2011 à 22:30
Bonsoir Banana32
Non pas de surprise
je suis encore aux chiffres et aux lettres

ce n'est pas seulement les chiffres
comme ici

et autre jeu en dévellopement

bonsoir acive
Excuse j'en ai mis encore un post...
tu pourrais faire attention
c'est le début d'été chez toi
attention au requins
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
16 nov. 2011 à 22:41
je suis encore aux chiffres et aux lettres

Ah c'est bien ça !
Et pour les chiffres, tu vas fournir un algorithme de résolution ?
J'ai fait ça il y a 2 ans environs. Le problème, c'est qu'il met 6 secondes pour trouver toutes les solutions possibles sans les divisions et quasiment 40 secondes avec. Alors que j'ai vu des softs qui faisaient tout ça bien plus rapidement.
Pour les lettres c'est bien plus simple heureusement.

Bonsoir acive bientôt l'heure de l'apéro non ?
0
Utilisateur anonyme
17 nov. 2011 à 12:30
Salut Banana,

J'arrive trop tard pour l'apéro, la il est 7 heures du mat, je suis au café...

Pour tes 6/40 secondes il doit y avoir surement un moyen de diminuer ça.
Il faudrait voir le code.


CF2i - Guadeloupe
Ingénierie Informatique
0
Utilisateur anonyme
17 nov. 2011 à 12:37
Ah... Shay,

Alors non c'est l'hiver qui commence ici, tu confonds avec la Réunion (pacifique).
Il fait 28 degrés au lieu de 32... c'est terrible...
Pour les requins j'en ai vu qu'un de 3 mètres que les pêcheurs ont choppé, par contre avant hier on a vu 4 dauphins au bord de la plage (phénomène très rare)


CF2i - Guadeloupe
Ingénierie Informatique
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
17 nov. 2011 à 16:31
Je remercie tous ceux qui ont passé du temps a m'aider
Il est temps pour moi de tirer ma reverence du site
Bonne continuation a tous et toutes
Cordialement

Ps : moi aussi je peux bien troller mon topic non ???
Bye
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 nov. 2011 à 16:34
Ca va être une grande et lourde perte ... (mais pas de temps)
snif.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
17 nov. 2011 à 16:38
et juste pour information
je ne suis pas, je n'ai jamais ete codeur et je deteste cela
Je me suis fait refiler un "bebe" dont je ne voulais pas mais je n'ai pas le choix mais ca, c'est surement difficile a comprendre pour vous autres.
Peu importe
0
Utilisateur anonyme
17 nov. 2011 à 16:43
Salut,
Dans ce cas pourquoi ne pas exposer le problème de cette façon depuis le début?...

Je suis sur qu'un de nous t'aurait aidé en 2 posts uniquement.

Regarde nous sommes à 6 pages de discutions pour un problème de conversion en décimal...

Cordialement



CF2i - Guadeloupe
Ingénierie Informatique
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 nov. 2011 à 16:44
et juste pour information
je ne suis pas, je n'ai jamais ete codeur et je deteste cela
Je me suis fait refiler un "bebe" dont je ne voulais pas mais je n'ai pas le choix mais ca, c'est surement difficile a comprendre pour vous autres.

Cela se voit, que tu n'es pas un "codeur", ne t'en fais pas
Tu sais quoi ? Moi, je ne suis pas le pape et si quelqu'un essaye un jour de me refiler un "bébé" relevant de la compétence d'un pape (par exemple donner une bénédiction urbi et orbi depuis le balcon de la Basilique Saint-Pierre), je sais dire non et préciser que je n'y connais absolument rien et qu'il vaut alors mieux s'adresser au Pape.
Juste une question d'honnêteté
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
17 nov. 2011 à 16:53
Tu perdrais ton boulot au lieu d'essayer de faire quelque chose ?
Pas moi, mais c'est un autre sujet .... hors sujet
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
17 nov. 2011 à 16:58
Tu perdrais ton boulot au lieu d'essayer de faire quelque chose ?

permets-moi de corriger cette phrase en :
"tu perdrais ton boulot au lieu d'essayer de faire faire quelque chose aux autres, y compris en ne répondant même pas à leurs questions ?"

Ma réponse est : oui. Et pour être plus précis, je ne l'aurais tout simplement pas accepté, ce boulot, sans les compétences qui justifiaient mon recrutement !

Allez ! bonne chance

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
17 nov. 2011 à 18:02
ben c est bien sauf que moi ce boulot je l'ai depuis 15 ans, j'ai des momes et ce supplement codage a ete impose. Je ne fais pas que cela heureusement.

Et pour finir sur une bonne note, concernant les initialisations
J'ai fait une private sub initialize()
- les valeurs ayant une valeur fixe sont par exemple A.text = "12'
- Toutes les valeurs calculees A.text = ""
End Sub

et au onload du form j'appelle initialize()
et tu sais quoi, j'ai mis 8 mois a le comprendre

Bon allez fini de papoter
bonne continuation egalement
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
17 nov. 2011 à 18:17
Pour EhJoe

Tu avais entierement raison a propos des structs
C'etait un . qui compromettait le calcul
Tout fonctionne bien
Merci pour tout

Ps : je n'ai toujours rien dans ma BAL postale .....
0
Utilisateur anonyme
17 nov. 2011 à 18:45
Bonsoir Attila54,

Lorsque je réponds à un demandeur, il m'arrive de passer pas mal de temps sur un problème comme le tiens.
Dans un sujet de ta part du mois de mars, je t'avais déjà donné le conseil d'activer l'option strict à on et d'utiliser la classe Convert pour les conversions.

En lisant ce fil, je m'aperçoit que tu ne suis toujours pas les règles de base.
D'un côté je me dis que ce n'est pas ta faute, cette option strict devrait être activée par défaut et non l'inverse. Ceci éviterait des tas de sujet de ton style dont les débutants sont embrouillés dès le départ.

Lorsque quelqu'un te donne un conseil, essaie de le suivre et de l'assimiler, avant de reposer la même question du même type.

Dans ton cas, je ne sais pas si le fait de te donner un code tout fait te servira à quelque chose puisque de toute façon, tôt ou tard, le code en question finira par fonctionner sans que tu n'ai compris le fonctionnement.

Maintenant, c'est dommage que tu veuilles quitter le forum.
On travaille tous à notre rythme, certains mettent plus de temps que d'autres. C'est comme ça.
En tout cas, en ce qui me concerne, je serai toujours prêt à t'aider mais à condition que tu suives les conseils

Bon courage.
0
Attila54 Messages postés 409 Date d'inscription jeudi 30 juin 2005 Statut Membre Dernière intervention 21 novembre 2013 1
17 nov. 2011 à 19:14
Pour te repondre banana, j'ai suivi le conseil, option explcit et strict sont toujours sur on depuis ce temps

Simplement j'ai demande si je devais passer sur off pour le message d'erreur me disant qu'option explicit on interdisait les conversions de ... en .... mais dans me tete c'etait pour tester si cela resolvait le souci.
Je ne veux pas de code tout fait dailleurs il n'a ete plusieurs fois demande gentillement "bonne moi ton code" et je ne l'ai pas donne EhJoe m'en sois temoin.
0
ehjoe Messages postés 728 Date d'inscription samedi 4 avril 2009 Statut Membre Dernière intervention 30 mars 2014 4
17 nov. 2011 à 21:11
Bonjour Attila n°54,

Tu écris :


Je me suis fait refiler un "bebe" dont je ne voulais pas mais je n'ai pas le choix mais ca, c'est surement difficile à comprendre pour vous autres.
Peu importe


Heu, argument spécial, si tu ne sais pas le faire, que tu acceptes ou que tu refuses, le résultat sera le même en pire, ça verse vers un manque de sérieux et de compétence? Quand on ne sait pas faire, le mieux est de refuser, ou d'émettre des réserves au pire?

Tu écris encore :


Et pour finir sur une bonne note, concernant les initialisations
J'ai fait une private sub initialize()
- les valeurs ayant une valeur fixe sont par exemple A.text = "12'
- Toutes les valeurs calculees A.text = ""
End Sub


C'est vrai que tu n'écoutes pas énormément ce qui t'est dit, par exemple dans mon code, bien que j'aie enlevé les "private" inutiles en entête de procédure, tu en fais fi et tu les laisses ; ça n'a pas de conséquence mais c'est un exemple? Idem pour le nom des objets, alors que quand quelqu'un doit reprendre ton code il est obligé de renommer tous les objets comme je disais, ça j'aime moins et c'est souvent le cas. La grande majorité renomme les objets, seulement il faut penser que si on passe son code, c'est l'autre qui va se taper tous les noms à changer?

Tu écris ensuite :


Pour te repondre banana, j'ai suivi le conseil, option explcit et strict sont toujours sur on depuis ce temps


C'est :

Option Explicit On




Puis tu dis :


Tu avais entierement raison a propos des structs C'etait un . qui compromettait le calcul Tout fonctionne bien


Les structure, les "With" et autres bête ça marche si on les utilise bien, mais c'est vrai que c'est une source d'erreurs et qu'en plus c'est agaçant quand on ne sait plus visuellement à quoi la propriété fait référence, faute de visibilité intégrale.


Je reste dubitatif in fine, car en fait il est impossible de savoir à quoi aurait servi ce que tu voulais faire, alors qu'en tout premier il peut être salutaire de l'indiquer pour orienter la programmation ; trouves-tu si ridicule ce que tu veux faire que tu n'oses le dire ? Certes non, tu vas trouver une explication pour ne pas le dire?

Souvent les gens qui prétendent commencer attaquent directement une application, y en a plein ici, j'en suis étonné, il n'y a pas ça sur le forum MS, peut être que le nom fait peur?
Et souvent c'est un truc avec sauvegarde et gestion des datas. Sur un plan psychique je comprends, mais sur un plan rationnel, il est totalement impossible de faire un programme sans avoir déjà programmé ou connaître le minimum.

Régulièrement la première fois il faut une année pour faire quelque chose de substantiel. Ce qui n'est pas le cas d'une personne qui sait programmer, qui bien aidée, en trois mois, voire moins, peut avaler d'autres langages et éditeurs. Ce n'est souvent que de la transposition, mais on sait surtout ce qui peut se faire et comment ça se fait, ce qui est fondamental.

Alors normalement on commence par un objet, la form, l'éditeur, on lit, on fait des tests jusqu'à compréhension tous les jours, ou presque, au moins une heure (ça remplace la télévision), et lentement ça avance. Puis quand on maîtrise les variables, l'éditeur, les grands principes du code, comme les conditions et les boucles, les chaînes, on commence à faire de la gestion entre tout ça, pour ensuite attaquer les fichiers et pouvoir enregistrer ce qui a été fait. A ce niveau on commence à pouvoir faire de la vraie gestion, ce qui est l'activité principale de la programmation.

In fine sur le sujet, ce que tu veux faire en code, ça se fait bien plus simplement avec Excel et sans vbA, juste avec l'interface, alors pourquoi vouloir faire un programme quand Excel est suffisant, là encore c'est étonnant? Ça rappelle typiquement les débutants qui décident des objets avec lesquels il veulent faire quelque chose, alors que leur choix est très peu judicieux, au lieu de demander comment faire pour réaliser quelque chose de déterminé.

Mais sinon, ton code tu peux me l'envoyer par mail, je peux te faire le petit programme, comme d'autres personnes d'ailleurs, mais franchement, vu sa simplicité je ne vois pas l'utilité de programmer alors que comme susdit, il suffirait de paramétrer Excel.

*

Pour ce qui est du livre, voici le lien pour les réclamations :

http://www.lulu.com/help/email_support.php

Je ne peux rien faire d'autre car ils vont demander des références que je n'ai pas, tout dépend aussi comment tu as demandé l'expédition, car avec Amazon par exemple, c'est souvent une semaine, alors venant des USA mais imprimé en Espagne ou en France, je crois qu'il faut attendre quinze jours avant de demander (déjà dit)?

Donc si tu veux me passer ton code, tu peux.

Cordialement, Joe
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
17 nov. 2011 à 23:00
Bonjour,

J'ai lu tous vos posts... Attila54, je ne sais pas si tu as enfin trouvé ta solution ?!

MAIS avant, je veux te dire :
- Le forum est destiné aux développeurs et aux amateurs qui ont besoin d'aide ! Donc (dans le principe) pas pour les gens de passage qui en on rien à foutre de la programmation...
- Si ucfoutu, banana34, Shaw et j'en passe... t’ont répondus, et qu'il reste encore à expliquer ton problème, c'est que tu n'es pas assez clair. Et les questions qu'ils posent c'est justement pour te comprendre, pas pour t'embêter. Et éviter de leur répondre (ou répondre qu'une fois sur trois) parce que tu ne les comprends pas à ton tour; cela n'arrange pas la situation. A la limite si tu ne les comprends pas, dit-le de suite, au lieu de passer outre en les ignorant. Va droit au but !

=

Maintenant, j'apporte ma petite pierre...

Je reprend ton post du "mercredi 16 novembre 2011 à 09:35:52" en page 1, avec mes commentaires :

Merci a tous pour l'explication
mon probleme est recurrent et je le sais
j'arrive en general a poser le probleme normalement mais des que je passe au calcul, j'ai toujours ou presque une erreur du style "option explicit on ne supporte pas les conversions de ... en .... C'est déjà un premier problème. Tu n'as pas une bonne gestion du "typage" de tes variables ou de tes contrôles. (Pas bon signe pour la suite...)


je vois souvent par exemple des choses du style
Public ValA As Double
Public ValB As Double
Public ValC As Double
.
.
valA = (valB / 2) + .valC
A.Text = valSE.ToString("0.00")



Savoir ce que veut dire string ou double ou autre ne pose pas de souci. En es-tu vraiment sûr ? Moi j'ai un gros doute sur ta compréhension.
Ce que je ne comprends pas, c'est l'articulation du problème

En francais ca donnerait pour moi :

J'ai 3 textbox A B C Okay.
Les Valeurs contenues dans A B C seront des Doubles Paf ! Nan. Tu confonds affichage dans les textbox avec des variables... C'est probablement déjà là une partie de ton problème de compréhension...
La valeur contenue dans le textbox A sera = Valeur contenue dans le textboxB divisee par 2 + Valeur contenue dans le textboxC Et donc ta confusion continue logiquement ensuite (en quelque sorte).

Apres je ne comprends pas le pourquoi du
A.Text = valSE.ToString("0.00") valSE ? plutôt ValA, me semble-t-il.


C'est juste ce point qui me gene



=> En résumé quand je lis ton post, je m'aperçois que :

- tu n'as saisi ce que signifie le "type". Les "valeurs" dans les textbox sont exclusivement des STRINGS, et non des Doubles.
Je mets des guillemets à "valeurs", car le terme plus approprié serait "contenu"...
- tu ne comprends pas la différence entre un objet et une variable...
- tu ne connais pas à quoi sert "Option Explicit"... Ce qui va avec ta non compréhension du "type", mais révèle aussi toute la méconnaissance de l'environnement de développement.

=> En conclusion, ce n'est pas juste un point qui te gêne, mais toute la programmation de base...

Mon conseil :
Si tu veux progresser, lit un cours basique sur VB...

JE te rappelle que le forum n'est pas là en principe pour t'apprendre la programmation (comme un cours, je veux dire).

=

Néanmoins, je vais tenter t'apporter quelques éclaircissements sur tes problèmes (non exhaustifs) :

- "L'option Explicit" : Quand tu coches dans l'environnement de VB, L'option explicit, tu indiques à l'environnement de programmation (là où tu programmes) d’interdire toutes les conversions de "type" différents implicitement. Cela oblige à indiquer dans le code les fonctions ou propriétés qui feront les conversions.
Si, tu peux les interdire, tu peux aussi faire l'inverse ! Dans ce cas, c'est l'environnement de programmation qui s'en charge... mais... car il y a un mais, sinon cela ne serait pas drôle, il peut se produire des confusions par l'environnement. Surtout quand le code est très mal construit... Il y a aussi, d'autres MAIS... que je n'évoquerais pas. C'est la raison pour-laquelle on préfère mettre "l'option Explicite" (et non "Implicte"). On gère ainsi correctement les "types" en fonctions des besoins. Sans compter que cela force à une programmation plus rigoureuse...

- Le "type" : Tu dis "Savoir ce que veut dire string ou double ou autre ne pose pas de souci."
Bien. Très bien, même... Mais comme j'en doute très fort, je vais tout même faire quelques remarques...
Une variable, par exemple qu'on nomme "ValA" peut donc être déclarée dans le code. Pire, quand on a "l'option explicite", on n'a plus d'autre choix que faire sa déclaration dans le code. Pour la déclarer, il existe plusieurs possibilités, mais pour rester basique, on utilisera dans presque tous les cas la fonction "Dim". "Dim" pour "dimension". Cette instruction, va "dire" à Visual Basic, "réserve moi un espace mémoire pour ma variable". Mais voilà ! Il y a un truc qu'il faut préciser aussi... Quelle grandeur pour l'espace mémoire ?... C'est là, que rentre en jeu le "type" (sous-entendu "le type de variable"). Si la variable doit contenir du texte (STRING) l'espace mémoire sera d'entrée de jeu de 32Ko (extensible à beaucoup beaucoup plus, que je ne sais même plus combien, de toute façon c'est transparent, c'est le PC qui se débrouille avec...). Si la variable doit contenir un nombre... il y a alors beaucoup de possibilité (Double, long, integer, byte, etc...). Ces types agissent non seulement si la grandeur de l'espace mémoire alloué, mais aussi sur la plage de valeur admise. Et même aussi, sur la façon dont il sont codés (en décimal ou en entier, par exemple). Oui, il faut faire attention sur le choix... Toi, tu prends "Double" dans ton code, admettons. Mais, en toute rigueur, il faudrait savoir à quoi sert ces variables... Bref, pour ces explications restons en là, avec Double. Ah, si ! l'espace mémoire sera alors de 8 octets... pas grand chose au vu des strings...
Donc tes lignes de codes devraient être quelque chose comme :
dim valA as Double


- Ensuite tes "TextBox" : Comme tu le sais surement, ce sont des objets que tu mets sur une feuille. Elle réserve à l'écran un espace pour l'affichage. Oui, je dis bien un "affichage". Et on affiche quoi en général... du texte ! Donc les "textbox" sont du type "STRING"... du moins pour ce qui est de la propriété "TEXT"... Et ouais, tu as surement remarqué que les "textbox" ont d'autres propriétés, comme par exemple leur dimension... qui sont du type...? "String" !? Nan ! "Long"... ce sont des nombres entiers... Bref. Donc pour afficher quelques choses dans un "textbox", tu codes, par exemple :
A.text = "Un truc"

Mettre "Un truc" entre guillemet dit de suite à VB que "Un truc" est une STRING... Et donc, il n'y a pas de conversion de type à faire, puisque dans la propriété Text de type String, je mets une String...
Mais si je voulais y mettre la variable valA ?... Ah, ba, là ! Il y a un bug... Car dans la propriété Text de type String, je mets un "Double"... Les deux types ne sont pas identiques ! Mince, putain, bordel de merde... oupss ! Donc il faut mettre une instruction qui fera la conversion d'une variable de type "Double" en "String". Cette conversion ne changera pas le type de la variable, mais permet la communication entre les formats... Une des possibilités c'est d'utiliser la propriété "ToString"... Ainsi, on pourra coder :
A.text = valA.toString


Bon, là, il reste encore deux choses. Premièrement, comme la variable valA, n'a pas été initialisée, elle aura pour valeur par défaut zéro. Donc la textbox affichera "0"...
Dans ton code, tu lui fait subir une série de calcul, avec les variables ValB et valC... En espérant, que tu leurs donnes des valeurs avant... Sinon : zéro divisé par 2 plus zéro égal la tête à toto...

Ensuite, au lieu d'utiliser simplement ToString, tu complètes le formatage avec ("0.00") qui indique en plus d'arrondir le nombre avant de le communiquer... Il existe bien d'autre formatage possible comme les pourcentage, etc... C'est selon les besoins.

Apres je ne comprends pas le pourquoi du
A.Text = valSE.ToString("0.00")


J'espère que tu comprends mieux le pourquoi maintenant..

=

Amicalement,
Us.
0
Rejoignez-nous