Excel importation incrémentée de fichiers textes

Alexis69

XLDnaute Nouveau
Bonjour,

C'est la première fois que je m'adresse à un forum, en espérant que ce soit à la hauteur de mes espérences.
J'ai navigué pendant une heure sur internet pour essayer de trouver quelqu'un qui avait un probleme similaire au mien, mais je n'ai rien trouvé.
Je suis débutant en VBA Excel et j'aurais besoin d'aide pour créer une macro.

Tout d'abord je travaille sur Excel 2007.

Dans la premiere feuille il y a dans la case A1 le lien du fichier texte (C://programme...), dans les cases A2 à A10 les noms des fichiers textes (test.txt), et dans les cases B2 à B10 l'état du traitement de ce fichier texte (lu, en cours lecture ou rien d'écrit=case vide) (voir pièce jointe)
La macro devra regarder l'état du traitement du fichier, si en cours lecture => stop, anomalie, expertise manuelle. (message qui apparait et dis a l'utilisateur qu'une erreur c'est produite)
Si lu : passer à la ligne suivante
Si case vide :
Effacer le contenu de la feuille excel "temporaire import" (pour effacer la derniere importation)
Importer le contenu du fichier texte dans la feuille excel "temporaire import"
Mettre "Lu" en face du nom de fichier.
Répéter fichier suivant.

