Se connecter avec
S'enregistrer | Connectez-vous

Macro d'importation .txt dans un classeur xls

Dernière réponse : dans Programmation

Bonjour,

Je viens vers vous afin de solliciter votre aide sur une macro d'automatisation d'importation de données depuis un fichier .txt vers un classeur Excel.

J'arrive pour l'instant à importer les données dans une nouvelle feuille du classeur.
J'aimerai pouvoir renommer la feuille ainsi créée pendant le déroulement de la macro. (nom automatique [Nom_date du jour])

A chaque importation de données, la macro (cf ci dessous) créée une nouvelle feuille mais avec un nom classique. (feuille 1, feuille 2 ...)

Ma deuxième interrogation concerne une macro qui permettrait de faire un récapitulatif des feuilles Excel du classeur. A savoir une feuille regroupant uniquement certaines informations (certaines lignes ou cellules des feuilles créées). Comme par exemple la date, le montant de la facture, voir des lignes completes (produits en stock 0 etc)

  1. Sub import_txt()
  2. '
  3. ' import_txt Macro
  4. '
  5. Name = InputBox("Merci d'entrer le nom de cette feuille :")
  6. FichierChoisi = Application.GetOpenFilename
  7.  
  8. ActiveWorkbook.Worksheets.Add
  9. With ActiveSheet.QueryTables.Add(Connection:= _
  10. "TEXT;" & FichierChoisi, Destination:=Range("$A$1"))
  11. .Name = "CMD"
  12. .FieldNames = True
  13. .RowNumbers = False
  14. .FillAdjacentFormulas = False
  15. .PreserveFormatting = True
  16. .RefreshOnFileOpen = False
  17. .RefreshStyle = xlInsertDeleteCells
  18. .SavePassword = False
  19. .SaveData = True
  20. .AdjustColumnWidth = True
  21. .RefreshPeriod = 0
  22. .TextFilePromptOnRefresh = False
  23. .TextFilePlatform = 1252
  24. .TextFileStartRow = 1
  25. .TextFileParseType = xlFixedWidth
  26. .TextFileTextQualifier = xlTextQualifierDoubleQuote
  27. .TextFileConsecutiveDelimiter = False
  28. .TextFileTabDelimiter = True
  29. .TextFileSemicolonDelimiter = False
  30. .TextFileCommaDelimiter = False
  31. .TextFileSpaceDelimiter = False
  32. .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1)
  33. .TextFileFixedColumnWidths = Array(19, 43, 10, 8, 14)
  34. .TextFileTrailingMinusNumbers = True
  35. .Refresh BackgroundQuery:=False
  36. End With
  37. End Sub


Merci pour votre aide ou point de vue me permettant d'avancer sur ce point.

Bonne compilation à tous
Lassé par la pub ? Créez un compte
Expert Programmation

Salut,

Dès que tu utilises un objet actif, tu comptes sur Windows, Excel et toutes les applications qui tournent sur ta machine pour ne pas changer le focus d'objet. C'est pour le moins risqué !

A la place du classeur actif (ActiveWorkbook), utilise le classeur qui contient la macro (ThisWorkbook).

Lorsque tu ajoutes une feuille avec la méthode Add(), mets le résultat sans une variable de type Worksheet. Cette variable pointera vers l'objet nouvellement créé. Dans la propriété Name de cet objet, tu peux mettre ce que tu veux, par exemple, la saisie de l'utilisateur.

NB: Et le VB, ça ne se compile pas [:patch]
Merci quand même ;)  :lol: 
Lassé par la pub ? Créez un compte