Remplacement de caractère qui fonctionne de façon "aléatoire"

Bonjour,

Je dois remplacer des "." par des "," dans certaines colonnes afin que les données soient considérées comme des valeurs. Le bon vieux "CTRL + F" --> puis remplacer fonctionne bien mais je dois automatiser cette étape au sein d'une longue macro et le code suivant me produit des résultats très aléatoires, remplaçant le point "un peu où ça veut bien" ;)

Auriez-vous svp un un avis à ce sujet?

Merci beaucoup!

Hugo

Columns("N:N").Select

Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

Et une fois sur 3, même avec le CTRL + F, j'obtiens un très dérangeant "Désolé.... Nous n'avons trouvé aucun élément à remplacer......". Mes cellules ont pourtant bien le format de nombres

Bonsoir

Cordialement

Bonjour à vous,

Il ne s'agit pas du bon fichier (fichier pro sensible) mais voici un exemple.

Merci, bonne journée!

10test-excel.zip (325.17 Ko)

Bonjour,

Qu doit-on faire dans ton fichier ?
Les dates et les nombres sont valides !.
Cdlt.

Bonjour,

Malheureusement, comme mentionné dans mon message précédent, je ne peux pas joindre le fichier original: j'aurais besoin d'une macro qui remplace, de façon totalement fiable, un caractère par un autre (en l'occurrence dans le fichier de base un "." par un ",") dans une ou plusieurs colonnes. En pratique ma macro ne fonctionne pas.

Merci!

Re,

Essaie ainsi :

Public Sub ConvertData()
Dim rng As Range, rng2 As Range
Dim lastCol As Long, lastRow As Long, lcol As Long
Const lRow = 5
    With ActiveSheet
        lastCol = .Cells(lRow, .Columns.Count).End(xlToLeft).Column
        For lcol = 3 To lastCol Step 3
            lastRow = .Cells(.Rows.Count, lcol).End(xlUp).Row
            Set rng = .Cells(lRow, lcol).Resize(lastRow - lRow + 1)
            Set rng2 = .Cells(lRow, lcol + 1).Resize(lastRow - lRow + 1)
            rng.TextToColumns Destination:=.Cells(lRow, lcol), _
                              DataType:=xlDelimited, _
                              FieldInfo:=Array(1, 4)
            rng2.TextToColumns Destination:=.Cells(lRow, lcol + 1), _
                               DataType:=xlDelimited, _
                               FieldInfo:=Array(1, 1), _
                               DecimalSeparator:="."
        Next lcol
        .Cells(lRow, 3).Resize(, lcol - 4).EntireColumn.AutoFit
    End With
End Sub

Bonjour

Comme Jean Eric.... si on n'a pas votre vrai fichier, on risque de tourner en rond.

Si la proposition de Jean Eric ne convient pas (cela m'étonnerait mais qui sait...) il vous suffit d'enlever les données sensibles et de reposter ou d'utiliser cet utilitaire --> https://www.excel-pratique.com/fr/utilitaires/anonymisation-donnees

Cordialement

Merci Jean-Eric, cela marche parfaitement bien.

Je ne sais juste pas comment faire pour cibler la conversion dans une colonne en particulier sinon éventuellement pour la totalité de l'onglet en question?

Pour répondre à la question de Dan, je ne peux, depuis mon ordinateur pro, pas accéder au forum, ni faire rentrer/sortir aucune données par email ou autres. C'est très sensible et très protégé ;)

Merci beaucoup!

Re,

Je ne comprends pas :

Je ne sais juste pas comment faire pour cibler la conversion dans une colonne en particulier sinon éventuellement pour la totalité de l'onglet en question?

La macro actuelle convertit les . en , dans certaines colonnes mais pas toutes ;)

Il faudrait soit que je puisse cibler une colonne en particulier, soit convertir les données de tout l'onglet.

Merci!

Re

Pour répondre à la question de Dan, je ne peux, depuis mon ordinateur pro, pas accéder au forum, ni faire rentrer/sortir aucune données par email ou autres. C'est très sensible et très protégé ;)

Pas de soucis.
Je vous laisse avec jean Eric qui suit votre demande.
Pensez aussi à la fonction excel disponible dans le menu Données -> Convertir qui peut résoudre parfois les problèmes

Corcialement

Re,
Peux-tu joindre un fichier représentatif ?
Cdlt.

Alors par exemple toujours pour le même fichier: comment changer les "." par des "," dans admettons la colonne Y, AB et AE ou l'entier de la feuille?

8test-excel.zip (325.17 Ko)

Re
Je pense qu'il y a confusion.
N'as-tu pas simplement un souci de format pour les dates ?
J'ai inhibé la partie conversion des données, qui apparemment n'est pas utile ?
A te relire.

Public Sub ConvertData()
Dim rng As Range, rng2 As Range
Dim lastCol As Long, lastRow As Long, lcol As Long
Const lRow = 5
    With ActiveSheet
        lastCol = .Cells(lRow, .Columns.Count).End(xlToLeft).Column
        For lcol = 3 To lastCol Step 3
            lastRow = .Cells(.Rows.Count, lcol).End(xlUp).Row
            Set rng = .Cells(lRow, lcol).Resize(lastRow - lRow + 1)
            Set rng2 = .Cells(lRow, lcol + 1).Resize(lastRow - lRow + 1)
            With rng
                '.TextToColumns Destination:=.Cells(lRow, lcol), _
                               DataType:=xlDelimited, _
                               FieldInfo:=Array(1, 4)
                .NumberFormat = "m/d/yyyy"
            End With
            With rng2
                '.TextToColumns Destination:=.Cells(lRow, lcol + 1), _
                               DataType:=xlDelimited, _
                               FieldInfo:=Array(1, 1), _
                               DecimalSeparator:="."
                .NumberFormat = "#,##0.0_ ;[Red]-#,##0.0 ;"
            End With
        Next lcol
        .Cells(lRow, 3).Resize(, lcol - 4).EntireColumn.AutoFit
    End With
End Sub

Les dates n'ont pas d'importance, j'ai un export d'un fichier avec des données financières dont les décimales sont séparées par un point et je dois avoir les décimales séparées par une virgule (setup excel commun là où je travaille, pas le choix).

Donc dans l'absolu la seule chose que je doit faire, quel que soit le type de donnée, c'est de pouvoir remplacer les "." par des "," dans une colonne spécifique ou éventuellement pour l'ensemble de l'onglet (même si ça met des "," dans les dates, pas grave). Sachant que la 1ère option est la meilleur. Le fichier en pièce jointe est juste un exemple.

Navré de ne pas être clair, merci encore pour ton aide!

Re,

Joins un fichier avant manipulations (avec les points).
Cdlt.

8test-excel.zip (325.17 Ko)

Merci.

Par exemple, toujours dans le même fichier, une macro qui convertit tous les "." en "," des colonnes S, V et Y

Re,

Tu envoies toujours le même fichier avec des dates et des nombres valides.
Cdlt.

Re-bonjour,

Oui car je ne peux pas envoyer l'original.

Les données mon le bon fichier sont valides, maintenant ma question est juste de savoir, à l'aide de votre macro, si c'est possible de cibler des colonnes spécifiques ou de remplacer les "." par "," sur toute la page ;)

Merci!

Rechercher des sujets similaires à "remplacement caractere qui fonctionne facon aleatoire"