IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Importer et renommer un fichier texte [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 14
    Points
    14
    Par défaut Importer et renommer un fichier texte
    Bonjour à tous !!

    Alors voici mon problème, j'ai voulu me lancer dans le VBA (quel fou je sais !!!), des idées plein la tête !

    Ce que je voudrais faire :
    Avoir un bouton qui quand j’appuie dessus, cela insère dans un nouvel onglet un fichier txt, et (le plus dur) cela renomme ce fichier txt avec la date du jour.

    Où j'en suis actuellement :
    J'appuie sur le bouton j'ouvre le txt dans un nouveau classeur, j'arrive à renommer le txt avec la date, mais le souci c'est que mon classeur prend le nom du txt (demandez moi pas pk je sais pas ^^). Du coup je tourne en rond !!!

    Est ce que quelqu'un pourrai m'aider ??
    Merci d'avance

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    On ne va pas te demander pourquoi mais on demandera surement à voir ton code
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  3. #3
    Membre régulier
    Homme Profil pro
    Responsable des études
    Inscrit en
    Décembre 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2012
    Messages : 51
    Points : 82
    Points
    82
    Par défaut
    Tu peux nous envoyer ton fichier stp?

    A priori tu n'est pas loin du résultat, il ne te manque pas grand chose.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 14
    Points
    14
    Par défaut
    Ah oui en effet j'avais zappé le code, donc le voici sauf que ça a évolué, en fait le rename ne marche pas quand j'ai importé le fichier car il considère qu'il est ouvert... bref ça me soule je pense ne pas être loin mais je tourne en rond.

    (La partie du milieu est pour la mise en page)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Sub test()
     
     
      Workbooks.Open Filename:="C:\Users\guillaum\Desktop\Rsrc\Rsrc_horaire.txt", Format:=4
      Rows(1).Insert
     
         Cells(1, 1) = "CR"
         Cells(1, 2) = "JOBNAME"
         Cells(1, 3) = "IADATE"
         Cells(1, 4) = "IATIME"
         Cells(1, 5) = "RESSOURCE"
     
     Name "C:\Users\guillaum\Desktop\Rsrc\Rsrc_horaire.txt" As "C:\Documents\TEST\" & Format(Now(), "yyyymmdd-hhnnss") & ".txt"
     
     
     End Sub

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 667
    Points : 1 419
    Points
    1 419
    Par défaut
    Bonjour,

    En reprenant ton code, il faut simplement fermer le classeur avant de le renommer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Sub test()
      Dim wb as Workbook
     
      Set wb = Workbooks.Open Filename:="C:\Users\guillaum\Desktop\Rsrc\Rsrc_horaire.txt", Format:=4
      Rows(1).Insert
     
         Cells(1, 1) = "CR"
         Cells(1, 2) = "JOBNAME"
         Cells(1, 3) = "IADATE"
         Cells(1, 4) = "IATIME"
         Cells(1, 5) = "RESSOURCE"
     
      wb.Close SaveChanges:=True
      Name "C:\Users\guillaum\Desktop\Rsrc\Rsrc_horaire.txt" As "C:\Documents\TEST\" & Format(Now(), "yyyymmdd-hhnnss") & ".txt"
     
     
     End Sub

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 14
    Points
    14
    Par défaut
    D'abord merci bcp pour la réponse !!

    Mais le code tel quel ne marche pas (j'ai une erreur).

  7. #7
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par guillaume74960 Voir le message
    D'abord merci bcp pour la réponse !!

    Mais le code tel quel ne marche pas (j'ai une erreur).
    Bonjour,
    La première chose a faire en cas d'erreur , c'est de lire le message associè...

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 14
    Points
    14
    Par défaut
    L'erreur c'est erreur de compilation, pb de syntaxe.

    C'est sur le Filename que ça bloque je crois.

  9. #9
    Membre expérimenté
    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 667
    Points : 1 419
    Points
    1 419
    Par défaut
    Désolé, mets les arguments entre parenthèses:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set wb = Workbooks.Open(Filename:="C:\Users\guillaum\Desktop\Rsrc\Rsrc_horaire.txt", Format:=4)

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 14
    Points
    14
    Par défaut
    Merci (à force de bidouiller j'avais fini par trouver par hasard ^^)

    Mais (il y a toujours un mais j'ai l'impression )

    Cela me met erreur d’exécution 53 fichier introuvable.

    Le souci était aussi, que cela enregistre mon tableau dans le .txt de départ ce que je ne veux pas, je veux juste importer le .txt de départ et sauvegarder le tableau (le mieux serai quand même de l'ouvrir dans une nouvelle feuille mais c'est pas grave ça) sous un autre nom.

  11. #11
    Membre expérimenté
    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 667
    Points : 1 419
    Points
    1 419
    Par défaut
    C'est à toi d'être précis dans ta demande. Tu parlais bien de renommer le fichier...

    Si tu veux sauvegarder le tableau, fais un SaveAs sur le classeur (wb.SaveAs ...).
    Tu peux ajouter des feuilles via wb.Worksheets.Add ... mais bon, tu peux trouver cette info n'importe où.

    Erreur de fichier introuvable: Ce n'est pas nous qui allons te dire où se trouve ton fichier.

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 14
    Points
    14
    Par défaut
    Oups je pensais avoir été clair sorry ^^

    Ce que je veux vraiment c'est quand on clique sur ce bouton, un fichier txt soit importé dans un nouvel onglet, que le fichier txt initial soit sauvegardé sous la date du jour et le classeur av le nouvel onglet soit sauvegardé sous un autre nom.xls

  13. #13
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Le début peut être comme ceci

    Renommer d'abord le fichier texte puis l'importer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Dim OldFile As String, NewFile As String
     
    OldFile = "C:\Users\guillaum\Desktop\Rsrc\Rsrc_horaire.txt"
    NewFile = "C:\Documents\TEST\" & Format(Now(), "yyyymmdd-hhnnss") & ".txt"
     
    Name OldFile As NewFile
     
    'Set Wb = Workbooks.Open(Filename:=NewFile, Format:=4)
    '...
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  14. #14
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 14
    Points
    14
    Par défaut
    Je comprend pas j'ai toujours erreur fichier introuvable au moment du Name pourtant mon fichier inital est bien la.

    Mais sinon (je sais suis chiant ^^), comment faire pour ouvrir le txt dans une nouvelle feuille de mon classeur actuel car j'arrive à l'ouvrir mais dans un nouveau classeur.

  15. #15
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    donne nous un exemple du genre de texte qu'il y a dans le fichier texte

    il y a plusieurs autre moyen d'ouvrir le fichier afin d'en extraire , modifier , ajouter des données

    et de le sauver sans passer par le classeur

    filesystemobject ca te parle ?
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 14
    Points
    14
    Par défaut
    Alors c'est des mots (ou dates) séparés par des ; qui servent de délimiteurs.

    Heu non je ne connais pas du tout.

  17. #17
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Exemple tiré de l'enregistreur de macros, à toi de t'en servir comme début
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    26
    27
    28
    29
    30
    31
    32
    33
    Sub ImportTextFile()
    Dim OldFile As String, NewFile As String
     
     
    OldFile = "C:\Users\VAL\Desktop\lamedb.txt"
    If Dir(OldFile) <> "" Then
        '--Ici on importe le fichier texte vers Feuil2 avec comme séparateur le point-virgule
        With ThisWorkbook.Worksheets("Feuil2")
            With .QueryTables.Add(Connection:="TEXT;" & OldFile, Destination:=.Range("A1"))
                .RefreshStyle = xlInsertDeleteCells
                .TextFileParseType = xlDelimited
                .TextFileTextQualifier = xlTextQualifierDoubleQuote
                .TextFileConsecutiveDelimiter = False
                .TextFileTabDelimiter = False
                .TextFileSemicolonDelimiter = True
                .TextFileCommaDelimiter = False
                .TextFileSpaceDelimiter = False
                .TextFileColumnDataTypes = Array(1)
                .Refresh BackgroundQuery:=False
                .Delete
            End With
        End With
        '--Fin de l'import
     
        '-- on renomme le fichier texte
        NewFile = "C:\Users\VAL\Desktop\Nouveau dossier\" & Format(Now(), "yyyymmdd-hhnnss") & ".txt"
        Name OldFile As NewFile
     
        '--Suite des traitements sur le classeur
    Else
        MsgBox "Ficgier " & OldFile & " introuvable"
    End If
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  18. #18
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 14
    Points
    14
    Par défaut
    Après test ça m'a l'air bon merci beaucoup pour votre aide !!


    Une dernière petite question (promis j’arrête )

    Sur mon classeur, j'ai ma 1ere feuille avec mes boutons, j'ai 2 boutons qui me crééent une nouvelle feuille à la date du jour (avec l'heure), j'aimerai avec un 3ieme bouton concaténer mes deux onglet créés dans un 3 ieme onglet.

    (je sais pas si, si j'ai été clair)

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 44
    Points : 14
    Points
    14
    Par défaut
    Bon j'ai réussi ! Je pense que ça peut etre optimisé mais ça marche (à peu près)

    Par contre j'ai une question, lorsque que je veux insérer une nouvelle feuille avant de la renommer il faut lui indiquer un nom type Feuil, ici se sera Feuil4, mais si par hasard la feuille 4 existe déjà tout plante, n'y a t il pas moyen d'optimiser cette étape ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Sheets.Add After:=Sheets(Sheets.Count)
    Worksheets("Feuil4").Name = "" & Format(Now(), "yyyymmdd - hh")
    ongletfinal = Sheets(4).Name

  20. #20
    Membre expérimenté
    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    667
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 667
    Points : 1 419
    Points
    1 419
    Par défaut
    Bonjour,

    Déclare une variable sh de classe Worksheet et affecte-lui la nouvelle feuille créée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set sh = Sheets.Add After:=Sheets(Sheets.Count)
    sh.Name = "" & Format(Now(), "yyyymmdd - hh")
    ongletfinal = sh.Name

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [Toutes versions] Import&Mise en forme Fichier texte vers excel
    Par roadmender dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/12/2009, 14h45
  2. Comment ouvrir et renommer un fichier texte
    Par rouletabille63 dans le forum VBScript
    Réponses: 2
    Dernier message: 15/11/2009, 17h20
  3. Renommer des fichiers texte
    Par jarault dans le forum Macros et VBA Excel
    Réponses: 25
    Dernier message: 25/03/2008, 18h02
  4. Réponses: 1
    Dernier message: 14/12/2007, 09h33
  5. Réponses: 1
    Dernier message: 19/01/2006, 19h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo