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

Word Discussion :

Automatisation: renommer fichiers et champs dans le doc par une donnée unique [WD-2016]


Sujet :

Word

  1. #1
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2018
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2018
    Messages : 82
    Points : 58
    Points
    58
    Par défaut Automatisation: renommer fichiers et champs dans le doc par une donnée unique
    Bonjour ,

    J'ai une action répétitive que je voudrais automatiser. Je m'explique, je voudrais pouvoir renommer plusieurs fichiers localisés dans un même dossier en même temps. Par exemple: Renommer: ANNEXE I_#nom_V1.0.doc, ANNEXE II_#nom_V1.0.doc, ANNEXE II_#nom_V1.0.doc etc... en remplacent "#nom" par exemple par "Jean" et obtenir ANNEXE I_Jean_V1.0 ANNEXE II_Jean_V1.0, ANNEXE II_Jean_V1.0.

    Petit bonus: Dans chaque annexe, j'aimerai également remplacer ce champs "#nom" par "Jean"

    J'aimerai donc à partir d'une saisie, renommer automatiquement mes fichiers et modifier aussi ce même champs à l’intérieur de mes fichiers.

    Une piste ?

    Merci mille fois d'avance

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

    • Vos fichiers d'annexe ont quelle origine, plus clairement comment sont-ils générés ? Depuis Word, Excel, autre outil ?
    • A partir de quels critères, décidez-vous que le fichier Annexe I sera attribué à Jean, etc... ?
    • Sont-ils toujours dans le même répertoire ?

  3. #3
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2018
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2018
    Messages : 82
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Bonjour,

    • Vos fichiers d'annexe ont quelle origine, plus clairement comment sont-ils générés ? Depuis Word, Excel, autre outil ?
    • A partir de quels critères, décidez-vous que le fichier Annexe I sera attribué à Jean, etc... ?
    • Sont-ils toujours dans le même répertoire ?
    Merci de votre attention

    * Ce sont des documents Word (j'étudierai vos pistes pour d'autre types style PDF, XLS mais là c'est du .doc) et ils sont fait par moi (comme un template\modele je dirai)
    * Un nouveau client définit un nouveau renommage des fichiers et de champs fixes dans les docs (dans l’entête des docs et en premiere page j'ai besoin de mettre le nom du clt), actuellement je renomme tous à la main
    * Là je copie/colle mes annexes modèles dans un répertoire différents (au nom du client par exple)

    Vous pensez qu'il est possible d'utiliser un autre composant office genre Excel ou VBA ou script pour générer mes docs en utilisant les modèles: on clique sur l'"application", Je saisie le nom du client "Nouveau clients: #nom" cliquez sur <GENERER> sélectionner DOSSIER SOURCE ..
    Et hop ! ça me créer mes fichiers docs avec le bon nom dans un dossier choisie et le nom client dans toutes mes docs(en en-tete et en 1er page).

    ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par shepard01 Voir le message
    Le plus simple est de faire ce travail depuis le fichier qui gère votre liste de clients. Qu'utilisez-vous pour cela ? Excel, Access ?

  5. #5
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2018
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2018
    Messages : 82
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Le plus simple est de faire ce travail depuis le fichier qui gère votre liste de clients. Qu'utilisez-vous pour cela ? Excel, Access ?
    Je n'ai pas de liste de clients. J'ai un nouveau client toute les semaines. Actuellement, lorsque j'ai des nouveaux clients, je copie colle mes annexes dans un dossier que je crée à son nom et je renomme à la main les titres de mes annexes sur la partie #nom par le nom du client, j'ouvre mes annexes et je renomme à la main le champ #nom par le nom du client à deux endroits (en tête et sur ma 1er page).

    (J'ai une piste en utilisant les signets pour saisir le nom du client en 1er page et que ça le me rentre automatiquement dans l'en-tete via les signets.)

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par shepard01 Voir le message
    Avez-vous déjà créé une macro sur Word ?
    Si oui, en reprenant le mode opératoire réalisé manuellement, que donne votre code avec l'enregistreur de macro ? (Menu Développeur pour créer votre macro).
    Une fois votre manip réalisée, terminez la macro et regardez le résultat dans l'éditeur VBA (Alt-F11).
    Nb : Créez votre macro dans votre document (.docm) et pas dans votre Normal.dot.
    Mettez votre code en ligne.

  7. #7
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2018
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2018
    Messages : 82
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Avez-vous déjà créé une macro sur Word ?
    Si oui, en reprenant le mode opératoire réalisé manuellement, que donne votre code avec l'enregistreur de macro ? (Menu Développeur pour créer votre macro).
    Une fois votre manip réalisée, terminez la macro et regardez le résultat dans l'éditeur VBA (Alt-F11).
    Nb : Créez votre macro dans votre document (.docm) et pas dans votre Normal.dot.
    Mettez votre code en ligne.
    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
     
    Sub Macro1()
    '
    ' Macro1 Macro
    '
    '
        Selection.TypeText Text:="#nomdip"
        ActiveDocument.Save
        Windows("ANNEXE I_DIP_#nomdip_V1.0.docx").Activate
        ActiveWindow.Close
        Selection.TypeText Text:="#nomdip"
        ActiveDocument.Save
        Windows("ANNEXE II_DIP_#nomdip_V1.0.docx").Activate
        ActiveWindow.Close
        Selection.TypeText Text:="#nomdip"
        ActiveDocument.Save
        Windows("ANNEXE III_DIP_#nomdip_V1.0.docx").Activate
        ActiveWindow.Close
        Selection.TypeText Text:="#nomdip"
        ActiveDocument.Save
        Windows("ANNEXE IV_DIP_#nomdip_V1.0.docx").Activate
        ActiveWindow.Close
    End Sub

  8. #8
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2018
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2018
    Messages : 82
    Points : 58
    Points
    58
    Par défaut
    Je n'arrive pas à comprendre , une fois la macro faite comment je peux la réutiliser

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par shepard01 Voir le message
    Je n'arrive pas à comprendre , une fois la macro faite comment je peux la réutiliser
    Je regarde et vous tiens au courant.

  10. #10
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2018
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2018
    Messages : 82
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Je regarde et vous tiens au courant.
    Ok merci,

    Je met le fichier concerné en pj,
    je résume il faudrait pouvoir modifier dans le titre du fichier nomDIP et dans le doc nomDIP et ça dans les cinq annexes par une valeur telle que Jean et que cela me crée un dossier Jean avec ANNEXE I_DIP_JEAN_V1.0.docx et la valeur Jean dans le doc à la place de nomDIP

    et que je puisse faire ça pour un autre "Jean2" indéfiniment.
    Fichiers attachés Fichiers attachés

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par shepard01 Voir le message
    Le code dans le fichier "Fichiers renommer 2018-10-21.docm" joint, charge les fichiers présents dans un répertoire des modèles (Nb : La variable contenant le chemin du répertoire est une constante). En allant chercher le répertoire de destination avec le bouton "..." et après avoir saisi un nom de substitution dans le textbox, le programme copie les fichiers présents dans le répertoire des modèles, les déverse dans le répertoire sélectionné et réalise la transformation demandée.


    Pièce jointe 421078

  12. #12
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2018
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2018
    Messages : 82
    Points : 58
    Points
    58
    Par défaut
    Dommage qu'on ne puisse pas dire de gros mots pour exprimer sa surprise ! Quel talent ! C'est ça !!! et en plus ça fonctionne !

    Je vais étudier le code. Et d'ici quelques jours je mettrai le statu en résolu.

    Etre aussi efficace, rapide et bénévole ça me laisse bouche bée.

    Un grand merci, je me sens redevable



    J'ai testé ça fonctionne pas mal du tout. Ça fonctionne parfaitement jusqu'à l'annexe III mais si je rajoute ANNEXE IV_DIP_#nomdip_V1.0.docx ça ne marche pas (c'est un copier/coller de l'annexe I mais renommer en annexe IV) et je ne sais pas trop pourquoi il ne prend pas en compte le nouveau ? c'est pas système de boucle ?

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

    Il faut modifier la procédure du bouton Valider qui teste la présence du fichier dans le Userform. Actuellement seules les 3 premières annexes sont traitées. On pourrait en effet avoir N fichiers dans le répertoire modèle, mais seulement quelques uns d'entre eux à exporter. Il suffit de dupliquer le cas et de modifier le nom.

  14. #14
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2018
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2018
    Messages : 82
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Bonjour,

    Il faut modifier la procédure du bouton Valider qui teste la présence du fichier dans le Userform. Actuellement seules les 3 premières annexes sont traitées. On pourrait en effet avoir N fichiers dans le répertoire modèle, mais seulement quelques uns d'entre eux à exporter. Il suffit de dupliquer le cas et de modifier le nom.
    ok donc si je veux ajouter une annexe en plus pour en traiter 4 j'ai essayé mais il ne me génère pas de 4ème annexe (pas d'erreur nan plus). Je n'ai modifié que cela : CtrK As Long

    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
     
    Dim IndexListe As Long, CtrI As Long, CtrJ As Long, CtrK As Long
    [...]
    ' Tri des enregistrements
           With Usf_M100_REnommerFichiers
                With .ListBoxFichiersModeles
                     If .ListCount > 0 Then
                        For CtrI = 0 To .ListCount - 1
                            For CtrJ = 0 To .ListCount - 1
                            'ajout de CtrK
                                For CtrK = 0 To .ListCount - 1
                                    If .List(CtrI) > .List(CtrK) Then
                                        StrTemp = .List(CtrI)
                                        .List(CtrI) = .List(CtrJ)
                                        .List(CtrJ) = .List(CtrK)
                                        .List(CtrK) = StrTemp
                                    End If
                                  Next CtrK
                            Next CtrJ
                        Next CtrI
                    End If
                End With
                With .ListBoxFichiersDestination
                     If .ListCount > 0 Then
                        For CtrI = 0 To .ListCount - 1
                            For CtrJ = 0 To .ListCount - 1
                                For CtrK = 0 To .ListCount - 1
                                'ajout de CtrK
                                    If .List(CtrI) > .List(CtrK) Then
                                        StrTemp = .List(CtrI)
                                        .List(CtrI) = .List(CtrJ)
                                        .List(CtrJ) = .List(CtrK)
                                        .List(CtrK) = StrTemp
                                    End If
                                Next CtrK
                            Next CtrJ
                        Next CtrI
                    End If
                End With
     
           End With
    J'aimerai bien pouvoir choisir dans mon Userform les annexes que je veux générer. Par exemple: il m'affiche mes 4 annexes et j'en sélectionne 3 pour qu'il m'en génère que 3 justement. Ça me permettrai d'avoir ma liste de modèles et de choisir sur lesquelles agir.

    Là où je ne comprend pas c'est entre un nombre défini d'annexe et un nombre N d'annexe. A chaque annexe ajouté, je dois également "dupliquer le cas et de modifier le nom" ? (même si je n'ai toujours pas encore réussis à la dupliquer une fois )

  15. #15
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par shepard01 Voir le message
    Il faut modifier cette partie de code dans la boite de dialogue. J'ai rendu la propriété MultiSelect de la ListBox "ListBoxFichiersModeles" fmMultiSelectExtended. Le Select case permet de contrôle de type de modification apporté à chaque fichier en fonction de la procédure M200_MettreAJourLeNomDip. Cette procédure ne met à jour qu'un seul ContentControl, on pourrait imaginer que dans d'autres annexes, il y en ait plus d'un.
    A noter que si vous souhaitez avoir vos noms de fichier apparaître dans l'ordre dans les ListBox, il vous faut abandonner les chiffres romains.

    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
     
    Private Sub BoutonValiderLeNomChoisi_Click()
     
    Dim CtrI As Integer
    Dim NouveauNom As String
     
           If Me.TextBoxNomChoisi = "" Then
              MsgBox "Saisissez un nom !", vbCritical
              Exit Sub
            End If
     
            Me.ListBoxFichiersDestination.Clear
     
            Application.ScreenUpdating = False
            With Me.ListBoxFichiersModeles
     
                 For CtrI = 0 To .ListCount - 1
                     If .Selected(CtrI) = True Then
                        Select Case .List(CtrI)
     
                               Case "ANNEXE I_DIP_#nomdip_V1.0.docx", "ANNEXE II_DIP_#nomdip_V1.0.docx", _
                                    "ANNEXE III_DIP_#nomdip_V1.0.docx", "ANNEXE IV_DIP_#nomdip_V1.0.docx", _
                                    "ANNEXE V_DIP_#nomdip_V1.0.docx"
     
                                    NouveauNom = NouveauNomFichier(.List(CtrI), Me.TextBoxNomChoisi)
                                    M100_RenommerLesFichiers Me.TextBoxRepertoireChoisi, .List(CtrI), NouveauNom
                                    M200_MettreAJourLeNomDip Me.TextBoxRepertoireChoisi & NouveauNom, Me.TextBoxNomChoisi
     
                                    Me.ListBoxFichiersDestination.AddItem NouveauNom
     
                        End Select
                     End If
     
                 Next CtrI
     
            End With
     
            Application.ScreenUpdating = True
     
    End Sub
    Pièce jointe 421356

  16. #16
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2018
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2018
    Messages : 82
    Points : 58
    Points
    58
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Il faut modifier cette partie de code dans la boite de dialogue. J'ai rendu la propriété MultiSelect de la ListBox "ListBoxFichiersModeles" fmMultiSelectExtended. Le Select case permet de contrôle de type de modification apporté à chaque fichier en fonction de la procédure M200_MettreAJourLeNomDip. Cette procédure ne met à jour qu'un seul ContentControl, on pourrait imaginer que dans d'autres annexes, il y en ait plus d'un.
    A noter que si vous souhaitez avoir vos noms de fichier apparaître dans l'ordre dans les ListBox, il vous faut abandonner les chiffres romains.
    Effet wahou n°2 C'est tellement bien.

    Vous avez dû rigoler (ou pleurer) en voyant ma tentative précédente.

    Pas de problème pour les annexes dans le désordres à cause des chiffres romains (je devrais en avoir moins d'une dizaine).
    Je me rend compte qu'il me manque une information cruciale et certainement évidente pour vous, j'ignore où trouver une partie du code. Moi j’accède au code en clichant dans l'onglet Développeur puis Visual Basic et je ne vois absolument pas la partie : M200_MettreAJourLeNomDip ou la partie Private Sub BoutonValiderLeNomChoisi_Click()

    J'ai le sentiment qu'une porte cachée va me donner accès à un monde sans limite !

  17. #17
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par shepard01 Voir le message
    Si vous voyez votre éditeur VBA comme dans ce vidage d'écran, les procédures sont accessibles en double-cliquant sur les modules (Mod100..., Mod200..., ThisDocument, Usf_M100...).

    Pièce jointe 421479

  18. #18
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2018
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Octobre 2018
    Messages : 82
    Points : 58
    Points
    58
    Par défaut
    C'est trouvé. L'explorateur de projet était fermé.

    Ba à ce stade je peux dire que le sujet d'origine est résolu. Merci

    Je vais quand même le laisser ouvert, mon cerveau s'ouvre à de nouvelles perspectives . En effet, si je veux parfois personnaliser mon en-tête je dois le faire sur chaque annexe modèle.

    Alors je me dit que je pourrai faire une seule annexe modèle ! et que le programme me génère mes annexes directement en docx, en PDF également car les infos serait toutes pré-saisies. Le programme me propose de choisir entre 5 annexes se basant sur un seul modèle:
    ANNEXE #numero_DIP_#nomdip_V1.0.docx. (Si je dois ajouter une annexe non référencée, choix+1 Nannexe je n'aurai qu'a copier le code pour personnaliser ce nouvel annexe (Ntitre+NnumeroDIP)

    Nom : exple.PNG
Affichages : 1223
Taille : 11,9 Ko

    titre correspondrait à l'annexe choisie (Choix annexe I = titre 1, Choix annexe II = titre 2) - données fixes correspondant au titre numerode l'annexe dans le nom du fichier

    A saisir:
    Nomdip serait identique à chaque annexe (déjà fait)
    Nbpage serait à saisir, différent pour chaque annexe
    nom auteur serait identique à chaque annexe (similaire à la manip Nomdip)

  19. #19
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par shepard01 Voir le message
    C'est pour cette raison qu'il faut différencier vos différents couples Annexes et codes M200.... avec le select case. Les procédures du type M200... sont là pour différencier ce que vous faîtes sur les contenus.

    En ce qui concerne le nombre de pages, il est accessible depuis Insertion-Texte-Quickpart puis vous choisissez le champ à insérer.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Renommer fichiers selon indications dans les colonnes
    Par confortola dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 26/04/2018, 11h06
  2. Réponses: 2
    Dernier message: 23/11/2016, 18h14
  3. [HTML] 1 meme champ dans 2 formulaires d'une meme page?
    Par loopx dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 18/02/2008, 02h09
  4. Réponses: 1
    Dernier message: 14/09/2007, 09h17
  5. Réponses: 14
    Dernier message: 25/09/2006, 13h03

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