Je souhaite que Excel lise un fichier CSV et remplisse les colones xls intelligemment

Burk91

XLDnaute Nouveau
Bonjour à tous et merci pour votre aide.

Je vous ai déjà sollicité il y a 2 mois, et Kjin m'a énormément aider, et je le remercie encore.

Mon projet à légèrement évoluer.

- A l'époque je devait mettre toutes les informations de mon fichier Excel (plusieurs feuille) dans un fichier csv avec comme délimiteur des ";"
- Maintenant le problème a légèrement évoluer, et comme l'exportation ce passe très bien, il faudrait maintenant un autre bouton IMPORTATION, qui irai lire ce fichier CSV, pour remplire les differement feuille de mon fichier excel ;)

Juste une petite condition, si le premier champs de la ligne porte le libellé CLIENT, alors il renseigne la feuille client.
si c'est Voiture, il renseigne la feuille Voiture de ce même fichier, et pareil pour les options.

Il faudrait donc être capable de relire le fichier CSV qui a été crée précédemment, puis insérer ces données dans le fichier excel (faire la même chose mais a l'envers en faites :eek:)

j'aimerai faire un bouton IMPORTER CSV qui va allé cherché le CSV précédemment créer, et remplir les 3 onglets (Clients, Véhicules, Option) de ce fichier.
il doit donc laisser la 1ere ligne de chaque onglet qui concerne les entête, puis remplir les ligne en dessous avec les infos qui sont dans le fichier csv.

J'illustre mon problème car une photo vaut mieux que de long discoure ;)
http://img143.imageshack.us/i/excelcsv.jpg/

Uploaded with ImageShack.us

Donc dans la première illustration :
Il y a déjà le 1ere bouton Creat CSV
j'imagine donc un autre bouton Importer CVS.

Sur le 2eme screenshoot, on voit l'onglet Clients du fichier excel.
La première colonne de cette onglet client porte le libellé CLIENT
C'est ca qui nous permet de savoir de qu'elle onglet provient ces infos
(client/véhicule/option)

Et enfin sur le 3eme Screenshoot, on peut voir le fichier CSV,qui a été générer la première fois, c'est ce fichier csv qui sera importé dans le tableau excel. (On retrouve donc nos clients entourer en rouge)

Voila mon problème, si toute fois je n'ai pas été assé claire sur un point, je recommencerai mes explication.

En tout cas je vous remercie d'avance pour toute aide, piste, ou début d'idée, car la je rame, et mon niveau en vba me permet pas de faire tout ce que j'aimerai faire :)

Alex :p

ps ; voila le liens sur mon poste précédent au cas ou
https://www.excel-downloads.com/thr...-avec-certaine-colones-du-fichier-xls.147270/
ps2 : en pièce jointe, le fichier excel, et le fichier CSV généré.
 

Pièces jointes

  • Burk91_v4.xls
    39 KB · Affichages: 67
  • Burk91_v4.zip
    13.2 KB · Affichages: 30
  • Burk91_v4.zip
    13.2 KB · Affichages: 33
  • Burk91_v4.zip
    13.2 KB · Affichages: 36
  • 14-10-2010 csv.zip
    395 bytes · Affichages: 20

Burk91

XLDnaute Nouveau
Re : Je souhaite que Excel lise un fichier CSV et remplisse les colones xls intellige

Bonjour a tous,

J'ai bien avancer sur mon petit problème d'importation de CSV dans excel, mais il me reste un petit hic.

Mon bouton ne me permet d'ouvrir que 1 fichier :
- CSV_Importé
- C:\Documents and Settings\Alex\Desktop\CSV_Importé.csv

Alors que moi j'aimerai que l'utilisateur en cliquant sur le ce bouton d'importation, une fenêtre s'ouvrir qui lui demande de sélectionner son fichier (sur son disque dure ou autre, de n'importe qu elle nom).

Code:
' Macro enregistrée le 18/10/2010 par Alex
'

'
    'Sheets.Add.Name = "CSV Impoté"
    Sheets("CSV Impoté").Select
    Range("A1").Select
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;[B]C:\Documents and Settings\Alex\Desktop\CSV_Importé.csv[/B]", _
        Destination:=Range("A1"))
        .Name = "[B]CSV_Importé[/B]"
        .FieldNames = True
        .RowNumbers = False

Si vous avez une piste je suis preneur ^^

merci a vous :)
 
Dernière édition:

pat01200

XLDnaute Occasionnel
Re : Je souhaite que Excel lise un fichier CSV et remplisse les colones xls intellige

Bonjour,
Voici le code pour ouvrir une fenêtre
Dim chemin As String
chemin = CreateObject("WScript.Shell").SpecialFolders("Desktop")
Classeur = Application.GetOpenFilename("Classeurs Excel,*.csv")
Workbooks.Open Filename:=Classeur, Local:=True
 

Efgé

XLDnaute Barbatruc
Re : Je souhaite que Excel lise un fichier CSV et remplisse les colones xls intellige

