Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.
  • Initiateur de la discussion Initiateur de la discussion Lynk Zel
  • Date de début Date de début

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 !

L

Lynk Zel

Guest
bonjour ,

voila mon problème.

1 - j'aimerai cliquez sur un bouton "IMPORT FICHIER" qui m'ouvre la fenêtre windows avec tous mes fichiers .csv dedans.
2 - ensuite je choisi donc le fichier que je souhaite et je clique sur "ouvrir"
3 - Par contre, là où sa bloque c'est la mise en place des colonnes et des lignes du tableau qui doit s'afficher (en temps normale Excel ouvre différentes fenêtres pour savoir comment placer son fichier import, si c'est en ligne, en colonne mais si c'est possible de créer une macro qui peut faire directement, je suis prenneur)

je joint un fichier avec une disposition, des lignes et des colonnes à supprimer.

Si quelqu'un veut d'autres renseignements qu'il me previenne.
merci et bonne journée.
@+
 

Pièces jointes

Re : .csv vers .xls

je pense alors qu'il faut modifier la ligne :

Code:
Workbooks.OpenText Filename:=Left(Rep, Len(Rep) - 3) & "txt", DataType:=xlDelimited, Other:=True, OtherChar:=";"

en

Code:
Workbooks.OpenText Filename:=Left(Rep, Len(Rep) - 3) & "txt", DataType:=xlDelimited, Comma:=True
 
Re : .csv vers .xls

Re,

Le code dans le fichier joint fonctionne pour un fichier CSV avec séparateur virgule.
Il transforme le CSV en XLS et les données sont correctement ventilées dans les colonnes.
Testé en Excel 2002 et Excel 2000

Edit : fonctionne également avec :
Workbooks.OpenText Filename:=Rep, DataType:=xlDelimited, Comma:=True

Edit : hello tototiti, je n'avais pas vu ta réponse.
 

Pièces jointes

Dernière édition:
Re : .csv vers .xls

Bonjour!

je réactive ce fil car, c'est bien connu ... les femmes en général, et C@thy en particulier... en veulent toujours plus.

J'ai essayé avec l'enregistreur de macro de faire données convertir.
1ère remarque : il ne fait que la 1ère ligne.
Donc il faudrait une boucle sur toutes les lignes remplies.

2ème remarque, le code sr réfère à ce seul fichier, mais si la structure diffère il ne va plus

Code:
Sub Convertir()
    Range("A3").Select
    Selection.TextToColumns Destination:=Range("A3"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
        Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
        Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _
        ), Array(14, 1), Array(15, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array _
        (20, 1), Array(21, 1), Array(22, 1), Array(23, 1), Array(24, 1), Array(25, 1), Array(26, 1), _
        Array(27, 1), Array(28, 1), Array(29, 1), Array(30, 1), Array(31, 1), Array(32, 1), Array( _
        33, 1), Array(34, 1), Array(35, 1), Array(36, 1), Array(37, 1), Array(38, 1), Array(39, 1), _
        Array(40, 1), Array(41, 1), Array(42, 1), Array(43, 1), Array(44, 1), Array(45, 1), Array( _
        46, 1), Array(47, 1), Array(48, 1), Array(49, 1), Array(50, 1), Array(51, 1), Array(52, 1), _
        Array(53, 1), Array(54, 1), Array(55, 1), Array(56, 1), Array(57, 1), Array(58, 1), Array( _
        59, 1), Array(60, 1), Array(61, 1), Array(62, 1), Array(63, 1), Array(64, 1), Array(65, 1), _
        Array(66, 1), Array(67, 1), Array(68, 1), Array(69, 1), Array(70, 1), Array(71, 1), Array( _
        72, 1), Array(73, 1), Array(74, 1), Array(75, 1), Array(76, 1), Array(77, 1), Array(78, 1), _
        Array(79, 1), Array(80, 1), Array(81, 1), Array(82, 1), Array(83, 1), Array(84, 1), Array( _
        85, 1), Array(86, 1), Array(87, 1), Array(88, 1), Array(89, 1), Array(90, 1), Array(91, 1), _
        Array(92, 1), Array(93, 1), Array(94, 1), Array(95, 1), Array(96, 1), Array(97, 1), Array( _
        98, 1), Array(99, 1), Array(100, 1), Array(101, 1), Array(102, 1), Array(103, 1), Array(104 _
        , 1), Array(105, 1)), TrailingMinusNumbers:=True
