[RESOLU] Convertir texte (MB,GB,TB) en valeur numérique

Emmanuel31

XLDnaute Occasionnel
Bonjour à toutes et à tous. :)

Je suis à la recherche d'un p'tit bout de code qui pourra me sortir une belle épine du pied.
Mon soucis vient d'un fichier de sortie qui me donne des valeurs de volumes en format texte avec la nomenclature suivante dans les cellules :
1 TB
0.99 TB
650 GB
42.4 MB

Je souhaiterais transformer tout cela en base GB afin de pouvoir faire des sommes.
J'ai déjà fait mon code pour changer les "." en "," , et pour supprimer l'extension " GB" (vu que c'est la référence).

Pouvez-vous m'aider pour la suite svp :confused: :
1 TB -> 1000
0.99 TB -> 990
650 GB -> 650
42.4 MB -> 0,042

Le but étant de remplacer le contenu des cellules et non créer une colonne à coté avec les valeurs numériques.

Merci à vous :eek:
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Convertir texte (MB,GB,TB) en valeur numérique

Bonjour Emmanuel31,

Surtout ne pas remplacer les points par des virgules.

Exécuter ce petit bout de code :

Code:
Sub Convertir()
Dim cel As Range
For Each cel In Range("A1", [A65536].End(xlUp)) 'plage à adapter
  If cel Like "*TB" Then
    cel = Val(cel) * 1000
  ElseIf cel Like "*GB" Then
    cel = Val(cel)
  ElseIf cel Like "*MB" Then
    cel = Val(cel) / 1000
  End If
Next
End Sub
Les valeurs sont supposées en colonne A.

A+
 

job75

XLDnaute Barbatruc
Re : Convertir texte (MB,GB,TB) en valeur numérique

Bonjour le fil, le forum,

Autre solution :

Code:
Sub Convertir()
Dim cel As Range, e As Variant
For Each cel In Range("A1", [A65536].End(xlUp)) 'plage à adapter
  e = Evaluate(Replace(Replace(Replace(cel.Text, "TB", "*1000"), "GB", ""), "MB", "/1000"))
  If IsNumeric(e) Then cel = e
Next
End Sub
A+
 

Statistiques des forums

Discussions
312 304
Messages
2 087 061
Membres
103 447
dernier inscrit
DamD