Format décimal

ntan-évindi

XLDnaute Occasionnel
Bonjour à toutes et à tous,

Je reçois, de l’intranet de la société, un fichier au format Excel, les chiffres sont dans un format particulier :
- les chiffres ronds par exemple 15 ou 20 sont écrits tel quel
- les chiffres avec décimales sont écrits 18.1 (avec un point et non une virgule)
ne me demandez pas pourquoi, le fichier est écrit non pas en php mais avec un logiciel qui s’appelle 4D …quelque chose ?

Bref, pour traiter mon fichier et en tirer des reportings, je fais :

Sub Select_et_remplace()

Range("C9:AF350").Select
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

Range("C9:AF350").Select
Selection.NumberFormat = "0.00"

………………

Or, si je remplace bien le point par la virgule, rien à faire pour le format 0,00. Cela ne me gêne pas pour utiliser des formules de toutes sortes même matricielles ; mais à la lecture, ceux à qui les reportings sont destinés rallent (il y a des en… de mouches).

Mais plus grave en récupérant les chiffres qui m’intéressent dans un tableau pour générer un graphique, c’est impossible ; pour générer ce graphique je dois recopier à la mano dans un tableau identique les chiffres pour y arriver.

Est-ce que problème dit quelque chose à quelqu’un ou bien est-ce que je déconne quelque part ?

Dans l’attente d’une réponse (mais de grâce ne me dites pas que je déconne) et avec mes remerciements,

Cordialement.
 

JNP

XLDnaute Barbatruc
Re : Format décimal

Bonjour le fil :),
Dans la même veine que Pierre-Jean
Code:
Sub Select_et_remplace()
Dim Cellule As Range
Range("C9:AF350").Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
For Each Cellule In Range("C9:AF350")
Cellule = Cellule * 1
Next
Range("C9:AF350").NumberFormat = "# ##0.00"
End Sub
Bon dimanche :cool:
PS : Les p'tites b...es, il y en a plein nos processeurs :p
 

Staple1600

XLDnaute Barbatruc
Re : Format décimal

Bonjour à tous


Pour éviter la boucle

Code:
Sub a()
With Range([A1], [A65536].End(xlUp))
.TextToColumns Destination:=.Cells(1, 1), DecimalSeparator:="."
.NumberFormat = "0.00"
End With
End Sub
ps: retrouvé ici
(j'en profite pour resaluer ROGER2327 qui m'inspira sur ce coup là)

Le souci c'est que cela ne fonctionne que sur une colonne ...
 
Dernière édition:

ntan-évindi

XLDnaute Occasionnel
Re : Format décimal

Bonjour à tous

Merci à tout le monde pour vos réponses, cela m'avance bien et je progresse.
Hier encore je ne faisais que des tableaux, aujourd'hui je fais du VBA, enfin je fais... je bricole! mais c'est toujours un début.
Cordialement.
Ntang

