convertir texte en nombre

roybaf

XLDnaute Occasionnel
Bonjour à tous,

En utilisant la requête web d'excel j'importe un tableau dans une feuille.

Le problème est que les données sont au format texte, j'ai donc des erreurs quand j'essaie de faire un calcul.

J'ai essayé cnum() mais ca ne fonctionne pas.

Comment dire à excel que dans ma feuille "cours" les données recus en b:b doivent se convertir en nombre?

La requette s'actualise toutes les 5 min en fond.

Donc j'aimerais qu'à chaque actualisation les valeurs en b:b se mettent au format nombre

Du genre

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Range("b3:b3000").Value = CDbl(Range("b3:b3000").Value)

End Sub

Merci à tous.
 

Dull

XLDnaute Barbatruc
Re : convertir texte en nombre

Salut roybaf, le Forum

Suis pas sur moi mais essaye comme cela

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim i As Integer
For i = 3 To 3000
    Range("B" & i & ":B" & i) = CDbl(Range("B" & i & ":B" & i))
Next i
End Sub

Bonne Journée
 

job75

XLDnaute Barbatruc
Re : convertir texte en nombre

Bonjour roybaf, salut Dull :)

Ceci ne beuguera pas :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim c As Range
For Each c In Range("B3:B3000")
   If Not (IsEmpty(c) Or IsError(c)) Then _
     If IsNumeric(Replace(c, ".", ",")) _
       Or IsNumeric(Replace(c, ",", ".")) _
         Then c = Val(Replace(c, ",", "."))
Next
End Sub
Fonctionne quel que soit le séparateur décimal, dans les données de la feuille ou sur l'ordi.

Nota : pour gagner du temps d'exécution on peut utiliser un tableau VBA, attendez mon post suivant.

A+
 

job75

XLDnaute Barbatruc
Re : convertir texte en nombre

Re,

Chose promise chose due :

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim tablo, i As Long, t
tablo = [B3:B3000]
For i = 1 To UBound(tablo)
  t = tablo(i, 1)
  If Not (IsEmpty(t) Or IsError(t)) Then _
     If IsNumeric(Replace(t, ".", ",")) _
       Or IsNumeric(Replace(t, ",", ".")) _
         Then tablo(i, 1) = Val(Replace(t, ",", "."))
Next
[B3:B3000] = tablo
End Sub
L'exécution est donc très rapide.

J'ai oublié de rappeler que la macro est à placer dans le code de la feuille.

A+
 

job75

XLDnaute Barbatruc
Re : convertir texte en nombre

Re,

Une macro Worksheet_Change est peut-être préférable :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Range, tablo, i As Long, t
Set r = Intersect(Target, [B3:B3000])
If Not r Is Nothing Then
  tablo = Range(r, r(2)) 'au moins 2 cellules
  For i = 1 To UBound(tablo)
    t = tablo(i, 1)
    If Not (IsEmpty(t) Or IsError(t)) Then _
      If IsNumeric(Replace(t, ".", ",")) _
        Or IsNumeric(Replace(t, ",", ".")) _
          Then tablo(i, 1) = Val(Replace(t, ",", "."))
  Next
  Application.EnableEvents = False
  r = tablo
  Application.EnableEvents = True
End If
End Sub
Bien sûr ici seules les cellules modifiées sont converties.

A+
 

roybaf

XLDnaute Occasionnel
Re : convertir texte en nombre

Merci job 75,

J'ai néanmoins une question si je peux t'embêter encore un peu,

L'actualisation se fait toute les 5min en tâche de fond, et alimente un autre tableau qui utilise ces données pour opérer des calculs, sauf que lorsque l'actualisation se fait, il faut que je sélectionne ma feuille pour que la conversion s'opère, n'y aurait-il pas un moyen pour que la conversion se fasse sans a avoir a sélectionner la feuille source après chaque actualisation?
 

Discussions similaires

Statistiques des forums

Discussions
312 338
Messages
2 087 397
Membres
103 535
dernier inscrit
moimeme1