erreur 1004 import fichier

Hellop

XLDnaute Nouveau
Bonsoir,

Je viens de chercher un peu d'aider afin de résoudre un problème auquel je suis actuellement confronté.
Afin de d'éviter les taches répétitives, je me suis lancer dans un petit développement VBA qui consiste à
ouvrir un fichier .csv, l'utilisateur aura le choix du fichier (format des données identique pour chaque fichier,
fonction utilisée: GetOpenfilename), importer les données de ce fichier dans un nouvelle feuille excel créée au préalable.
Mon soucis, à l'aide du code ci-dessous, est que j'obtiens une erreur 1004 lors de l'exécution du code.Quand je supprime les "=" du fichier importé
cela résout le problème et la mise en page se fait correctement. Après plusieurs essais infructueux, je lance un appel à l'aide pour me sortir de ce mauvais pas,mais connaissances étant limitées au niveau du développement Vba.
Quelles commandes à insérer dans les lignes de code pour que mon import se fasse correctement?
D'avance, merci pour votre aide...

Pier

--------------------------------------------------------------------------
'Recherche Fichier .csv'
Sub OuvertureFichier()

Dim Fichier As Variant

ChDir ThisWorkbook.Path
Fichier = Application.GetOpenFilename("Files *.csv (*.csv), *.csv")
If Fichier <> False Then
Lire Fichier
Else
Call SortieSuiteAPB("Erreur Ouverture Fichier Impossible")
End If
End Sub


--------------------------------------------------------------------------
'import des informations'
Function Lire(ByVal NomFichier As String)

Dim Chaine As String
Dim Ar() As String
Dim i As Long
Dim iRow As Long, iCol As Long
Dim NumFichier As Integer
Dim Separateur As String * 1

Separateur = ";"

Cells.Clear
NumFichier = FreeFile
iRow = 1


Open NomFichier For Input As #NumFichier
Do While Not EOF(NumFichier)
iCol = 1
Line Input #NumFichier, Chaine
Ar = Split(Chaine, Separateur)
For i = LBound(Ar) To UBound(Ar)
Cells(iRow, iCol) = (Ar(i))
iCol = iCol + 1
Next
iRow = iRow + 1
Loop
Close #NumFichier

End Function

--------------------------------------------------------------------------
--------------------------------------------------------------------------
Données importées non ok

Reference;="Zone 1";="Zone 2";="Zone 3"
#Description;AAAA-BBBBBB-A-A;AAAA-BBBBB;CCCC-B-A
#Analyse;;="............";="........."
1;1234;France;;;
2;1111;Allemagne;;;
3;5555;Suisse;;;
4;888;Belgique;;;
5;36;Autriche;
6;6789;Luxembourg;
7;3456;Angleterre;


Données importées ok

Reference;Zone 1;Zone 2;Zone 3
#Description;AAAA-BBBBBB-A-A;AAAA-BBBBB;CCCC-B-A
#Analyse;;"""............""";"""........."""
1;1234;France;
2;1111;Allemagne;
3;5555;Suisse;
4;888;Belgique;
5;36;Autriche;
6;6789;Luxembourg;
7;3456;Angleterre;


--------------------------------------------------------------------------
--------------------------------------------------------------------------
affichage souhaité:
Référence Zone 1 Zone 2 Zone 3
Description AAAA-BBBB-A-A AAAA-BBBBB CCCC-B-A
#Analyse ......... ........
1 1234 France
2 1111 Allemagne
3 5555 Suisse
4 888 Belgique
5 36 Autriche
6 6789 Luxembourg
7 3456 Angleterre
6 6789 Luxembourg
 

Softmama

XLDnaute Accro
Re : erreur 1004 import fichier

Bonjour,

Je peine à comprendre ce qui bloque et ce que tu souhaites... Pourrais-tu joindre un exemple de fichier à importer et un bout de macro dedans avec ce que tu obtiens et ce que tu aimerais avoir, afin que l'on réponde au mieux à ta demande.
 

Hellop

XLDnaute Nouveau
Re : erreur 1004 import fichier

Bonsoir,

pas de soucis, ci joint les 2 fichiers csv à importer
Pour info, la seule différence se trouve au niveau de la 1ere ligne, colonne B,C et D: il manque le signe "=" et les guillemets.....

Merci pour votre aide:)
 

Hellop

XLDnaute Nouveau
Re : erreur 1004 import fichier

Bonsoir,

