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

2 actions pour 1 seule traduction

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

titiborregan5

XLDnaute Accro
Bonjour le forum,

Je souhaite ouvrir un fichier .csv via une macro ! Sauf que la traduction en VBA est la même pour 2 actions différentes, aux résultats pas exactement similaires !!

Je m’explique !
Pour mon fichier .csv qualifié de « Fichier de valeurs séparées par des virgules Microsoft Excel »

· En double-cliquant sur mon fichier .csv pour l’ouvrir, Excel l’ouvre mais de façon très brute, sans aucune mise en forme, tout dans une seule colonne. Cela se traduit par : workbooks.open(…)

· Alors qu’en ouvrant Excel pour obtenir un nouveau classeur, puis en faisant Fichier/ouvrir/ il me l’ouvre en faisant les mises en forme nécessaires, c’est à dire qu’il me sépare le texte en colonne. En passant par l’enregistreur de macro il me marque aussi : workbooks.open

Lorsque je colle le code dans une nouvelle macro ou que je réutilise ce dernier, mon fichier est toujours ouvert de façon brute (1er cas)…
Que faire pour que le 2nd soit appliqué…
En espérant avoir été clair, sinon n’hésitez pas !

Merci d’avance

Tibo
 
Re : 2 actions pour 1 seule traduction

Bonjour Pierrejean, le forum,


La .csv que je récupère n'est pas anonyme donc difficile de le mettre ici.
Lorsque je le rends anonyme et que je l'enregistre sous un autre nom cela ne marche plus...
Je dois passer par convertir, choisir le "délimiteur" et il me crée les colonnes dès qu'il trouve les ";".

Je vous ai mis deux fichiers, un .csv et un .xls
Le .csv est le fichier téléchargé tel qu'il apparaît quand on l'ouvre "normalement". Je n'y ai laissé que les titres
Le .xls comprend : 1 feuille comme le .csv et sur l'autre le résultat quand on passe par fichier/ouvrir ... ou lorsqu'on passe par outils/convertir

J'espère que ça va pouvoir vous aider??

Mercu d'avance
Tibo
 

Pièces jointes

Re : 2 actions pour 1 seule traduction

Re

Si le fichier csv est dans le même dossier que le fichier ou est la macro:

Code:
Sub Macro1()
chemin = ThisWorkbook.Path
NomFichier = chemin & "03 mai 2010 Résultats 3.csv"
    Workbooks.OpenText Filename:=NomFichier, Origin:= _
        xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
        xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, _
        Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1)
End Sub

Sinon adapter chemin= nom complet du repertoire ou est le .csv
 
Re : 2 actions pour 1 seule traduction

Re,
oui ok mais comment faire pour ne pas passer par cette macro?? mais par une qui fait la 1ère condition :
 
Re : 2 actions pour 1 seule traduction

Re

Je m'apercois avec horreur que le code que je t'ai donné ne fait pas mieux que le simple Opentext

Teste celui-ci

Code:
Sub Test()
chemin = ThisWorkbook.Path
NomFichier = chemin & "03 mai 2010 Résultats 3.csv"
Workbooks.OpenText Filename:=NomFichier
For n = 1 To Range("A65536").End(xlUp).Row
x = Split(Range("A" & n), ";")
  For m = LBound(x) To UBound(x)
    Cells(n, m + 1) = x(m)
  Next m
Next n
End Sub
 
Re : 2 actions pour 1 seule traduction

Re

OK , alors teste ceci

Code:
Sub test()
Dim wks As Workbook
chemin = ThisWorkbook.Path
NomFichier = chemin & "03 mai 2010 Résultats 3.csv"
Workbooks.OpenText Filename:=NomFichier
Set wks = ActiveWorkbook
For n = 1 To wks.Sheets(1).Range("A65536").End(xlUp).Row
x = Split(wks.Sheets(1).Range("A" & n), ";")
  For m = LBound(x) To UBound(x)
    wks.Sheets(1).Cells(n, m + 1) = x(m)
  Next m
Next n
End Sub
 
Re : 2 actions pour 1 seule traduction

Bonjour pierrejean, le forum

le code marche, par contre ce coup-ci il me garde les guillemets!!
Avec cette méthode je n'arrive pas à les supprimer...
En passant par consolider, en indiquant comme indicateur de texte " cela fonctionne??
Une idée peut-être??

Merci d'avance

Très cordialement,
Tibo
 
Re : 2 actions pour 1 seule traduction

Re

Sans les guillemets

Code:
Sub test()
Dim wks As Workbook
chemin = ThisWorkbook.Path
NomFichier = chemin & "03 mai 2010 Résultats 3.csv"
Workbooks.OpenText Filename:=NomFichier
Set wks = ActiveWorkbook
For n = 1 To wks.Sheets(1).Range("A65536").End(xlUp).Row
x = Split(wks.Sheets(1).Range("A" & n), ";")
  For m = LBound(x) To UBound(x)
    wks.Sheets(1).Cells(n, m + 1) = Trim(Replace(x(m), """", ""))
  Next m
Next n
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…