Il n'est pas nécessaire d'espérer pour entreprendre ni de réussir pour persévérer.
(Guillaume d'Orange - pas France Télécom)
 

ntan-évindi

XLDnaute Occasionnel
Re : Format décimal

Bonsoir

PierreJean; je viens de tester ton code, malheureusement après un début ou j'ai vu les chiffres se transformer ligne par ligne au format décimal, j'ai du arrêter en faisant fin de tâche, tout était bloqué.

JNP, j'ai également testé ton code: il y a un bug au niveau de :"Cellule = Cellule * 1" que je suis pas arrivé à débugué.

Je continue à chercher, mais si vous avez autre chose, ce sera avec le plus grand plaisir.

Pour parodier Nietzsche, tout ce qui ne tue pas mon code, le rend plus fort.

Encore Merci.
 

pierrejean

XLDnaute Barbatruc
Re : Format décimal

Re

Si c'est une question de patience tester:

Code:
Sub test2()
tablo = Range("C9:AF350")
For n = LBound(tablo, 1) To UBound(tablo, 1)
  For m = LBound(tablo, 2) To UBound(tablo, 2)
     tablo(n, m) = Val(tablo(n, m))
  Next m
Next n
Range("C9:AF350").NumberFormat = "0.00"
Range("C9:AF350") = tablo
End Sub

Sinon: Pour eviter les non compatibiltés mettre en tête de macro
Code:
on error resume next
 

ntan-évindi

XLDnaute Occasionnel
Re : Format décimal

En réponse à Staple 1600 - JM, je n'ai pas encore testé le tien, mais je vais le faire, je ne dédaigne pas les propositions qui me sont faites, je suis heureux d'avoir des réponses et respectueux des efforts des autres.
Mais par contre je suis lent en règle général, c'est du à l'âge, et aujourd'hui c'est dimanche alors peut être le vin blanc doux ajoute à ma lenteur!!!
 

ntan-évindi

XLDnaute Occasionnel
Re : Format décimal

Je viens de tester les deux derniers codes reçus:
- celui de Staple 1600 fonctionne parfaitement et c'est la solution que j'ai adoptée compte tenu des spécificités de mon fichier (j'ai seulement du répéter le code autant de fois qu'il y avait de colonnes non vides).
- le code de PierreJean fonctionne parfaitement et plus rapidement, cependant il complète le tableau dans son entier de AF 350 à C9 en comblant les cellules vides par des 0, je ne peux donc l'adopter car en ligne 351 je récupère par une formule matricielle le contenu des cellules de la dernière ligne et en l'occurence avec ce code je ne récupère plus que des 0.

>Mais ceci dit je suis très heureux de ces deux codes et ce qui ne me sert pas aujurd'hui me servira plus ard ou à d'autres.

Très cordialement.
Ntang.
 

Staple1600

XLDnaute Barbatruc
Re : Format décimal

Re



Pour n'exécuter qu'une seule fois la macro dans une sélection de plusieurs colonnes

Code:
Sub b()
Dim col&, i&
Application.ScreenUpdating = False
With Selection
    col = .Columns.Count
        For i = 1 To col
        .Columns(i).TextToColumns Destination:=.Cells(1, i), DecimalSeparator:="."
        .NumberFormat = "0.00"
        Next i
End With
Application.ScreenUpdating = True
End Sub
Mais dans ce cas, revoilà la boucle ;)

PS: dans mon précédent, je posais juste 2 questions (avec juste une pointe d'ironie amicale)
 
Dernière édition:

pierrejean

XLDnaute Barbatruc
Re : Format décimal

Re

pour le fun

Code:
Sub test2()
tablo = Range("C9:AF350")
For n = LBound(tablo, 1) To UBound(tablo, 1)
  For m = LBound(tablo, 2) To UBound(tablo, 2)
     [COLOR=blue]if tablo(n,m)<>""[/COLOR] then tablo(n, m) = Val(tablo(n, m))
  Next m
Next n
Range("C9:AF350").NumberFormat = "0.00"
Range("C9:AF350") = tablo
End Sub
 

ntan-évindi

XLDnaute Occasionnel
Re : Format décimal

En réponse les deux dernières versions de code fonctionnent et en réponse à PierreJean c'est vraiment pour le fun, en réponse à JM le dernier code fonctionne aussi et les boucles ne me dérangent pas (surtout celles qui sont dans les chveux de ma femme).

Pour terminer j'ai maintenant une macro qui fonctionne à merveille et c'est un vrai plaisir d'appuyer sur les boutons liés à mes macros.
Je vous en remercie.
A bientôt.
Ntang
 

Staple1600

XLDnaute Barbatruc
Re : Format décimal

Re

Pour pouvoir saluer pierrejean
et pour jouer avec mes endives avec le fun de pierrejean ;)

Code:
Sub test2a()
With Range("C9:AF350")
    tablo = Range("C9:AF350").SpecialCells(xlCellTypeConstants, 2)
    For n = LBound(tablo, 1) To UBound(tablo, 1)
        For m = LBound(tablo, 2) To UBound(tablo, 2)
        tablo(n, m) = Val(tablo(n, m))
    Next m
    Next n
    .NumberFormat = "0.00"
    .Value = tablo
End With
End Sub
 

Statistiques des forums

Discussions
312 756
Messages
2 091 738
Membres
105 060
dernier inscrit
DEDJAN Gaston