Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/12/2011, 16h07   #1
Membre habitué
 
Inscription : janvier 2005
Messages : 527
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 527
Points : 134
Points : 134
Par défaut remplacer symbole + en début de phrase dans csv avant import

Bonjour à tous,




J'ai un csv que j'importe dans access. Je me suis rendue compte que j'importais des #NOM? car dans mon csv, il y a
Code :
,"...","+accident","..."
+accident devient =+accident soit #NAME? au moment de l'import avec la transformation text to column.





Je souhaite donc avant la transformation text to column, ajouter une apostrophe avant chaque symbole +
Code :
xlApp.Sheets("ImportCSV").Cells.Replace "+", "'+"
ça ne fonctionne pas, ça me met un message d'erreur "Le nom entré n'est pas valide".





J'ai également testé le code suivant qui ne fonctionne pas non plus:
Code :
1
2
Const ESCAPE As String = """"
xlApp.Sheets("ImportCSV").Cells.Replace "+", ESCAPE & "'+" & ESCAPE




Je m'en remets donc à vous. Merci par avance.
debdev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/12/2011, 17h49   #2
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
Bonjour Debdev,

Bizarre ton pb. J'ai esayé de mon côté et ... ça marche
Quel est le format de ton fichier .csv ?

As-tu essayé d'utiliser les spécifications d'import ?
__________________
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!
si tout est OK, n'oubliez pas de cliquer sur
dumas.blr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 08h49   #3
Membre habitué
 
Inscription : janvier 2005
Messages : 527
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 527
Points : 134
Points : 134
Salut dumas.blr, ça marche chez toi ? Quelle solution ?
Celle-ci
Code :
xlApp.Sheets("ImportCSV").Cells.Replace "+", "'+"
Ou celle-ci
Code :
xlApp.Sheets("ImportCSV").Cells.Replace "+", ESCAPE & "'+" & ESCAPE

Le fichier csv a les champs entre guillemets, chaque champ étant séparé par des virgules donc de la forme
Code :
"monChamp1","monChamp2","monChamp3"

Mon code est découpé en plusieurs parties:
1. Procédure qui fait l'équivalent de données/convertir pour basculer les champs en plusieurs colonnes
2. Procédure qui remplace les virgules séparateurs de champs par des points virgules
3. Procédure qui importe les données dans access via des spécifications d'import


Tout fonctionne bien. Le problème c'est que dans des champs de saisie libre, certains ont commencé leur phrase par des symboles +. A ma 1ère procédure, quand je bascule en plusieurs colonnes, ça me bascule en =+monChamp (si je regarde dans l'affichage de la cellule en haut du fichier excel) et #NOM! apparait (si je regarde dans la cellule en elle même). C'est la raison pour laquelle je voulais faire un replace.


En testant directement dans excel (sans passer par le vba ni par access), j'ai le même problème: je vous mets une copie d'écran avant et après le données/convertir pour illustrer le problème. Que le séparateur de champs soit la virgule ou le point virgule, on obtient la même chose. Idem si l'identificateur de texte est guillement ou rien.


Merci de votre aide.
Images attachées
Type de fichier : jpg Exemple.jpg (70,6 Ko, 5 affichages)
debdev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/12/2011, 22h29   #4
Membre éprouvé
 
Avatar de dumas.blr
 
Homme Jean-Yves DUMAS
Consultant informatique
Inscription : juin 2010
Messages : 325
Détails du profil
Informations personnelles :
Nom : Homme Jean-Yves DUMAS
Âge : 48
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant informatique
Secteur : Conseil

Informations forums :
Inscription : juin 2010
Messages : 325
Points : 447
Points : 447
Bonjour Debdev,

Il ne faut pas passer par Excel, mais pas l'importation de fichiers texte.

Il est d'abord important que le fichier Excel soir enregistré sous forme de fichier texte, avec l’extension que tu veux

J'ai utilisé comme exemple un fichier .csv que j'ai visualisé dans avec un éditeur de texte de la manière suivante :
Code :
1
2
"ch1","ch2","ch3"
"abc","+accident","cde"
Ce que je conseille :
Utilise d'abords l'assistant importation de texte menu "donnée externe - fichier texte"
L'assistant va identifier un format délimité, puis un séparateur "virgule", ainsi qu'un délimiteur de texte " (j'ai aussi coché "première ligne contient le nom des champs")
A ce moment-là, clique sur le bouton "avancé", et l'écran "spécification d'importation s'affiche" (Attention, là, j'ai changé le caractère du séparateur décimal, car il rentre en conflit avec la virgule-séparateur). Là, tu pourras enregistrer ce format d'importation (notament en enregistrant les étapes d'importation, comme le propose l'assistant), et le réutiliser dans un code VBA.
__________________
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème !!!
si tout est OK, n'oubliez pas de cliquer sur
dumas.blr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/12/2011, 10h36   #5
Membre habitué
 
Inscription : janvier 2005
Messages : 527
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 527
Points : 134
Points : 134


T'es un génie

T'imagines même pas le temps que j'ai passé (ça se compte en journées entières) pour réussir à importer mon csv.

En fait, là où j'avais mal pigé, c'est que j'avais mon csv:
- je basculais en colonnes
- je transformais la virgule en point virgule
- j'importais dans access en utilisant un fichier de spécification

Alors qu'importer directement le csv (où tout est en lignes) en utilisant un fichier de spécification, ça marche tout seul ! Pas besoin de mettre en colonnes... J'étais persuadée qu'il fallait un fichier avec des colonnes avant de l'importer dans access. Or cette étape en VBA est celle qui me posait souci pour le replace du "+".

Bref, non seulement tu as résolu mon problème du "+" mais en plus, vu que je ne passe plus par l'étape de transformation lignes/colonnes, ça va carrément plus vite

Un grand à toi

Bonne journée !
debdev est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h03.


 
 
 
 
Partenaires

Hébergement Web