Nombre stoqué sous forme de texte [Résolu]

Signaler
Messages postés
34
Date d'inscription
samedi 23 septembre 2006
Statut
Membre
Dernière intervention
17 février 2007
-
Messages postés
2
Date d'inscription
mardi 20 février 2007
Statut
Membre
Dernière intervention
26 mars 2007
-
Bonjour à tous, voila quand je renvois la valeur de mon textbox vers une cellule excel, excel le prend comme du texte et ne veut pas s'en servir pour faire les calculs demandés.

Comment préciser a VBA que TextBox1.Value Est un nombre et pas du texte ???

Cells(x + t, 3).Value = TextBox1.Value

14 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
36
Dsl, j'aurais du faire la vérif tout à l'heure au lieu de te répondre de mémoire.

La fonction Replace existe, sous Excel 2003 en tout cas. C'est simplement que le code de Fauve n'est pas bon.

Il faut écrire :

Dim valeur As String

TextBox1.Value = Replace(TextBox1.Value, ",", ".")
Cells(x + t, 3).Value = Val(TextBox1.Value)      ' val permet de convertir du texte en nombre

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
36
Cells(x + t, 3).Value = CInt(TextBox1.Value) si tu nombre est un entier
Cells(x + t, 3).Value = CSng(TextBox1.Value) si ton nombre est décimal

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
661
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
23 mars 2011
8
Salut,

Dans une TextBox, à ma connaissance, on ne peut mettre que tu texte mais rien n'empêche de convertir son contenu sous la forme. C'est là qu'intervient val qui permet de convertir un texte en un nombre.

Au préalable, il faut tester si le contenu de ta textbox peut être converti en nombre sinon ca entraîne une erreur lors de la conversion.

Voici le code :

If IsNumeric(TextBox1.Value) = True Then     ' Vrai si le contenu de la TextBox1 est un nombre
    Cells(x + t, 3).Value = val(TextBox1.Value)      ' val permet de convertir du texte en nombre
Else
    MsgBox "Veuillez saisir un nombre !!!"        ' Affichage d'un message si le contenu de la TextBox1 n'est pas un nombre
End If

(Coloration syntaxique automatique par Kenji)

Veuillez accepter la réponse si elle a résolu votre problème 
  
Messages postés
661
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
23 mars 2011
8
Salut,

    La méthode de casy est pas mal mais je prense que tu devrais prendre mon code car il faut controler si l'utilsateur a bien rentré un nombre dans ta textbox car s'il met dedans par exemple : 12z au moment de la conversion en nombre ca plante car 'z' il ne peut pas le convertir en nombre.

C'est pour cà que je testes si le contenu de la textbox est un nombre comme çà avec '12z' , IsNumeric sera False et il ne fera pas la conversion et evitera le plantage lors de la conversion

@+
Messages postés
14
Date d'inscription
vendredi 28 janvier 2005
Statut
Membre
Dernière intervention
14 février 2007

Bonjour,

Est ce que qu'un code dans le meme genre serait capable de faire automatiquement la conversion de toutes mes cellules en valeur numérique ? Parce que pour l'instant je n'ai trouvé que le système de faire a la main Selection de la colonne>Donnée>Convertir>Nombre mais j'ai plus de 16000 colonnes. Ca fait un bon moment que je patoge pour trouver comment écrire ce code mais je débute totalement en VBA......

Merci 1000 fois d'avance !
Elendis
Messages postés
661
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
23 mars 2011
8
Salut,

Est ce que tu peut être plus précis sur ce que tu veux faire ? Si je comprends bien toutes tes cellules sous excel contiennent des nombres sous la forme de texte et tu voudrais tous les convertir en nombre ?

@+
Messages postés
34
Date d'inscription
samedi 23 septembre 2006
Statut
Membre
Dernière intervention
17 février 2007

Merci fauve pour ton code, en effet le tien évite tout risque d'erreur, or dans mon cas le textbox n'est pas modifiable par l'utilisateur, il lui montre juste le résultat d'un calcul, donc je me sert de ton code sans vérifier le contenu.
Je te remercie pour ton code qui m'a appris la fonction isnumeric (et val() bien sur) qui m'a été très utile dans une autre partie de mon progr, meme chose pour toi casy merci pour Cint et Csng, je vois déja les parties de mo prog ou ca va me servir.

