10 réponses plus tôtFaut lire ! ;)
autre petit problème la valeur NomFichier contient un retour chariot je croit... comment je pourrais le supprimer ?
Sinon je mets NomfichierEXCEL|NomOnglet|Ligne|Colonne|Valeur; et mis dans un tableau avec split | puis les valeurs sont mis dans des variables.
Re,
Sauvegarder le fichier et libérer les variables :
A+Code:
1
2
3
4 Set objSheet1 = Nothing objWbk.Close True, "Chemin de Destination" Set objWbk = Nothing
Pour le savoir, tu peux tester avec instr
Pour enlever l'un et/ou l'autreCode:
1
2
3 If instr(NomFichier, vbcr) <> 0 Then msgbox "t'as un cr dans le nom (carriage return)" 'ou If instr(NomFichier, vblf) <> 0 Then msgbox "t'as un lf dans le nom"
Code:NomFichier = Replace(Replace(NomFichier, vblf, ""), vbcr, "")
Ce n'était pas ma question. Comment lis-tu les lignes de ton csv ? Quelle méthode ? Fichier texte ou lecture feuille de calculs ?Citation:
Envoyé par killysui
Pour répondre à ta question :
voici le code de lecture :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 Chemin = ThisWorkbook.Path NomFichCSV = "Test.csv" NomFichEXCEL = "" Dim F As Integer F = FreeFile '1er numéro libre Open Chemin & "\" & NomFichCSV For Input As #F 'ouvert en ajout 'Open Chemin & "\" & NomFichCSV For Input As #1 Do While Not EOF(F) Line Input #F, LigneCSV TableauLignesCSV = Split(LigneCSV, ";") For NoLigneCVS = 0 To UBound(TableauLignesCSV) TableauValeurLigne = Split(TableauLignesCSV(NoLigneCVS), "|") 'If Not TableauValeurLigne Is Nothing Then NomOnglet = TableauValeurLigne(1) NumLigne = Val(TableauValeurLigne(2)) NumColonne = Val(TableauValeurLigne(3)) Valeur = Val(TableauValeurLigne(4)) ...... Next Loop Close #F
RE,
Résolu, Non??
A+
J'aurai bien voulu... mais je n'ai pas encore fini...
Je boucle une fois de trop dans mon fichier
du coup j'ai une erreur... comment je peux la gérer?Code:
1
2
3
4 For NoLigneCVS = 0 To UBound(TableauLignesCSV) TableauValeurLigne = Split(TableauLignesCSV(NoLigneCVS), "|") 'If Not TableauValeurLigne Is Nothing Then NomOnglet = TableauValeurLigne(1)
Merci
RE,
Non??Code:For NoLigneCVS = 0 To (UBound(TableauLignesCSV) - 1)
Oui moi aussi lorsque j'ai vu cela ca ma paru bizar ... mais à la deuxième ligne une retour chariot(le fichier .csv a du être mal fait..j'ai ). Avec le replace cela fonctionne mieux.
J'aurai une dernière question(du moin je l'espère)
la fermeturene fonctionne pas...Code:
1
2
3 objWbk1.close true, chemin & "\" & NomFichExcel set objWbk1 = nothing set app = nothing
Re,
Quelle est l'erreur?
A+
... et sur quelle ligne ?
Désolé je me suis trompé.L'erreur ce produire lors de la fermeture du fichier
Ce qui est bizar c'est cette erreur (qui est vide)n'apparait que si je gère les erreurs avecCode:close #f
Code:
1
2
3
4 On Error Goto errrr errr: msgbox "erreur :" & err.description, vbcritical,"erreur import csv"
C'est à dire que si je décommente cette partie , l'erreur n'apparait pas.
Re,
Tu n'essayes pas de faire tout ça sur le même fichier??
Tu ne veux pas nous balancer le code au complet, ça sera plus facile pour la compréhension...
A+
le errr: et placé juste aprèsvoici en gros le code :Code:#close
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 On Error GoTo Error_LFT Dim F As Integer F = FreeFile '1er numéro libre Open Chemin & "\" & NomFichCSV For Input As #F Do While Not EOF(F) Line Input #F, LigneCSV .... loop .... Close #F Error_LFT: Beep MsgBox "Rrreur : " & vbCrLf & Err.Description, vbCritical, "Erreur import .csv" Exit Sub
lors ajoute Exit sub
Tu n'iras sur Error_LFT:: que si tu as une erreur, sinon, tu passeras toujours par "là" après close (!)Code:
1
2
3 Close #F Exit sub Error_LFT::
Tu fermes le csv, pas le fichier contenant la macro, alors elle continue, c'est normal... ;)
Sinon vous ne saurez pas comment ajouter la classe Scripting dans la bibliothèque ?
MerciCode:Dim objFSO As New Scripting.FileSystemObject
Merci ouskel'n'or.:D Tu es génial.