Macro Word - Récupérer contenu spécifique (nom) et en faire le titre du doc
Résolu
TeaCup
-
TeaCup -
TeaCup -
Bonjour à tous,
J'ai un document Word que je dois remplir avec des infos du type : nom prénom numéro du ticket.
J'utilise une macro afin de récupérer le nom, prénom et numéro du ticket dans le document et il sauvegarde le document avec le bon nom.
La macro :
Le seul problème c'est que cela ne fonctionne pas avec les noms composé comme Jean-Philippe etc...
Avez vous une solution ?
Cordialement,
TeaCup
J'ai un document Word que je dois remplir avec des infos du type : nom prénom numéro du ticket.
J'utilise une macro afin de récupérer le nom, prénom et numéro du ticket dans le document et il sauvegarde le document avec le bon nom.
La macro :
Sub NomDoc() ' Dim NomDoc Nom = ActiveDocument.Paragraphs(13).Range.Words(15) Prenom = ActiveDocument.Paragraphs(13).Range.Words(16) Ticket = ActiveDocument.Paragraphs(13).Range.Words(17) NomModel = ActiveDocument.Paragraphs(13).Range.Words(8) ActiveDocument.SaveAs FileName:="C:\Users\test\Documents\" & "LE - " & Nom & Prenom & Ticket & " - " & NomModel & ".doc" ' End Sub
Le seul problème c'est que cela ne fonctionne pas avec les noms composé comme Jean-Philippe etc...
Avez vous une solution ?
Cordialement,
TeaCup
A voir également:
- Macro Word - Récupérer contenu spécifique (nom) et en faire le titre du doc
- Word 2013 - Télécharger - Traitement de texte
- Word et excel gratuit - Guide
- .Doc - Guide
- Tableau word - Guide
- Word a trouvé du contenu illisible - Guide
4 réponses
Bonjour,
Le tiret est considéré par un mot à part entière.
Une solution est de supprimer ce tiret dans la sauvegarde du fichier. Donc pour le nom du fichier, au lieu d'avoir DUPUIS Jean-Pierre, tu auras DUPUY JeanPierre. Personnellement j'ajouterais des _ entre chaque élément du nom.
Pour supprimer les tirets :
m@rina
Le tiret est considéré par un mot à part entière.
Une solution est de supprimer ce tiret dans la sauvegarde du fichier. Donc pour le nom du fichier, au lieu d'avoir DUPUIS Jean-Pierre, tu auras DUPUY JeanPierre. Personnellement j'ajouterais des _ entre chaque élément du nom.
Pour supprimer les tirets :
Sub sauvegarde()
Dim myrange As Range, chemin As String, mot As Variant
Dim texte As String, NomDoc As String
Dim Nom, Prenom, Ticket, NomModel
chemin = "C:\Users\test\Documents\"
Set myrange = ActiveDocument.Paragraphs(13).Range
texte = myrange.Text
For Each mot In myrange.Words
If mot.Text = "-" Then mot.Delete
Next mot
With myrange
Nom = .Words(15)
Prenom = .Words(16)
Ticket = .Words(17)
NomModel = .Words(8)
End With
NomDoc = chemin & "LE - " & Nom & Prenom & Ticket & NomModel & ".docx"
With ActiveDocument
.SaveAs FileName:=NomDoc
.Paragraphs(1).Range.Text = texte
.Save
End With
End Sub
m@rina
Bonjour m@rina,
Réponse un peu tardive mais merci pour votre aide cela va beaucoup m'aider.
C'est en effet beaucoup plus "propre" avec la méthode range.
Au lieu de supprimer le - avec la méthode "Delete", est t'il possible d'ajouter un espace a la place ? hmm.
Désolé pour les questions bête je suis une bille ^^
TeaCup
Réponse un peu tardive mais merci pour votre aide cela va beaucoup m'aider.
C'est en effet beaucoup plus "propre" avec la méthode range.
Au lieu de supprimer le - avec la méthode "Delete", est t'il possible d'ajouter un espace a la place ? hmm.
Désolé pour les questions bête je suis une bille ^^
TeaCup
Bonjour,
Une espace c'est un peu plus compliqué, car c'est justement l'espace qui définit le mot (entre autres).
Donc, on va tromper Word, on va remplacer le tiret par n'importe quoi, et ensuite on va remplacer le n'importe quoi par l'espace. J'ai modifié la macro et ici j'ai mis "zz" pour le n'importe quoi. Tu peux mettre bien ce que tu veux à la place, car si quelqu'un s'appelle Jazz... il aura tout faux !!!
m@rina
Une espace c'est un peu plus compliqué, car c'est justement l'espace qui définit le mot (entre autres).
Donc, on va tromper Word, on va remplacer le tiret par n'importe quoi, et ensuite on va remplacer le n'importe quoi par l'espace. J'ai modifié la macro et ici j'ai mis "zz" pour le n'importe quoi. Tu peux mettre bien ce que tu veux à la place, car si quelqu'un s'appelle Jazz... il aura tout faux !!!
m@rina
Sub sauvegarde()
Dim myrange As Range, chemin As String, mot As Variant
Dim texte As String, NomDoc As String, NomDoc2 as String
Dim Nom, Prenom, Ticket, NomModel
chemin = "C:\Users\test\Documents\"
Set myrange = ActiveDocument.Paragraphs(13).Range
texte = myrange.Text
For Each mot In myrange.Words
If mot.Text = "-" Then mot.Text = "zz"
Next mot
With myrange
Nom = .Words(15)
Prenom = .Words(16)
Ticket = .Words(17)
NomModel = .Words(8)
End With
NomDoc = chemin & "LE - " & Nom & Prenom & Ticket & NomModel & ".docx"
NomDoc2=Replace(NomDoc, "zz", " ")
With ActiveDocument
.SaveAs FileName:=NomDoc2
.Paragraphs(1).Range.Text = texte
.Save
End With
End Sub