Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 VBA - recherche et remplace

Kharan

XLDnaute Nouveau
Bonjour à tous,

J'ai un soucis avec une macro VBA. J'ouvre un CSV (séparateur point-virgule et séparateur décimal le point)
J'essaie de faire une fonction recherche et remplace comme ceci :

ActiveWorkbook.Sheets("Data").Range("A1:G8000").Replace What:=".", Replacement:=","

Mon fichier compte une dizaine de milliers de ligne, et parmis celle ci je retrouve des ligne ou le point disparait sans être remplacé... mais pas tout le temps.

Exemple :

1.03 => 1,03
1.02 => 1,02
1.03 => 103

J'ai tenté de forcer un format type 0,00 avant mais rien n'y fait.

Merci
 

Kharan

XLDnaute Nouveau
Bonjour

Je ne suis pas sur que ça soit la bonne façon de procéder .. je vois envoie mon code et un exemple de données pour essayer de comprendre mon problème.
 

Pièces jointes

  • test vba recherche remplace.xlsm
    18.9 KB · Affichages: 3
  • Nouveau document texte (2).txt
    791.8 KB · Affichages: 6

Cousinhub

XLDnaute Barbatruc
Inactif
Re-,
Pour ma part, j'utilise très peu le vba, donc ce sera sans...
Par contre, avec ma méthode :
- Donnée/A partir d'un fichier texte/CSV
- Aller chercher le fichier à son emplacement
- Importer
- Une fenêtre va s'ouvrir, cliquer sur "Transformer"
- L'éditeur Power Query va s'ouvrir, cliquer sur "Supprimer les lignes"/"Supprimer les lignes du haut" et choisir 2
- Cliquer sur "Utiliser la première ligne comme en-tête
- Sélectionner toutes les colonnes (clic sur la 1ère, appui sur "Shift", appui sur la dernière)
- Dans le ruban "Transformer", cliquer sur "Remplacer les valeurs", et mettre le point à chercher, remplacer par la virgule
- Puis, juste à côté, "Type de données", choisir "Nombre décimal"
Et enfin, Ruban "Accueil", cliquer sur "Fermer et charger"
Et tu as ton fichier...
Bon courage
 

Kharan

XLDnaute Nouveau
Je comprend ce que vous me proposez et la méthode est bonne.
Mais je veux utiliser vba pour permettre a différents utilisateurs d'effectuer la manip rapidement et sans avoir besoin de connaissances dans le domaine.
Votre méthode fonctionne mais je n'arrive pas a la répéter via vba .. merci quand même !
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

@Kharan
En passant
Mais je veux utiliser vba pour permettre a différents utilisateurs d'effectuer la manip rapidement et sans avoir besoin de connaissances dans le domaine.
Bah, justement la piste proposée par @Cousinhub est la plus indiquée
Car une fois la requête PQ créé dans le classeur, l'utilisateur final n'a plus qu'à faire Données/Actualiser tout.

En cas d'emploi de code VBA, quid si l'utilisateur final se retrouve devant ce type d'erreur ?

Il ne saura pas quoi faire, non ?

Mais puisque tu sembles vouloir du VBA, alors voila du VBA
(qui fonctionne sur mon PC)
NB: Adapter le chemin et le nom du fichier
VB:
Sub Macro1()
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;C:\Users\STAPLE\EXCEL\Nouveau document texte (2).txt", _
        Destination:=Range("$A$1"))
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow = 3
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1)
        .TextFileDecimalSeparator = "."
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
End Sub
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…