Macro Word - Récupérer contenu spécifique (nom) et en faire le titre du doc
Résolu/Fermé
A voir également:
- Macro Word - Récupérer contenu spécifique (nom) et en faire le titre du doc
- Word a trouvé du contenu illisible - Guide
- Macro word - Guide
- Recuperer video youtube - Guide
- Supprimer une page word - Guide
- Fichier .doc - Guide
4 réponses
m@rina
Messages postés
20990
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
1 octobre 2024
11 331
25 sept. 2020 à 01:42
25 sept. 2020 à 01:42
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
m@rina
Messages postés
20990
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
1 octobre 2024
11 331
30 sept. 2020 à 17:38
30 sept. 2020 à 17:38
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