End Sub

Je m'adresse aux VBistes chevronnés : y aurait-il un moyen d'automatiser la chose pour que ça marche pour n'importe quel fichier csv???😕😕

ou j'en demande trop???🙁😡😕

à tout hasard je joins mon csv

C@thy
 

Pièces jointes

Re : .csv vers .xls

bonjour le fil

voici un bout de code qui a l'air de fonctionner (utilise le Microsoft Scripting Runtime)

Code:
Public Sub test()

Dim mfs As Scripting.FileSystemObject
Set mfs = CreateObject("Scripting.FileSystemObject")

Dim mf As Scripting.TextStream
Set mf = mfs.OpenTextFile([B][I][U]fichier (ex c:\toto.csv)[/U][/I][/B], ForReading)

Dim curLine As String, tabstr, i As Integer
Dim curCell As Range

[B][I][U]curcell représente le coin supérieur quauche du tableau excel[/U][/I][/B]
Set curCell = ThisWorkbook.Sheets("Feuil1").Range("A1")

While Not mf.AtEndOfStream
    curLine = mf.ReadLine
    curLine = Replace(curLine, """", "")
    tabstr = Split(curLine, ";")
    For i = LBound(tabstr) To UBound(tabstr)
        curCell.Offset(0, i) = tabstr(i)
    Next i
    Set curCell = curCell.Offset(1, 0)
Wend



End Sub


a+
 
Re : .csv vers .xls

Merci mRomain,

maintenant il faut que je combine les 2 soit :

ne pas mettre le nom du fichier en dur (ex. toto.csv) mais afficher la boîte de dialogue ouvrir les csv.

C'est possible ça?

C@thy
 
Re : .csv vers .xls

re,

voila (à tester) :


Code:
Public Sub test()
Dim filename As String
filename = Application.GetOpenFilename(filefilter:="Fichiers CSV (*.csv), *.csv", Title:="Choisir le fichier CSV")
If UCase(filename) = "FAUX" Then
    MsgBox "Opération annulée"
    Exit Sub
End If

Dim mfs As Scripting.FileSystemObject
Set mfs = CreateObject("Scripting.FileSystemObject")

Dim mf As Scripting.TextStream
Set mf = mfs.OpenTextFile(filename, ForReading)

Dim curLine As String, tabstr, i As Integer
Dim curCell As Range

Set curCell = ThisWorkbook.Sheets("Feuil1").Range("A1")

While Not mf.AtEndOfStream
    curLine = mf.ReadLine
    curLine = Replace(curLine, """", "")
    tabstr = Split(curLine, ";")
    For i = LBound(tabstr) To UBound(tabstr)
        curCell.Offset(0, i) = tabstr(i)
    Next i
    Set curCell = curCell.Offset(1, 0)
Wend
End Sub


a+
 
Re : .csv vers .xls

un grand Merci mromain, tu utilises quelle version d'Excel?

car moi j'ai 2003 et ça :

Dim mfs As Scripting.FileSystemObject
Dim mf As Scripting.TextStream

ça passe pas chez moi (Erreur de compilation : type défini par l'utilisateur non défini)

Biz

C@thy
 
Re : .csv vers .xls

re,

j'utilise 2007, mais je pense que le problème ne vient pas de là :
le code utilise "Microsoft Scripting Runtime".
Dans ton éditeur VBA, tu fais :
Outil --> Références...
puis tu coche la ref "Microsoft Scripting Runtime"

tu ne devrai plus avoir le PB maintenant

a+
 
Re : .csv vers .xls

re,

d'habitude, je n'ajoute que celle-là quand je dois traiter des fichiers.

cependant, en modifiant un peut le code, on peut éviter d'avoir à cocher cette case.
je te mets le code au cas où...

Code:
Public Sub test()
Dim filename As String
filename = Application.GetOpenFilename(filefilter:="Fichiers CSV (*.csv), *.csv", Title:="Choisir le fichier CSV")
If UCase(filename) = "FAUX" Then
    MsgBox "Opération annulée"
    Exit Sub
End If

[B]Dim mfs[/B]
Set mfs = CreateObject("Scripting.FileSystemObject")

[B]Dim mf[/B]
[B]Set mf = mfs.OpenTextFile(filename, 1)[/B]

Dim curLine As String, tabstr, i As Integer
Dim curCell As Range

Set curCell = ThisWorkbook.Sheets("Feuil1").Range("A1")

While Not mf.AtEndOfStream
    curLine = mf.ReadLine
    curLine = Replace(curLine, """", "")
    tabstr = Split(curLine, ";")
    For i = LBound(tabstr) To UBound(tabstr)
        curCell.Offset(0, i) = tabstr(i)
    Next i
    Set curCell = curCell.Offset(1, 0)
Wend
End Sub

a+
 
Re : .csv vers .xls

Ouiiiiiiiiiiiiiiiiiiiiiiiiiiiii! J'ai testé, ça marche nickelllllllll !

C'est mieux car s'il faut dire aux utilisateurs d'aller dans l'éditeur, j'te raconte pas...

C'est vrai que j'ai la réputation (totalement surfaite... Loooool !!!) d'en vouloir toujours plus,

mais avoue que ça valait la peine ...

Un énorme MERCI!

Biz

C@thy
 
Dernière édition:
Re : .csv vers .xls au départ outlook express

Bonjour le Forum, Cathy, Romain, Catrice, Tototiti2008,

Je reviens sur le fil et souhaite savoir si:
-- il est possible au lieu d'ouvrir la boite de dialogue pour trouver un fichier CSV dans un de mes répertoire du disque
-- de choisir des fichiers CSV attachés à un courriel dans outlook express et de les transformer comme indiqué par mROMAIN

1 ère solution : la ligne du code dans mon fichier ou se trouve la macro
filename = Application.GetOpenFilename(filefilter:="Fichiers CSV (*.csv),
devrait donc être remplacée par une ligne capable d'aller lire dans outlook express

je vous remercie pour votre aide
CAPRI_456

2ème solution : créer un code dans outlook express qui envoie les fichiers attachés dans un répertoire et alors appliquer la macro de mROMAIN
 
Re : .csv vers .xls

bonjour le fil

une autre possibilité(testé excel 2003)

Sub ImportTxt()
Dim Sh As Worksheet
Dim FileName As String

Set Sh = Sheets("import extract")
FileName = Application.GetOpenFilename(filefilter:="Fichiers CSV (*.csv), *.csv", Title:="Choisir le fichier CSV")
If UCase(FileName) = "FAUX" Then
MsgBox "Opération annulée"
Exit Sub
End If

Sh.Cells.Clear
Set qtQtrResults = Sh.QueryTables _
.Add(Connection:="TEXT;" & FileName, _
Destination:=Sh.Cells(1, 1))
With qtQtrResults
.TextFileParseType = xlDelimited
.TextFileOtherDelimiter = "\"
.Refresh
End With

End Sub

à bientôt
 
Re : .csv vers .xls

Bonjour, le fil, Bebere,

une autre possibilité(testé excel 2003)

Merci pour cette autre méthode je viens de la tester. La boite de dialogue est ok, mais in fine j'ai du csv dans ma feuille "Import extract" alors que ce que je souhaite c'est du XLS

étape 1: la finalité est que je souhaiterai récupérer des fichiers CSV annexés à des courriels dans OUTLOOK EXPRESS et les récupérer dans un répertoire

etape 2 : scruter ce répertoire et appliquer la macro de conversion CSV/XLS de mROMAIN ou la tienne.

Bien à toi
CAPRI_456
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
19
Affichages
761
Réponses
3
Affichages
289
D
  • Question Question
2
Réponses
28
Affichages
2 K
Deleted member 441486
D
Réponses
0
Affichages
188
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…