Travail sur bases de données CSV

Fermé
Dom - Modifié le 29 oct. 2023 à 13:36
brucine Messages postés 18384 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 28 décembre 2024 - 29 oct. 2023 à 15:38

Bonjour,

Je suis à travailler sur une base de données au départ elle est enregistrée sous CSV mais les champs sont dans les colonnes seules une colonne nombres, ils sont écrits avec des points au lieu d'une virgule, j'ai donc utiliser la fonction recherche et j'ai remplacer les points par une virgule. Quand je crée le TCD, il ne prend pas en compte ma modification, j'ai essayé en faisant actualiser mais pareil . Comment puis je faire pour que le TCD en compte désormais le la virgule?

Je vous remercie. 
Windows / Chrome 118.0.0.0

A voir également:

2 réponses

cousinhub29 Messages postés 977 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 21 décembre 2024 348
29 oct. 2023 à 12:35

Bonjour,

Selon la version d'Office (si >= 2016, c'est nativement installé), l'utilisation de Power Query pourrait faciliter tous les traitements (Import, transformation, restitution vers TCD).

A voir?


0
jee pee Messages postés 40599 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 28 décembre 2024 9 465
Modifié le 29 oct. 2023 à 13:38

Bonjour,

Pour traiter un fichier CSV qui comporte des points sur du numérique, je renomme le fichier .CSV en .TXT et en l'ouvrant avec Excel on passe alors par un dialogue qui permet de séparer la ligne d'entrée en colonnes et sur les colonnes numériques de transformer le . en , (sélectionner la colonne + avancé).

Quand on ouvre le CSV et que tout est sur une seule colonne, on peut retrouver l'équivalent du traitement du .txt en entrée : sélectionner la colonne puis Données/Convertir

Cela c'est quand le CSV qui a comme séparateur décimal le point et comme séparateur de champ la virgule. Un format américain. Alors qu'un CSV format français aura comme séparateur de colonne le point-virgule, et comme séparateur décimal la virgule.

Pour un format bancal, séparateur de champ point-virgule et séparateur décimal point, on peut charger directement le . csv et sur chaque colonne contenant les numériques passer par Données/Convertir pour transformer le point en virgule.


0
brucine Messages postés 18384 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 28 décembre 2024 2 726
29 oct. 2023 à 14:53

Bonjour,

Je peux aussi remplacer directement dans le fichier texte le séparateur point par une virgule via un Batch:

 

@echo off
setLocal enableDELAYedexpansion
for /f "tokens=* delims=*" %%a in (bridge.txt) do (
set str=%%a
echo !str:.=,! >> bridge.csv
)

et même le faire directement sans transiter par un fichier texte: remplacer bridge.txt par le fichier original bridge.csv et la sortie bridge.csv par bridge1.csv puis supprimer bridge.csv

0
jee pee Messages postés 40599 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 28 décembre 2024 9 465 > brucine Messages postés 18384 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 28 décembre 2024
Modifié le 29 oct. 2023 à 15:18

On peut aussi le faire dans le bloc note, CTRL+H remplacer . par ,
 

Mais ces 2 méthodes ne sont valables que s'il n'y a pas de . dans des champs texte du fichier

0
brucine Messages postés 18384 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 28 décembre 2024 2 726 > jee pee Messages postés 40599 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 28 décembre 2024
29 oct. 2023 à 15:38

Il est spécifié si j'ai bien compris que les champs cible ne sont que numériques, je n'ai fait qu'obéir.

Si le fichier est de petite taille, on peut envisager des tas de variations sans se compliquer la vie.

Mais même s'il était important et renfermait d'autres champs contenant eux des points, on peut parfaitement par la même méthode soit ne traiter que les colonnes concernées, soit ne traiter le point que si les cellules qui le renferment contiennent au moins un caractère numérique avant et après.

0