(le format du fichier texte ne pose pas de probleme, l'importation peut etre fait directement dans excel)

Voici donc l'explication de ma macro souhaité. On va dire que la macro que je souhaite est légèrement plus longue mais ce sont des choses que je pense pouvoir faire moi même. La partie qui me pose problème est l'incrémentation décrite ci-dessus. Mes connaissances en programmation ne sont pas trop poussé, c'est pour cela que je me permet de vous contacter.
En esperant avoir été le plus clair possible, si vous avez des questions quant à la compréhension de mon problème, je suis à votre disposition.
Je vous remercie d'avance.


Cordialement.
 

Pièces jointes

  • Test.xlsx
    8.5 KB · Affichages: 58
  • Test.xlsx
    8.5 KB · Affichages: 59
  • Test.xlsx
    8.5 KB · Affichages: 58
G

Guest

Guest
Re : Excel importation incrémentée de fichiers textes

Bonjour et bienvenue sur le forum,

Nous sommes dans un forum, d'entraide sur des questions très précises. Il n'est en aucun cas dans le but du forum, de développer pour autrui des macros toutes faites, il y a des professionnels pour ça.

Une heure de recherche c'est peu. Le forum est truffé de ce genre de problème. Etrange que tu n'ai pas trouvé le début de quelque chose.

Je suis désolé si cela n'est pas à la "hauteur de tes espérances". J'ai ouvert ton fichier et n'y ai vu aucune macro sur laquelle je pouvais intervenir pour te dépanner.

A+
 

Alexis69

XLDnaute Nouveau
Re : Excel importation incrémentée de fichiers textes

Bonjour,

J'avais fais une tentative avant de venir sur le forum, mais j'ai été bloqué dès le début c'est pourquoi je suis venu vous voir.
Mais je comprends ta réponse. C'est pourquoi j'ai persisté sur ma macro...et voila ou je suis bloqué:

Sub Test()

Dim X

Sheets(Array("temporaire import")).Select
Cells.Select
Selection.ClearContents

For i = 1 To 20

Range("C2").Offset(, i).Select

With Worksheets("feuil1")
For X = 1 To 100
If (.Cells(C, X)) = "Lu" Then

Workbooks.OpenText Filename:="B2"

J'ai une erreur au niveau de la ligne "if(.cells....)" je ne sais pas trop comment faire, est ce que la syntaxe est mauvaise?

Je me demandais aussi si au moment de cette ligne il n'y a pas une erreur: Workbooks.OpenText Filename:="B2"
Est ce que j'ai le droit d'écrire la référence de la cellule qui contient le chemin? De plus la cellule B2 est sur la feuille 1 et le texte doit etre copier sur la feuille 2.

Merci

Cordialement
 
Dernière édition:
G

Guest

Guest
Re : Excel importation incrémentée de fichiers textes

Re,

Bon, ça arrive parfois:D
alors avec le peu que je vois sur les lignes communiquées plus haut:


remplacer:
Code:
Workbooks.OpenText Filename:="B2"

par

Code:
Workbooks.OpenText Filename:= .range("B" & x)

Pour le if :

Code:
If .Cells(2, X) = "Lu" Then
Ou
Code:
If .Range("C" & X) = "Lu" then

Mais Je ne vois pas à quoi te servent tes deux boucles donc si le bon index de ligne est X ou i


A+
 

Alexis69

XLDnaute Nouveau
Re : Excel importation incrémentée de fichiers textes

Re,

J'aurais une autre question:

La commande pour ouvrir le fichier texte ne fonctionne pas, il y a une erreur me disant de vérifier son existence ou de vérifier le chemin.
J'ai esssayé avec une autre commande, sans succès.

Voici mon fichier (avec la macro ^^)

Merci
 

Pièces jointes

  • Test.xlsm
    16 KB · Affichages: 32
  • Test.xlsm
    16 KB · Affichages: 40
  • Test.xlsm
    16 KB · Affichages: 31

Alexis69

XLDnaute Nouveau
Re : Excel importation incrémentée de fichiers textes

Re,

J'ai continué a faire des recherches, et j'ai completement changer ma maccro. L'importation fonctionne, le seul probleme est que lorsque j'importe mon fichier texte sur la feuil2, il n'y a qu'une seule colonne alors que je voudrais qu'il y ai plusieurs colonnes.

Est ce que vous auriez une piste a me fournir?

Merci
 

Pièces jointes

  • Import_fichierTXT.xlsm
    22 KB · Affichages: 38

MJ13

XLDnaute Barbatruc
Re : Excel importation incrémentée de fichiers textes

Bonjour Alexis, Ges

Le mieux dans ton cas est soit d'ouvrir ton fichier texte avec l'assistant d'importation qui peut te générer le code VBA directement en enregistrant une macro soit d'utiliser avec open ligne par ligne puis de faire une conversion avec \données \convertir :confused:.

Mais il me semble que tu n'as pas fourni un exemple de fichier .txt. Donc c'est plus difficile d'aider dans ces conditions.
 

Alexis69

XLDnaute Nouveau
Re : Excel importation incrémentée de fichiers textes

Re,

J'ai bien avancé. Mais il y a un probleme dans mes boucles, je reçois un msg d'erreur qui ne me précise pas ou se trouve l'erreur mais je suis persuadé que c'est dans ma boucle For/if.

voici mon code, enfin la partie que me pose probleme:

If Cells(4, 3).Value = "PB" Then


For i = 1 To 1000
If Sheets("PB").Range("a" & i) = "" Then

Range("B10").Copy

With Sheets("PB").Range("c1" & i).End(xlUp)(2)
.PasteSpecial Paste:=xlValues, Transpose:=True
End With
Application.CutCopyMode = False


Range("B11").Copy

With Sheets("PB").Range("d1" & i).End(xlUp)(2)
.PasteSpecial Paste:=xlValues, Transpose:=True
End With
Application.CutCopyMode = False


Range("b12").Copy

With Sheets("PB").Range("e1" & i).End(xlUp)(2)
.PasteSpecial Paste:=xlValues, Transpose:=True
End With
Application.CutCopyMode = False

Range("B13").Copy

With Sheets("PB").Range("f1" & i).End(xlUp)(2)
.PasteSpecial Paste:=xlValues, Transpose:=True
End With
Application.CutCopyMode = False


Range("B14").Copy

With Sheets("PB").Range("g1" & i).End(xlUp)(2)
.PasteSpecial Paste:=xlValues, Transpose:=True
End With
Application.CutCopyMode = False


Range("B15").Copy

With Sheets("PB").Range("h1" & i).End(xlUp)(2)
.PasteSpecial Paste:=xlValues, Transpose:=True
End With
Application.CutCopyMode = False


Range("B16").Copy

With Sheets("PB").Range("i1" & i).End(xlUp)(2)
.PasteSpecial Paste:=xlValues, Transpose:=True
End With
Application.CutCopyMode = False


Range("B17").Copy

With Sheets("PB").Range("j1" & i).End(xlUp)(2)
.PasteSpecial Paste:=xlValues, Transpose:=True
End With
Application.CutCopyMode = False


Range("B18").Copy

With Sheets("PB").Range("k1" & i).End(xlUp)(2)
.PasteSpecial Paste:=xlValues, Transpose:=True
End With
Application.CutCopyMode = False


Range("B19").Copy

With Sheets("PB").Range("l1" & i).End(xlUp)(2)
.PasteSpecial Paste:=xlValues, Transpose:=True
End With
Application.CutCopyMode = False


Range("B2").Copy

With Sheets("PB").Range("A1" & i).End(xlUp)(2)
.PasteSpecial Paste:=xlValues, Transpose:=True
End With
Application.CutCopyMode = False


Range("C8").Copy

With Sheets("PB").Range("B1" & i).End(xlUp)(2)
.PasteSpecial Paste:=xlValues, Transpose:=True
End With
Application.CutCopyMode = False
Sheets("PB").Range("M1" & i).Value = "traitée"
Exit For
End If
Next i




'ElseIf Cells(8, 3).Value.Value.Value = Sheets("LF").Range("B2:B200") Then

'MsgBox ("Fichier déja traité")


ElseIf Cells(4, 3).Value = "LF" Then

For i = 1 To 100
If Sheets("LF").Range("a" & i) = "" Then

.......

Meme traitement que précédent mais avec un autre fichier.

Le probleme indiqué est: erreur d'éxécution 1004, erreur définie par l'application ou par l'objet.

Je suis vraiment persuadé que c'est la boucle qui pose probleme pk avant que je la rajoute le programme marchait sans probleme.

En vous remerciant d'avance.
 

Discussions similaires