Bonjour Burk91, pat01200, le fil, le forum
Avec ce j'ai compris de la dernière demande, un code qui récupère le chemin en C9 et le nom du fichier en C10.

Code:
[COLOR=blue]Sub[/COLOR] Explorateur()
[COLOR=blue]Dim[/COLOR] Niveau$
[COLOR=blue]Dim[/COLOR] sPath$
[COLOR=blue]Dim[/COLOR] Classeur_Import$
[COLOR=green]'Crée une boite de dialogue de sélection de fichiers :[/COLOR]
[COLOR=blue]Set[/COLOR] fd = Application.FileDialog(msoFileDialogFilePicker)
[COLOR=blue]With[/COLOR] fd
    .InitialFileName = Range("C9").Value
    .Show
        [COLOR=blue]If[/COLOR] .SelectedItems.Count > 0 [COLOR=blue]Then[/COLOR]
            sPath = .SelectedItems(1)
           [COLOR=green]'Trouver le niveau de sous dossier ou se trouve le fichier[/COLOR]
            Niveau = ([COLOR=blue]UBound[/COLOR](Split(sPath, "\")))
           [COLOR=green]'Récupérer la chaine de caractère (nom du fichier) du niveau trouvé[/COLOR]
            Classeur_Import = Split(sPath, "\")(Niveau)
           [COLOR=green]'Renseigner les zones suivant le choix[/COLOR]
            Range("C10") = Classeur_Import
            Range("C9") = Left(sPath, Len(sPath) - Len(Classeur_Import))
           [COLOR=green]'Vider la boite de dialogue[/COLOR]
            [COLOR=blue]Set[/COLOR] fd = [COLOR=blue]Nothing[/COLOR]
        [COLOR=blue]End If[/COLOR]
[COLOR=blue]End With[/COLOR]
[COLOR=blue]End Sub[/COLOR]
Cordialement
 

Burk91

XLDnaute Nouveau
Re : Je souhaite que Excel lise un fichier CSV et remplisse les colones xls intellige

Merci Pat01200 et Efgé pour vos réponse,

Pat01200 j'essaie ta solution qui semble répondre a mon problème :)
(merci encore :D)

Mon objectif est que le contenu du fichier que l'on ouvre, arrive dans la feuille "CSV Importé" de mon fichier excel

ca ca marche ^^
j'ouvre bien une fenettre, mais je n'arrive pas a remplacer
C:\Documents and Settings\Alex\Desktop\CSV.csv
par le chemin du doc que j'ai ouver grace a ta fonction :s

Code:
    Dim chemin As String
    
    chemin = CreateObject("WScript.Shell").SpecialFolders("Desk top")
    Classeur = Application.GetOpenFilename("Classeurs Excel,*.csv")

    Sheets("CSV Impoté").Select
    Range("A1").Select
          
    
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;C:\Documents and Settings\Alex\Desktop\CSV.csv", _
        Destination:=Range("A1"))

J'ai tester ca mais ca ne marche pas non plus :s

Code:
'     With ActiveSheet.QueryTables.Add(Connection:=Classeur, _
'        Destination:=Range("A1"))
 

Burk91

XLDnaute Nouveau
Re : Je souhaite que Excel lise un fichier CSV et remplisse les colones xls intellige

Mille Merci a vous 2, l'importation du fichier CSV dans une nouvelle feuille fonctionne maintenant :D


Reste plus qu'a alimenter les autres feuilles :D


Ca avance Whaouuuuuuuuuuuuuuuuuuuuuuuuuuuuu
 

kjin

XLDnaute Barbatruc
Re : Je souhaite que Excel lise un fichier CSV et remplisse les colones xls intellige

Bonjour,
Pour répondre (un peu tard !) à ton MP...
Juste une petite condition, si le premier champs de la ligne porte le libellé CLIENT, alors il renseigne la feuille CLIENT.....
Euh, soit, mais ta feuille se nomme CLIENTS (au pluriel), alors que doit-on comprendre....?!
En outre, il n'y a pas de VOITURE dans le CSV
Si la feuille se nomme CLIENT, donc au singulier (idem pour les autres feuilles)
Code:
Sub ImportCSV()
Dim Fichier$, strLigne$, T() As String, dl&, ws As Worksheet
Fichier = Application.GetOpenFilename()
Open Fichier For Input As #1
Do While Not EOF(1)
Line Input #1, strLigne
T = Split(strLigne, ";")
    On Error Resume Next
    Set ws = Sheets(CStr(T(0)))
    If Not ws Is Nothing Then
        With ws
            dl = .Range("B65000").End(xlUp).Row + 1
            .Cells(dl, 1).Resize(1, UBound(T) + 1) = T
        End With
    End If
    Set ws = Nothing
Loop
Close #1

End Sub
A+
kjin
 
Dernière édition:

Discussions similaires

Réponses
10
Affichages
402

Statistiques des forums

Discussions
313 224
Messages
2 096 338
Membres
106 572
dernier inscrit
JM04082023!