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

VBA Word Discussion :

Ouvrir un fichier avec des caracteres variables.


Sujet :

VBA Word

  1. #1
    Candidat au Club
    Homme Profil pro
    ingenieur de maintenance
    Inscrit en
    Décembre 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingenieur de maintenance

    Informations forums :
    Inscription : Décembre 2016
    Messages : 10
    Points : 4
    Points
    4
    Par défaut Ouvrir un fichier avec des caracteres variables.
    Bonjour, je suis nouveau dans le monde du VBA dans Word et je cherche a créer une macro.
    Mon problème est de fusionner 4 fichiers ensemble. j ai cree deja une macro qui marche mais je bute sur un problème:

    Je dois ouvrir un fichier qui se nome : 61203-20161219-044745812-PST-GC-IN.dat or je souhaite avoir un nom générique et j ai besoin que word ouvre tout les fichiers avec une partie de ce nom commune et la partie "044745812" variable. y a t il un caractère que je puisse mettre dans la ligne a la place des ? pour que word ouvre tout les fichiers avec seule cette partie qui diffère?:
    Documents.Open FileName:="61203-20161219-?????????-PST-GC-IN.dat", _

    J espère avoir été clair.... Merci d avance de votre aide.

    Et bonne fête a tous.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par sudiste33 Voir le message
    Bonjour,

    Pouvez-vous mettre votre code en ligne ?

    Cordialement.

  3. #3
    Candidat au Club
    Homme Profil pro
    ingenieur de maintenance
    Inscrit en
    Décembre 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingenieur de maintenance

    Informations forums :
    Inscription : Décembre 2016
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Voila le code:

    les # représentent des nombres aléatoire que je cherche a laisser indéfinie.

    Sub compilXLfile()
    '
    ' compilXLfile Macro
    '
    '
    datefile = InputBox("date du download:yyyymmdd")
    ChangeFileOpenDirectory _
    "C:\Users\fdaniel\Documents\Cymer\ST\temp download xla\61203\"
    Selection.InsertFile FileName:="61203-" & "" & datefile & "-#########-PST-GC-IN.dat", _
    Range:="", ConfirmConversions:=False, Link:=False, Attachment:=False
    Selection.TypeParagraph
    Selection.InsertFile FileName:="61203-" & "" & datefile & "-#########-PST-GD-IN.dat", _
    Range:="", ConfirmConversions:=False, Link:=False, Attachment:=False
    Selection.MoveDown Unit:=wdLine, Count:=1
    Selection.InsertFile FileName:="61203-" & "" & datefile & "-#########-PST-GE-IN.dat", _
    Range:="", ConfirmConversions:=False, Link:=False, Attachment:=False
    Selection.InsertFile FileName:="61203-" & "" & datefile & "-#########-PST-GS-IN.dat", _
    Range:="", ConfirmConversions:=False, Link:=False, Attachment:=False
    Selection.MoveUp Unit:=wdLine, Count:=53
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.MoveUp Unit:=wdLine, Count:=3
    Selection.MoveDown Unit:=wdLine, Count:=3
    Selection.TypeParagraph
    Selection.MoveUp Unit:=wdLine, Count:=114
    Selection.MoveDown Unit:=wdLine, Count:=12
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.MoveUp Unit:=wdLine, Count:=347
    Selection.MoveDown Unit:=wdLine, Count:=15
    Selection.MoveUp Unit:=wdLine, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.Delete Unit:=wdCharacter, Count:=1
    Selection.MoveUp Unit:=wdLine, Count:=2
    Selection.MoveDown Unit:=wdLine, Count:=2
    Selection.MoveUp Unit:=wdLine, Count:=570
    Selection.MoveRight Unit:=wdCharacter, Count:=2
    Selection.TypeBackspace
    Selection.TypeText Text:="A"
    ActiveDocument.SaveAs2 FileName:="61203-" & "" & datefile & "-044806281-PST-GA-IN.rtf", FileFormat:=wdFormatRTF, _
    LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword _
    :="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
    SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
    False, CompatibilityMode:=0
    End Sub
    Merci pour votre aide :-)

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par sudiste33 Voir le message
    Je regarde.

    Pensez à mettre votre code entre balises #

  5. #5
    Invité
    Invité(e)
    Par défaut
    Pourquoi avoir choisi Word et pas Excel ?

    Cordialement.

  6. #6
    Candidat au Club
    Homme Profil pro
    ingenieur de maintenance
    Inscrit en
    Décembre 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingenieur de maintenance

    Informations forums :
    Inscription : Décembre 2016
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    le format de sortie doit être de type word, cela m a paru donc aller de soit, mais n ayant que peu d expertise je suppose que c est peu être un mauvais choix

    salutations,

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par sudiste33 Voir le message
    je suppose que c est peu être un mauvais choix
    C'est plus simple de manier VBA sous Excel. Dans votre cas, je ferais une macro pour regarder les fichiers .dat présents dans le répertoire défini. En fonction des N premiers caractères du nom des fichiers, j'ouvrirais directement chaque fichier et j'intégrerais les lignes dans un nouveau fichier.

    Comment faites vous la liste des fichiers à traiter ? Manuellement ?

    Cordialement.

  8. #8
    Candidat au Club
    Homme Profil pro
    ingenieur de maintenance
    Inscrit en
    Décembre 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingenieur de maintenance

    Informations forums :
    Inscription : Décembre 2016
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    alors il y a toujours 4 fichier par date et j ai besoin de les fusionner dans un certain ordre (a la fin du nom des 4 fichiers il y a le type, et je dois les mettre dans cet ordre GC,GD,GE puis GS.
    les nombres non signifiant étant une fonction de l heure ou la collecte de ses données a été faite.
    c est pour ça que la solution idéale aurait été qu ils puissent exister dans VBA une manière spécifique d indiquer un nombre quelconque unique pour chacun de ses caractères.
    Si c est pas possible, peut être je dois m orienter vers l ouverture de la chaine de caractère contenant GC,GD GE et GS vu que ces fichier seront unique?

    Merci encore du temps que vous passez a m aider...

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par sudiste33 Voir le message
    alors il y a toujours 4 fichier par date et j ai besoin de les fusionner dans un certain ordre (a la fin du nom des 4 fichiers il y a le type, et je dois les mettre dans cet ordre GC,GD,GE puis GS.
    les nombres non signifiant étant une fonction de l heure ou la collecte de ses données a été faite.
    c est pour ça que la solution idéale aurait été qu ils puissent exister dans VBA une manière spécifique d indiquer un nombre quelconque unique pour chacun de ses caractères.
    Si c est pas possible, peut être je dois m orienter vers l ouverture de la chaine de caractère contenant GC,GD GE et GS vu que ces fichier seront unique?
    Questions :

    - Dans le répertoire en question, y a-t-il seulement les 4 fichiers en question, où y a-t-il ceux des autres jours ?
    - Votre code récupère le contenu de chacun des fichiers sélectionnés dans l'ordre d'ouverture. Quels noms ont-ils avant traitement ? Ce que je comprends dans votre code, c'est que vous cherchez à les rebaptiser ? Vous confirmez ?

    - Pouvez-vous préciser la phrase ci-dessous :
    c est pour ça que la solution idéale aurait été qu ils puissent exister dans VBA une manière spécifique d indiquer un nombre quelconque unique pour chacun de ses caractères.
    - Etes vous obligé de conserver les caractères # une fois les fichiers rebaptisés ? Les chaines # sont elles différentes pour les 4 fichiers ? Si oui, que prenez-vous pour le fichier de synthèse ?

    En ce que concerne le formatage :
    - Votre code supprime tous les paragraphes vides. Fait-il autre chose ?


    Cordialement.

  10. #10
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Bonjour !

    Citation Envoyé par sudiste33 Voir le message
    y a t il un caractère que je puisse mettre dans la ligne a la place des ? pour que word ouvre tout les fichiers avec seule cette partie qui diffère?
    Un fichier ne pouvant être ouvert qu'avec chemin et nom exacts, il faut utiliser la fonction VBA Dir
    comme documentée dans l'aide VBA interne et son exemple …

    _________________________________________________________________________________________________________
    Je suis Paris, Berlin, Nice, Bruxelles, Charlie, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  11. #11
    Candidat au Club
    Homme Profil pro
    ingenieur de maintenance
    Inscrit en
    Décembre 2016
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingenieur de maintenance

    Informations forums :
    Inscription : Décembre 2016
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Rebonjour et merci de vos réponses.
    Citation Envoyé par (Eric KERGRESSE)
    Dans le répertoire en question, y a-t-il seulement les 4 fichiers en question, où y a-t-il ceux des autres jours ?
    Non il y a des fichiers pour tout les jours.

    Citation Envoyé par (Eric KERGRESSE)
    - Votre code récupère le contenu de chacun des fichiers sélectionnés dans l'ordre d'ouverture. Quels noms ont-ils avant traitement ? Ce que je comprends dans votre code, c'est que vous cherchez à les rebaptiser ? Vous confirmez ?
    les noms des fichiers sont de ce type la : 61203-yyyymmdd-114451107-CET-GX-IN.dat avec la date du jour de la capture des infos puis l heure exacte sour la forme d un nombre a 9 chiffres puis le type ou le X de GX peut prendre la valeur C ou D ou E ou S. tout est prédictible sauf l heure exacte.

    Je cherche a faire un code qui va récupérer les 4 fichiers (GC,GD,GS,GE) d un jour précis et les combiner en un seul avec l entête des fichiers en moins et un saut de ligne entre eux et ce fichier prendra la même typologie de nom que les autres avec GA a la place.

    Citation Envoyé par (Eric KERGRESSE)
    Etes vous obligé de conserver les caractères # une fois les fichiers rebaptisés ? Les chaines # sont elles différentes pour les 4 fichiers ? Si oui, que prenez-vous pour le fichier de synthèse ?
    j ai utilisé # pour designer un chiffre unique quelconque (c est justement mon problème d arriver a automatiser l ouverture du fichier alors qu une partie est impredictible)

    Citation Envoyé par (Eric KERGRESSE)
    En ce que concerne le formatage :
    - Votre code supprime tous les paragraphes vides. Fait-il autre chose ?
    il supprime l entête de chaque fichier copié, mets un saut de ligne entre chaque partie copie et renomme le premier entête en remplaçant un C par un A.

    j ai du coup tente le coup avec la fonction dir mais j ai du faire une erreur quelque part...

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
     
    Sub compilXLfile()
    '
    ' compilXLfile Macro
    '
    '
        datefile = InputBox("date du download:yyyymmdd")
     
        Dim FnameGC As String
        Dim FnameGD As String
        Dim FnameGE As String
        Dim FnameGS As String
     
        FnameGC = Dir("C:\Users\fdaniel\Documents\Cymer\ST\temp download xla\61203\61203-" & "" & datefile & "-?????????-PST-GC-IN.dat")
        FnameGD = Dir("C:\Users\fdaniel\Documents\Cymer\ST\temp download xla\61203\61203-" & "" & datefile & "-?????????-PST-GD-IN.dat")
        FnameGE = Dir("C:\Users\fdaniel\Documents\Cymer\ST\temp download xla\61203\61203-" & "" & datefile & "-?????????-PST-GE-IN.dat")
        FnameGS = Dir("C:\Users\fdaniel\Documents\Cymer\ST\temp download xla\61203\61203-" & "" & datefile & "-?????????-PST-GS-IN.dat")
     
     
        ChangeFileOpenDirectory _
            "C:\Users\fdaniel\Documents\Cymer\ST\temp download xla\61203\"
        Selection.InsertFile FileName:="FnameGC", _
            Range:="", ConfirmConversions:=False, Link:=False, Attachment:=False
        Selection.TypeParagraph
        Selection.InsertFile FileName:="FnameGD", _
            Range:="", ConfirmConversions:=False, Link:=False, Attachment:=False
        Selection.MoveDown Unit:=wdLine, Count:=1
        Selection.InsertFile FileName:="FnameGE", _
            Range:="", ConfirmConversions:=False, Link:=False, Attachment:=False
        Selection.InsertFile FileName:="FnameGS", _
            Range:="", ConfirmConversions:=False, Link:=False, Attachment:=False
        Selection.MoveUp Unit:=wdLine, Count:=53
        Selection.Delete Unit:=wdCharacter, Count:=1
        Selection.Delete Unit:=wdCharacter, Count:=1
        Selection.Delete Unit:=wdCharacter, Count:=1
        Selection.Delete Unit:=wdCharacter, Count:=1
        Selection.Delete Unit:=wdCharacter, Count:=1
        Selection.Delete Unit:=wdCharacter, Count:=1
        Selection.Delete Unit:=wdCharacter, Count:=1
        Selection.Delete Unit:=wdCharacter, Count:=1
        Selection.MoveUp Unit:=wdLine, Count:=3
        Selection.MoveDown Unit:=wdLine, Count:=3
        Selection.TypeParagraph
        Selection.MoveUp Unit:=wdLine, Count:=114
        Selection.MoveDown Unit:=wdLine, Count:=12
        Selection.Delete Unit:=wdCharacter, Count:=1
        Selection.Delete Unit:=wdCharacter, Count:=1
        Selection.Delete Unit:=wdCharacter, Count:=1
        Selection.Delete Unit:=wdCharacter, Count:=1
        Selection.Delete Unit:=wdCharacter, Count:=1
        Selection.Delete Unit:=wdCharacter, Count:=1
        Selection.Delete Unit:=wdCharacter, Count:=1
        Selection.MoveUp Unit:=wdLine, Count:=347
        Selection.MoveDown Unit:=wdLine, Count:=15
        Selection.MoveUp Unit:=wdLine, Count:=1
        Selection.Delete Unit:=wdCharacter, Count:=1
        Selection.Delete Unit:=wdCharacter, Count:=1
        Selection.Delete Unit:=wdCharacter, Count:=1
        Selection.Delete Unit:=wdCharacter, Count:=1
        Selection.Delete Unit:=wdCharacter, Count:=1
        Selection.Delete Unit:=wdCharacter, Count:=1
        Selection.Delete Unit:=wdCharacter, Count:=1
        Selection.Delete Unit:=wdCharacter, Count:=1
        Selection.MoveUp Unit:=wdLine, Count:=2
        Selection.MoveDown Unit:=wdLine, Count:=2
        Selection.MoveUp Unit:=wdLine, Count:=570
        Selection.MoveRight Unit:=wdCharacter, Count:=2
        Selection.TypeBackspace
        Selection.TypeText Text:="A"
        ActiveDocument.SaveAs2 FileName:="61203-" & "" & datefile & "-044806281-PST-GA-IN.rtf", FileFormat:=wdFormatRTF, _
            LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword _
            :="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
            SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
            False, CompatibilityMode:=0
    End Sub
    Merci d avance de votre aide... c est mon premier essaie en VBA sous Word

    Soyez indulgent c est pres que Noel :-))

  12. #12
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par sudiste33 Voir le message
    Bonjour,

    Merci pour ces précisions. Je regarde.

    Cordialement.

  13. #13
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par sudiste33 Voir le message
    Cela vous est-il possible de mettre en ligne 4 pseudo fichiers .dat et un fichier .rtf formaté comme il faudrait et contenant quelques lignes de données non confidentielles ?

    Cordialement.

  14. #14
    Invité
    Invité(e)
    Par défaut
    Essayez ce fichier Pièce jointe 230114

    Il vous restera le formatage.

    Cordialement.

  15. #15
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Merci à Olivier LEBEAU pour son tutoriel vba-word

    Dans la version précédente de l'outil, la date des fichiers était celle du jour.

    Dans cette nouvelle version :
    • La date et le nom du répertoire sont saisis dans un TextBox.
    • Un tableau des fichiers .rtf générés s'incrémente et un lien hypertexte permet d'accéder au fichier.



    A l'ouverture du fichier



    Pièce jointe 230236


    Après lancement de la concaténation :

    Les fichiers ne correspondant pas à la sélection se trouvent dans la ListBox de gauche. Les touches > et < permettent d'ajouter ou de retirer les fichiers sélectionnés dans la ListBox de droite.
    Si les fichiers correspondant à la date sont trouvés, il s'affichent directement dans la ListBox de droite.

    Pièce jointe 230237

    A la fin de la concaténation :

    Pièce jointe 230240

    Pièce jointe 230245
    Dernière modification par Invité ; 23/12/2016 à 05h45.

Discussions similaires

  1. Impossible d'ouvrir nom de fichier avec des accents
    Par sargei dans le forum Langage
    Réponses: 15
    Dernier message: 10/06/2009, 10h46
  2. ouvrir un fichier avec colonne en focntion des séparateurs
    Par oliver75 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/07/2007, 10h14
  3. Réponses: 1
    Dernier message: 23/07/2007, 11h00
  4. [ API JDIC ] Ouvrir un fichier avec des paramètres
    Par macmanus dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 11/05/2007, 15h32
  5. Import fichier texte avec des champs variables
    Par joshua12 dans le forum Access
    Réponses: 4
    Dernier message: 26/09/2006, 09h06

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