En tout cas ca fait plaisir d'apprendre de nvlles combines.

PS: les gars j'ai tjs mon soucis avec un combobox multicolonne qui n'affiche que la premiere colonne qd il se ferme, alors si vous avez qqchose a ce propos...

@+
Messages postés
34
Date d'inscription
samedi 23 septembre 2006
Statut
Membre
Dernière intervention
17 février 2007

Heu, en fait y a encore un p'tit soucis: je remplis mon textbox depuis une cellule excel, qd le nombre a une virgule (un point sur excel) la virgule dans le textbox n'est pas traitée par la fonction val. La fonction Csng , elle, me donne une valeur aprochee: ex 2.7 devient 2.70000004768371, Ok ca fait pas une grosse diff a la fin du calcul mais ca me dérange un peu.
Est ce que vous savez comment faire pour avoir un nombre "propre". Existe t-il un Numbox???
Messages postés
661
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
23 mars 2011
8
Salut,

Dim valeur As String

TextBox1.Value = TextBox1.Value.replace(",",".") ' La propriété Replace permet de remplacer le caractère ',' par '.'
Cells(x + t, 3).Value = val(TextBox1.Value)      ' val permet de convertir du texte en nombre

Coloration syntaxique automatique par Kenji)

Veuillez accepter la réponse si elle a résolu votre problème 
Messages postés
34
Date d'inscription
samedi 23 septembre 2006
Statut
Membre
Dernière intervention
17 février 2007

Ca marche pas sous vba:  erreur "objet requis", y a pas un petit truc qui change??
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
36
Replace n'existe pas en VBA me semble-t-il. Il faut que tu te la code toi même

Voici le code :

Public Function Replace(ByVal sIn As String, ByVal sFind As _
    String, ByVal sReplace As String, Optional nStart As _
     Long = 1, Optional nCount As Long = -1,
_
     Optional bCompare As VbCompareMethod = vbBinaryCompare) As
_
     String

    Dim nC As Long, nPos As Long
    Dim nFindLen As Long, nReplaceLen As Long

    nFindLen = Len(sFind)
    nReplaceLen = Len(sReplace)
    
    If (sFind <> "") And (sFind <> sReplace) Then
        nPos = InStr(nStart, sIn, sFind, bCompare)
        Do While nPos
            nC = nC + 1
            sIn = Left(sIn, nPos - 1) & sReplace &
_
             Mid(sIn, nPos + nFindLen)
            If nCount <> -1 And nC >= nCount Then Exit
Do
            nPos = InStr(nPos + nReplaceLen, sIn, sFind,
_
              bCompare)
        Loop
    End If

    Replace = sIn
End Function

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
34
Date d'inscription
samedi 23 septembre 2006
Statut
Membre
Dernière intervention
17 février 2007

Ca marche pas, tjrs la meme erreur.
Moi j'y connais pas grd chose, mais si je comprend bien tu crée la fonction replace avec replace(sIn,sFind,Sreplace)
sFind je suppose que c ","
sReplace c "."
et sIn c: "j'en sais rien"

J'aurai jamais cru que c'était si complique d'utilise un textbox pour des nombres, c'est qd meme fou ca qu'ils ai rien prevu de plus simple.
Messages postés
34
Date d'inscription
samedi 23 septembre 2006
Statut
Membre
Dernière intervention
17 février 2007

Haaaaaaaaaaa !!!
C'était si simple que j'aurais du trouver, désolé de déranger pour ca ( enfin ca vous fait réviser au moins !!!)
Merci et a plus.
Messages postés
2
Date d'inscription
mardi 20 février 2007
Statut
Membre
Dernière intervention
26 mars 2007

Merci à fauve pour ce code qui va me simplifier bien des choses...
Je ne trouve pas la propriété value pour TextBox1
Pour xavtry, le code modifié ci-après devrait fonctionner. :

TextBox1.Text = TextBox1.Text.Replace(",",".")
Cell(x+t,3).Value = Val(TextBox1.Text)

ou en plus condensé :

Cell(x+t,3).Value = Val(TextBox1.Text.Replace(",","."))

Merci à vous tous.