XL 2010 Importer .txt sur feuille Excel

thunder23

XLDnaute Occasionnel
Bonjour le forum,

Je souhaite importer les données d'un fichier en format texte sur une feuille Excel mais par VBA et avec la même mise en forme que dans le fichier .txt .
Un exemple est disponible en pièce jointe

Merci pour commentaires :)
 

Pièces jointes

  • testimport.xlsx
    433.3 KB · Affichages: 34

Staple1600

XLDnaute Barbatruc
Re

•>thunder23
Ma question était plus précise ;)
Vu qu'il y a plusieurs code VBA proposés et qui font tous la même chose: importer un fichier *.txt dans Excel.
Savoir si tu as choisi un des codes que j'ai proposé ou un de ceux de job75 m'aurait permis de savoir si je continue ou pas à suivre la discussion ;)
 

thunder23

XLDnaute Occasionnel
Re

•>thunder23
Ma question était plus précise ;)
Vu qu'il y a plusieurs code VBA proposés et qui font tous la même chose: importer un fichier *.txt dans Excel.
Savoir si tu as choisi un des codes que j'ai proposé ou un de ceux de job75 m'aurait permis de savoir si je continue ou pas à suivre la discussion ;)

Re,

ok d'accord
Les deux me conviennent, je ne peux pas dire lequel choisir toutefois si je peux faire en sorte que l'importation se fasse sur une feuille spécifique du classeur et que les données txt puissent se mettre à la suite si il y a déjà des données ou que je puisse les remplacer le tout ça serait parfait ;)
 

job75

XLDnaute Barbatruc
je ne veux pas que ça supprime ce qu'il y a déjà. ;)
Alors voyez ce dossier (3 ter) et la fin de la macro :
VB:
'---restitution---
Application.ScreenUpdating = False
With Feuil1 'CodeName à adapter
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    lig = .UsedRange.Row + .UsedRange.Rows.Count
    With .Cells(lig, 1).Resize(n)
        .Value = b
        .TextToColumns .Cells(1), xlDelimited, Tab:=True, DecimalSeparator:="." 'commande Convertir
    End With
    With .Rows(lig).Resize(, .UsedRange.Columns.Count)
        .Interior.ColorIndex = 6 'jaune
        .Font.Bold = True 'gras
        Application.Goto .Cells(1), True 'cadrage
    End With
    .Columns.AutoFit
End With
 

Pièces jointes

  • Dossier(3 ter).zip
    810.7 KB · Affichages: 7

thunder23

XLDnaute Occasionnel
Alors voyez ce dossier (3 ter) et la fin de la macro :
VB:
'---restitution---
Application.ScreenUpdating = False
With Feuil1 'CodeName à adapter
    If .FilterMode Then .ShowAllData 'si la feuille est filtrée
    lig = .UsedRange.Row + .UsedRange.Rows.Count
    With .Cells(lig, 1).Resize(n)
        .Value = b
        .TextToColumns .Cells(1), xlDelimited, Tab:=True, DecimalSeparator:="." 'commande Convertir
    End With
    With .Rows(lig).Resize(, .UsedRange.Columns.Count)
        .Interior.ColorIndex = 6 'jaune
        .Font.Bold = True 'gras
        Application.Goto .Cells(1), True 'cadrage
    End With
    .Columns.AutoFit
End With

Re,

Ok par contre j'ai un petit soucis, j'ai fait en sorte que le fichier, quand on change d'année (car ce fichier sera annualisé) ça efface toute les données de la feuille sauf que quand j'ai été voir, ça ne reprenait pas en haut de la feuille lorsque j'importe des données, est-ce normal?
 

patricktoulon

XLDnaute Barbatruc
bonjour le fil
je pose la mienne ;)
tel que dans le txt sera dans le sheets la conversion Auto des points en virgule en prime
VB:
Sub test()
    Dim tout As String, x, fichier As String
    fichier = "C:\Users\polux\DeskTop\bdd.txt"
    x = FreeFile: Open fichier For Binary Access Read As #x: tout = String(LOF(x), " "): Get #x, , tout: Close #x
      With CreateObject("New:{1C3B4210-F441-11CE-B9EA-00AA006B1A69}"): .SetText tout: .PutInClipboard: End With
    With ActiveSheet: .Cells(1).Select: .Paste: End With
