Problème de compatibilité de variable :'o(

Résolu
cs_Gokuan Messages postés 51 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 17 novembre 2008 - 24 oct. 2006 à 14:08
cs_Gokuan Messages postés 51 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 17 novembre 2008 - 24 oct. 2006 à 22:07
Hello les amis, c'est à nouveau moi pour une nouvelle question lol

Je vous explique, j'ai réussi à afficher les valeurs dans une liste box tout est ok, mais maintent que je veux prendre une de ces données, ben gros souci...


Exemple de mon code :


Dim Nbr As Double   'Vi Double car c'est des chiffres à virgules'


Dim NbrTot As Double


Nbr = ListBox1.List (i, 9)      '---------> le souci ici c'est que ListBox1.List retourne un String, enfin une chaine de caractère


NbrTot = NbrTot + Nbr
i = i + 1

bon y a une boucle en haut encore, mais ej vais pas l'écrire là... et j'ai une erreur "13", et si je mets as Variant ça marche mais ça me fait plus les calcules et mets les un après les autre...

Est-ce que qqun aurait une réponse simple à me donner, merci d'avance

13 réponses

cs_Gokuan Messages postés 51 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 17 novembre 2008
24 oct. 2006 à 22:07
C'est tout bon, après mur réfléxion, j'ai réussi à faire tout autrement et évité ce problème ;o)
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
24 oct. 2006 à 14:11
Nbr = CDbl(ListBox1.List (i, 9))

A condition que la chaine renvoyer puisse etre interprétée comme un nombre.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 oct. 2006 à 14:26
ListBox1.List (i, 9)   ??

pourquoi ces deux indices ?

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
cs_Gokuan Messages postés 51 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 17 novembre 2008
24 oct. 2006 à 14:39
hello ami programmeur, Ben j'ai essayé avec le CDbl... mais ça ne marche pas, ils me renvoie tout de même Erreur "13" Problème d'imcompatibilités.......................

Le pire c'est que parfois il accepte quand je mets rien, mais parfois il plante... ça aussi je trouve completment pas logique...

Les 2 valeur serve car c'est ListBox1.List(ligne, colonne) Il sélectionne la ligne i et la colonne 9...
Mais ça ne marche toujours pas... toujours cette erreur, dans le débuger c'est marque que ma variable nbr0 et le ListBox1.List(i, 9) "0,4" mais ça ne passe pas même avec le CDbl devant...

Je suis trop bloqué la dessus...
0

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

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 oct. 2006 à 14:53
Cdbl utilise les paramèrte regionnaux...

si CDbl ( "0,4" ) ne fonctionne pas, je pense que tu utilises le point, sur ton poste ("0.4")

a se demander comment tu t'es retrouvé avec cette virgule....

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
24 oct. 2006 à 14:57
Essaye dans ce cas juste pour voir de déclarer nbr en type Variant et affiche dans une message box le contenu de nbr.
Tu as toujours ta virgule ? Pas un point ou autre chose ?
Et essaye ensuite de convertir ta variable avec Cdbl...

Mais puisque tu parles de virgule, moi j'ai une préférence pour le type de variable Currency.

Dim nbr as Currency
Et pour convertir un type String, on utilise CCur

Mais ça dépend de tes besoins.

Molenn
0
B0mbJacK Messages postés 141 Date d'inscription lundi 23 février 2004 Statut Membre Dernière intervention 25 octobre 2006 1
24 oct. 2006 à 15:01
Lu,
à la base, la listbox à qu'une colonne..
ton code est pas bon : ListBox1.List(i, 9) = "0,4"

sauf par api, on peut en mettre plusieur
0
cs_Gokuan Messages postés 51 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 17 novembre 2008
24 oct. 2006 à 15:01
yep, non c'est un point qui s'affiche et non une virgule... aie aie... suis paumé...
0
cs_Gokuan Messages postés 51 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 17 novembre 2008
24 oct. 2006 à 15:13
hello, yep c'est ce que j'ai cru à la base, mais non, on peut avoir des colonnes grâce à la fonction List, mais le souci, c'est que justement tout fonctionne, mais y une erreur au niveau des variables, si je les mets tous en variant, ben ça marche nickel sauf que au lieu de marquer "1" qui serait le résultat de 0.4+0.6 il me marque 0.40.6......

Voilà mon souci... et juste avant si jamais je vais chercher les informations sur une feuille excel,  comme ceci

ListBox1.List(i, 9) = Cells(Row, 14).Value
0
cs_Gokuan Messages postés 51 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 17 novembre 2008
24 oct. 2006 à 16:12
REEEEEEEEEEEEEEEEEEEEEEEEEEEE!!!!!!!!!!!¨¨

Vi alors désolé, j'ai fait un test avec un MsgBox (Nbr) et effectivement c'est 0,4!!!!
donc pas de point... c'est logiquement pour ça que ça ne fonctionne pas, mais pourquoi??? dans excel, c'est bien un point ou je récupère la valeur... comment je peux faire ???

C'est urgent en +... aidez moi merci
0
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
24 oct. 2006 à 16:47
Ce n'est pas une solution propre dans ton cas, il faudrait mieux trouver pourquoi tu  remontes une virgule et non un point, mais tu peux toujours contourner en remplaçant le virgule par un point dans ton expression. Avant le calcul, tu rajoutes :


nbr = replace(nbr,",",".")

Molenn
0
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
24 oct. 2006 à 16:49
Autre solution peut-être : tu récupères la valeur dans EXCEL, tu dois donc avoir quelque chose qui ressemble à Variable = range("A1").value
Remplace donc par Variable = range("A1").text

Molenn
0
cs_Gokuan Messages postés 51 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 17 novembre 2008
24 oct. 2006 à 20:59
Hello Molenn, je vois pas très comment tu dis de faire... mais tu vois... là grosse surprise, j'ai simplement créer une variable exemple de type Variant en haut de mon code, ensuite là ----->


ListBox1.List(i, 7) = Cells(Row(une variable pour la ligne, référence a ma grosse boucle), 18).Value


J'ai juste rajouté ça avant de mettre la suite sous cette ligne


exemple = ListBox1.List(i, 7)


Nbr = ListBox1.List(i, 7)  ben mtn ça marche, il mets directement en point...??? soit y a pas de logique... ou je alors c'est que je comprends vraiment plus rien... serait-ce un bug???
0
Rejoignez-nous