J'ai peut etre mal du m'exprimer...les macro cités ci-dessus se trouvent dans un 1er fichier (xls), dans lequel je créé une feuille de calcul, j'utilise la procédure "Sub OuvertureFichier()" pour importer les données du fichier .csv selectionné en le copiant dans la feuille nouvellement créée(Function Lire(ByVal NomFichier As String) afin de pouvoir "travailler", par la suite, les données importées.
Malheureusement, pour des raisons confidentielles, je ne peut vous faire parvenir le fichier xls, désolé.
 

Softmama

XLDnaute Accro
Re : erreur 1004 import fichier

Re,

Bon ben sans exemple, je me lance au pif...

--------------------------------------------------------------------------
'Recherche Fichier .csv'
Sub OuvertureFichier()

Dim Fichier As Variant

ChDir ThisWorkbook.Path
Fichier = Application.GetOpenFilename("Files *.csv (*.csv), *.csv")
If Fichier <> False Then
Lire Fichier
Else
Call SortieSuiteAPB("Erreur Ouverture Fichier Impossible")
End If
End Sub


--------------------------------------------------------------------------
'import des informations'
Function Lire(ByVal NomFichier As String)

Dim Chaine As String
Dim Ar() As String
Dim i As Long
Dim iRow As Long, iCol As Long
Dim NumFichier As Integer
Dim Separateur As String * 1

Separateur = ";"

Cells.Clear
NumFichier = FreeFile
iRow = 1


Code:
Open NomFichier For Input As #NumFichier
Do While Not EOF(NumFichier)
iCol = 1
Line Input #NumFichier, Chaine
Ar = Split(Chaine, Separateur)
For i = LBound(Ar) To UBound(Ar)
[COLOR="Red"]Cells(iRow, iCol) = Replace(Ar(i),"""","")
Cells(iRow, iCol) = Replace(Cells(iRow, iCol),"#","")
Cells(iRow, iCol) = Replace(Cells(iRow, iCol),";"," ")
Cells(iRow, iCol) = Replace(Cells(iRow, iCol),"Reference","Référence")[/COLOR]
iCol = iCol + 1
Next
iRow = iRow + 1
Loop
Close #NumFichier
End Function

mais franchement, si ça fait ce que tu espérais, ben dis-le vite que j'aille jouer direct au loto !
 

Softmama

XLDnaute Accro
Re : erreur 1004 import fichier

Re,

A priori, en modifiant la function Lire comme ceci :
VB:
Function Lire(ByVal NomFichier As String)

Dim Chaine As String
Dim Ar() As String
Dim i As Long
Dim iRow As Long, iCol As Long
Dim NumFichier As Integer
Dim Separateur As String * 1

Separateur = ";"

Cells.Clear
NumFichier = FreeFile
iRow = 1


Open NomFichier For Input As #NumFichier
Do While Not EOF(NumFichier)
iCol = 1
Line Input #NumFichier, Chaine
Ar = Split(Chaine, Separateur)
For i = LBound(Ar) To UBound(Ar)
If Not Ar(1) = "" Then
Cells(iRow, iCol) = (Ar(i))
Cells(iRow, iCol) = Replace(Cells(iRow, iCol), "#", "")
Cells(iRow, iCol) = Replace(Cells(iRow, iCol), "Reference", "Référence")
iCol = iCol + 1
End If
Next
iRow = iRow + 1
Loop
Close #NumFichier

End Function

même si je suis pas bien certain d'avoir bien saisi ta demande encore.
 

kjin

XLDnaute Barbatruc
Re : erreur 1004 import fichier

Bonsoir,
A tester
Code:
Sub OuvertureFichier()
Dim Fichier As Variant, wb1 As Workbook, wb2 As Workbook
Set wb1 = ThisWorkbook
ChDir ThisWorkbook.Path
Fichier = Application.GetOpenFilename("Files *.csv (*.csv), *.csv")
If Fichier <> False Then
    Application.ScreenUpdating = False
    Set wb2 = Workbooks.Open(Fichier)
    ActiveSheet.Copy before:=wb1.Sheets(1)
    With ActiveSheet.UsedRange
        .Cells.Value = .Cells.Value
    End With
    wb2.Close False
    Application.ScreenUpdating = True
End If
End Sub
A+
kjin
 

Hellop

XLDnaute Nouveau
Re : erreur 1004 import fichier

Bonjour,

Je viens de tester le code de kjin, le problème a été contourné mais le résultat est là, cela fonctionne, super:)), il me reste encore quelques manip pour la mise en page.
Merci bcp pour votre aide, j'essayerai d'être un peu plus clair la prochaine fois.


A+ et Bonne journée
 

Statistiques des forums

Discussions
312 305
Messages
2 087 088
Membres
103 461
dernier inscrit
dams94