End Sub
met moins de temps a aller dans le sheets que d'ouvrir le txt lui même dans Notepad ;)

demo4.gif
 

job75

XLDnaute Barbatruc
j'ai un petit soucis, j'ai fait en sorte que le fichier, quand on change d'année (car ce fichier sera annualisé) ça efface toute les données de la feuille
Votre code n'est probablement pas bon, voyez ce dossier (4) et la macro du bouton RAZ :
VB:
Sub RAZ()
If MsgBox("Etes-vous sûr de vouloir effacer toutes les données ?", vbQuestion + vbYesNo) = vbNo Then Exit Sub
With Feuil1 'CodeName à adapter
    .Rows("2:" & .Rows.Count).Delete
End With
End Sub
Les 2 boutons ont la propriété "Ne pas déplacer ou dimensionner avec les cellules".

Salut patricktoulon.
 

Pièces jointes

  • Dossier(4).zip
    810.4 KB · Affichages: 8
Dernière édition:

thunder23

XLDnaute Occasionnel
Votre code n'est probablement pas bon, voyez ce dossier (4) et la macro du bouton RAZ :
VB:
Sub RAZ()
If MsgBox("Etes-vous sûr de vouloir effacer toutes les données ?", vbQuestion + vbYesNo) = vbNo Then Exit Sub
With Feuil1 'CodeName à adapter
    .Rows("2:" & .Rows.Count).Delete
End With
End Sub
Les 2 boutons ont la propriété "Ne pas déplacer ou dimensionner avec les cellules".

Salut patricktoulon.

Votre code n'est probablement pas bon, voyez ce dossier (4) et la macro du bouton RAZ :
VB:
Sub RAZ()
If MsgBox("Etes-vous sûr de vouloir effacer toutes les données ?", vbQuestion + vbYesNo) = vbNo Then Exit Sub
With Feuil1 'CodeName à adapter
    .Rows("2:" & .Rows.Count).Delete
End With
End Sub
Les 2 boutons ont la propriété "Ne pas déplacer ou dimensionner avec les cellules".

Salut patricktoulon.

Re,

C'est que j'utilise le code
VB:
.ClearContents
pour effacer. Je viens d'essayer et ça fonctionne mais le seul problème est que j'ai nommé des plages sur cette feuille et ça me les supprime. y-a-t-il un moyen d'éviter que ça ne me supprime pas les plages?
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, thunder23, job75, patricktoulon
Je viens de le tester et ça fonctionne par contre j'ai remarqué que ça créer une plage dans le gestionnaire de nom, est-ce qu'il y a un moyen que ça ne créer pas de plage à chaque action de la macro?
Puis
mais le seul problème est que j'ai nommé des plages sur cette feuille
Au départ, il ne fallait pas de plages nommées, et désormais il y en a...
??
 

thunder23

XLDnaute Occasionnel
ClearContents ne va pas si comme je le fais on colore des lignes.

Et avec des plages nommées à ne pas supprimer c'est du n'importe quoi !

Ah d'accord ok
Par exemple j'ai nommé de la cellule A1 à A13 => Time dans le gestionnaire de nom, c'est la sélection de A1 à A13 que je perds (#REF!) mais pas le nom avec la macro, le contenu n'a pas d'importance.
 
Dernière édition:

job75

XLDnaute Barbatruc
J'ai testé la méthode proposée par patricktoulon au post #36 :

- la durée d'exécution est à peu près la même que celle de mon fichier (4)

- les dates en colonne A ne sont pas correctes, la dernière date est le 04/11 au lieu du 11/04.
 

thunder23

XLDnaute Occasionnel
J'ai testé la méthode proposée par patricktoulon au post #36 :

- la durée d'exécution est à peu près la même que celle de mon fichier (4)

- les dates en colonne A ne sont pas correctes, la dernière date est le 04/11 au lieu du 11/04.

Oui effectivement je viens de la tester et ça me fait pareil.

J'étais en train de repenser par rapport aux plages, d'après se que je comprends il est possible de les nommer quand on importe les données d'un fichier .txt ?
 

Discussions similaires

Statistiques des forums

Discussions
312 361
Messages
2 087 610
Membres
103 606
dernier inscrit
lolo1970