Changer format cellule de texte en chiffres (Sur une colonne)

  • Initiateur de la discussion Guillaume
  • Date de début
G

Guillaume

Guest
je veux automatiser un changement de format de cellules mais VBA ne reproduit pas ce que je fais avec Excel seul.
LEs cellules sont à l'origine exportées de Siebel avec € et en format standard.
Version Excel pure:
1)je sélectionne la colonne
2) je vais dans le menu "remplacer", je choisis " €" par "" et du coup ma cellule prend déjà un format chiffre.

En VBA: la même procédure ne fait que remplacer mes " €" par "" mais les chiffres restent à gauche, donc Excel ne peut plas additionner les cellules.

Merci de votre aider et bonne soirée


Réponse de Ronan:
En + simple

Dim valeur As String
Dim valeur2 As Double
valeur = Range("a1").Value
valeur2 = Replace(valeur, " €", "", 1)
Range("a1").Value=valeur2

Nouvelle QUESTION:
bonjour Ronan le nocturne,

ta formule est ok sur une cellule mais comment l'appliquer sur une colonne entière stp?
Guillaume
 
A

Arnaud

Guest
Salut
Pour Avoir un code qui marche, tu peux esayer d'enregistrer une macro.
Pendant ton enregistrement, tu sélectionne ta colonne, tu fait ton changement de format, et tu valide
Ensuite, va voir ce que ca te donne dans VBA.
C'est une méthode un peu "bateau", mais qui à l'avantage de donner de bon résultats.
Bon courage
Arnaud
 
G

Guillaume

Guest
Bonjour Arnaud,

ce que j'expliquais hier, c'est que le gag c'est qu'en enregistrement ok mais en lancant la macro ainsi enregistrée ca ne marche pas! D'où la solution de Renan mais que je ne réussis aps à étendre à plus D'une cellule à la fois. Comme mon tableau à 4000 lignes il y a un hic!
Merci quand même
Guillaume
 
F

F.Launay

Guest
Bonjour
pour resoudre ton problème tu selectionnes la zone en question et tu fais
une boucle avec les instruction For each.....action...... next
et ton taitement s'appliquera à l' ensemnle de la zone.
Bon courage
Exemple
For Each c In Selection
c.Offset(0, 0).FormulaR1C1 = "=Rc[-2]-Rc[-1]"
c.Offset(0, 1).FormulaR1C1 = "=abs(Rc[-1])/Rc[-2]-1"
Next
 
G

Guillaume

Guest
Merci F,

ca ne marchait aps. J'ai trouvé sur un forum allemand la solution suivante que je recopie pour info:

Sub Zahlen_auslesen()
decimalseparation= ","
For i = 1 To 3
valeur = Cells(i, 1).Value 'Exemple A1 à A3
cellvaleur = ""

For k = 1 To Len(wert)
z = Mid(wert, k, 1)
If Not (Asc(z) > 47 And Asc(z) < 58) Then
If z = decimalseparation Then
If Not Asc(Mid(wert, k + 1, 1)) > 47 And Asc(Mid(wert, k + 1, 1)) < 58 Then
z = ""
End If
Else
z = ""
End If
End If
cellvaleur= cellvaleur& z
Next k

Cells(i, 2).Value = CDbl(zellwert) 'valeurs recopiées dans B1 bis B3
Next i

End Sub
 

Discussions similaires

Réponses
3
Affichages
158

Statistiques des forums

Discussions
312 215
Messages
2 086 330
Membres
103 187
dernier inscrit
ebenhamel