Remplacer un point de separation de milliers

laurene13

XLDnaute Nouveau
Bonjour,

J'ai un probleme, j'ai un extract avec des chiffres contenant un point comme séparateur de milliers.

Exemple :

3.003,45
34,78
59.799,67
1.008.300,78
567,45

J'ai besoin de supprimer ce point car sinon on ne peut pas faire d'operations sur ces chiffres, ils ne sont pas reconnus comme des nombres.

J'ai donc codé en VBA un replace (meme fonction que le ctrl H) :
Code:
    Worksheets("Feuil1").Activate
    Columns("C:F").Select
    Selection.Replace What:=".", Replacement:="", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=True

VBA va alors supprimer les points dans les chiffres ou il y en a, mais dans ceux ou il n'y en a pas il supprime egalement les virgules ! Moi je souhaiterais qu'il n'y ait pas de suppression de virgule du tout.

Ca me donne sur mon exemple
3003,45
3478
5799,67
1008300,78
56745

J'ai verifie mes options regionales sous Windows, je suis en francais, et j'ai essaye de faire replace WHat :=Chr(46) au lieu de "." Ca ne marche pas mieux.

Une idee ?

Merci
Laurene.
 
G

Guest

Guest
Re : Remplacer un point de separation de milliers

Lauren, RenaudEr,

Chez moi ça le fait pas non plus avec la macro enregistrée par l'enregistreur de macro.

Celui-ci cherche dans les valeurs le point hors il ne faut le remplace que dans le text afficher.

Avec la macro suivante, cela le fait:

Code:
Sub RemplacerPoints()
    Dim Derligne As Long
    Dim ligne As Long, Col As Long
    For Col = 3 To 6
        Derligne = Cells(Rows.Count, Col).End(xlUp).Row
        For ligne = 1 To Derligne
            If Not IsEmpty(Cells(ligne, Col)) Then
                Cells(ligne, Col).Value = CDbl(Replace(Cells(ligne, Col).Text, ".", ""))
            End If
        Next ligne
    Next Col
End Sub

A bientôt
 

tototiti2008

XLDnaute Barbatruc
Re : Remplacer un point de separation de milliers

Bonjour à tous,

Chez moi aussi ça bug...

une proposition mais il ne considère pas vraiment les résultats comme des nombres...

Code:
    Columns("C:F").SpecialCells(xlCellTypeConstants, 2).Replace What:=".", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
 

laurene13

XLDnaute Nouveau
Re : Remplacer un point de separation de milliers

Renauder,

J'ai moi aussi excel 2003 et pourtant ca ne fonctionne pas :confused:

Hasco, je ne comprends pas ce que tu veux dire par "celui-ci cherche dans les valeurs le point hors il ne faut le remplacer que dans le texte affiche"

De plus, j'ai essaye ta macro, elle fonctionne sauf que j'ai des tas de cellules au milieu de ces chiffres qui ne contiennent pas des valeurs compatibles avec Cdbl....Genre du texte sans chiffres, et notamment des cellules ou il n'y a rien en apparence sauf qu'en fait il y a un texte constitue d'espaces uniquement.....Et oui, c'est un extract d'un mauvais logiciel de reporting qui sort des fichiers excel difficiles a exploiter.....Avec des espaces partout !

Une idee pour contourner la difficulte ?

De plus, j'aurais aimé eviter les boucles, car j'ai pas mal de lignes et 3 colonnes....Donc j'ai peur que ca ne devienne lourd en temps de traitement. Je me trompe ?

Merci en tout cas de vos reponses.
 
G

Guest

Guest
Re : Remplacer un point de separation de milliers

Re,

Hasco, je ne comprends pas ce que tu veux dire par "celui-ci cherche dans les valeurs le point hors il ne faut le remplacer que dans le texte affiche"

Une cellule possède une valeur intrinsèque dont se sert excel pour faire les calculs et un text affiché qui peuvent être différent. L'exemple le plus parlant sont les dates dont les valeurs sont des nombres (39737) avec un texte affiché 'dd/mm/YYYY' (16/10/2008).

Ta macro du post1 recherche dans les valeurs tous les points pour les remplacer par rien. hors excel conserve les valeurs avec un point pour la virgule. C'est pour cela que tes virgules disparaissaient.

Si tu ne veux pas de boucle essai la soluce de tototiti qui remplace les points dans les constantes textuelles. Mais faudra faire une conversion après.

Sinon :

Code:
Sub RemplacerPoints()
    Dim Derligne As Long
    Dim ligne As Long, Col As Long
    Application.Calculation=xlCalculationManual 'Pour aller plus Vite
    For Col = 3 To 6
        Derligne = Cells(Rows.Count, Col).End(xlUp).Row
        For ligne = 1 To Derligne
            If Not IsEmpty(Cells(ligne, Col)) Then
                [B]Cells(ligne, Col)= Replace(Cells(ligne, Col).Text, ".", "")[/B]
            End If
        Next ligne
    Next Col
   Application.Calculation=xlCalculationAutomatic
End Sub

Excel comprendra ce qu'il a à faire.

A+
 
Dernière modification par un modérateur:

laurene13

XLDnaute Nouveau
Re : Remplacer un point de separation de milliers

Merci Hasco pour l'explication, c hyper clair ! Je comprends bien mieux le souci....

J'ai mis "on error resume next" dans ton code avant le Not is empty et ca marche, et sinon j'ai utilise la soluce de Titito, qui en effet, m'affiche des resultats en texte.

Mais bon derriere quand je reprends ces resultats, pour les mettre dans une autre feuille, ils deviennent des nombres, donc pas de probleme avec cette histoire de nombres stockes sous forme de texte.

Maintenant, ca a l'air de fonctionner...

Merci a vous tous, et merci pour l'explication du pourquoi du comment, au moins je reposerai pas la question deux fois !
 

Discussions similaires

Statistiques des forums

Discussions
312 457
Messages
2 088 573
Membres
103 883
dernier inscrit
morgane31