[RESOLU] Macro sous Word

Forum Microsoft Office Word

Modérateur : Argitxu

[RESOLU] Macro sous Word

Publicité
 

Ecrivain77
Posteur débutant
Posteur débutant
Messages : 5
Enregistré le : 09 juil. 2018, 15:15
Contact :

[RESOLU] Macro sous Word

Message non lu par Ecrivain77 » 09 juil. 2018, 15:22

Bonjour,
Je viens de faire cette macro.

Code : Tout sélectionner

Sub PageduMatin02()
'
' PageduMatin02 Macro
'
'
    Selection.Copy
    ChangeFileOpenDirectory _
        "C:\Users\Ecrivain77\OneDrive\01_Loquace\02_Richesses_Personnelle\2_4_Pages_du_matin\2018\"
    Selection.Copy
    ActiveDocument.SaveAs2 FileName:= _
        "https://d.docs.live.net/b54b90dd3270acfc/01_Loquace/02_Richesses_Personnelle/2_4_Pages_du_matin/2018/08%20-%20juillet%20%2021--26.dotm" _
        , FileFormat:=wdFormatXMLTemplateMacroEnabled, LockComments:=False, _
        Password:="", AddToRecentFiles:=True, WritePassword:="", _
        ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
        SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
        False, CompatibilityMode:=15
	Documents("CB.doc").Close False
End Sub
J'aimerai changer la première commande "Selection.Copy" par une commande qui sélectionne la première ligne de la page, ou les 12 premiers caractères de la première ligne de la page.
La première ligne est un champ automatique Date et Heure.
Et j'aimerai à la fin de la macro, fermer word.
Merci.
Modifié en dernier par Ecrivain77 le 12 juil. 2018, 14:36, modifié 1 fois.

Avatar du membre
m@rina
Administrateur
Administrateur
Messages : 1242
Enregistré le : 14 août 2009, 08:51
Contact :

Re: Macro sous Word

Message non lu par m@rina » 12 juil. 2018, 02:17

Bonjour,

Je ne sais pas trop ce que tu veux faire avec cette macro parce qu'en fait, tu copies la sélection, mais pour en faire quoi ? Ce n'est pas collé.

Par ailleurs, le fait d'utiliser ChangeFileOpenDirectory ne sert à rien puisque tu redonnes le nom de la directory dans la macro de sauvegarde...

EN tous les cas, voici le code pour copier les 12 premiers caractères du documents :
Dim montexte As Range

Code : Tout sélectionner

Set montexte = ActiveDocument.Range(Start:=ActiveDocument.Content.Start, End:=ActiveDocument.Content.Start + 12)
montexte.Copy
Et comme j'ai un doute sur ce que tu veux faire vraiment, voici le code pour copîer le premier paragraphe :

Code : Tout sélectionner

ActiveDocument.Paragraphs(1).Range.Copy
Et pour quitter Word :

Code : Tout sélectionner

Application.Quit 
Maintenant tu as sans doute intérêt à ajouter la sauvegarde des documents avant de quitter. Auquel il faudrait ajouter

Code : Tout sélectionner

SaveChanges:=wdSaveChanges
.
m@rina

Ecrivain77
Posteur débutant
Posteur débutant
Messages : 5
Enregistré le : 09 juil. 2018, 15:15
Contact :

Re: Macro sous Word

Message non lu par Ecrivain77 » 12 juil. 2018, 12:17

Bonjour m@rina,

Voilà cela commence à être ce que je veux. :merci:
En fait je me suis servi du bouton "enregistrer une macro"
Ce que je souhaiterai.
Mon fichier en modèle.dotm, s'ouvre , j'écris dedans, et je dois l'enregistrer dans un autre dossier, avec la date et l'heure, comme nom de fichier.
Ce qui donne j ouvre le fichier toto.dotm qui se trouve dans un dossier, je fais mon travail , et je l'enregistre dans un sous dossier du même endroit, et sous le nom "date et heure" du jour.
Chaque enregistrement est un nouveau fichier par jour.
Ex:
Mon fichier de base se trouve dans c:/toto/titi/toto1/toto.dotm.
Je l'ouvre aujourd'hui , la première ligne du fichier est un champs automatique date+heure.
Je veux l'enregistrer sous c:/toto/titi/toto1/2018/12juillet12-13.docx
Et tous les jours il changera de nom.
Voilà j'espère avoir été plus clair.
Merci pour ton aide.

Ecrivain77
Posteur débutant
Posteur débutant
Messages : 5
Enregistré le : 09 juil. 2018, 15:15
Contact :

Re: Macro sous Word

Message non lu par Ecrivain77 » 12 juil. 2018, 12:37

Bonjour m@rina,

Je viens de supprimer le champs date et heure, car il change quand j'ouvre le fichier enregistré.
Je renseignerai date et heure , cela fera aussi un nom de fichier plus correcte.
Je viens de faire la macro avec tes codes.

Code : Tout sélectionner

Sub PageMatin()
'
' PageMatin Macro
'
'
    Set montexte = ActiveDocument.Range(Start:=ActiveDocument.Content.Start, End:=ActiveDocument.Content.Start + 12)
montexte.Copy
    ActiveDocument.SaveAs2 FileName:= _
        "C:\Users\Ecrivain77\OneDrive\01_Loquace\01_Richesses_Personnelle\Pages_du_matin\2018\.montexte" _
        , FileFormat:=wdFormatXMLDocument, LockComments:=False, Password:="", _
        AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, _
        EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData _
        :=False, SaveAsAOCELetter:=False, CompatibilityMode:=15
End Sub
Il ne me reste plus qu'à remplacer .montexte, par le texte sélectionné.
Je ne sais pas passer par une variable.
Merci.

Ecrivain77
Posteur débutant
Posteur débutant
Messages : 5
Enregistré le : 09 juil. 2018, 15:15
Contact :

Re: Macro sous Word

Message non lu par Ecrivain77 » 12 juil. 2018, 14:35

Bonjour m@rina,
Je viens de trouver.
Voici la macro finie et fonctionnelle.

Code : Tout sélectionner

Sub PageMatin()
'
' PageMatin Macro
'
'
'Sélection des 17 premiers caractères de la ligne Une (espace compris)
    Set montexte = ActiveDocument.Range(Start:=ActiveDocument.Content.Start, End:=ActiveDocument.Content.Start + 17)
montexte.Copy
'création de la variable
Dim monFichier As String
'Appel de la variable
    monFichier = montexte
'Enregistrement du fichier sous avec la variable dans le nom de fichier
    ActiveDocument.SaveAs2 FileName:= _
        "C:\Users\Ecrivain77\OneDrive\01_Loquace\01_Richesses_Personnelle\Pages_du_matin\2018\" & monFichier _
        , CompatibilityMode:=15
' ferme word
    Application.Quit
End Sub
Merci encore de ton aide.

Avatar du membre
m@rina
Administrateur
Administrateur
Messages : 1242
Enregistré le : 14 août 2009, 08:51
Contact :

Re: [RESOLU] Macro sous Word

Message non lu par m@rina » 13 juil. 2018, 01:20

Bonsoir,

Je ne suis quand même que moyennement convaincue par ta macro ! :D

Logiquement, tu devrais travailler avec un modèle.
Donc, à partir de ce modèle, tu crées un nouveau document. Et tu lances la macro qui est accessible puisque dans le modèle.

Pour la macro, si je comprend pas bien, tu veux juste enregistrer le fichier avec comme nom la date et l'heure en cours. Donc, il n'y a pas besoin d'insérer de date dans le document, ni de faire de copie... A titre d'info, si tu as quand même besoin de la date dans le nouveau document, il faut juste mettre un champ CREATEDATE dans le modèle. Ainsi à la création du nouveau document, tu auras la date du jour de la création et ensuite elle ne bougera plus.

Sinon, pour la macro :

Code : Tout sélectionner

Sub enregistre()
Dim dossier As String, madate As Date, madate2 As String
dossier = "C:\Users\Ecrivain77\OneDrive\01_Loquace\02_Richesses_Personnelle\2_4_Pages_du_matin\2018\"
madate = Now()
madate2 = Format(madate, "dd-mmmm-yyyy hh-mm")
ActiveDocument.SaveAs2 FileName:=dossier & madate2 & "-" & ".docx"
End Sub
m@rina

Ecrivain77
Posteur débutant
Posteur débutant
Messages : 5
Enregistré le : 09 juil. 2018, 15:15
Contact :

Re: [RESOLU] Macro sous Word

Message non lu par Ecrivain77 » 13 juil. 2018, 11:58

Bonjour m@rina,

Je te comprend mais la date doit être celle de l'ouverture du fichier, et celle de l 'enregistrement.
Je vais voir , avec ta macro, avec la date incluse dans le code.
En réfléchissant bien , tu as raison encore une fois, je vais mettre la date et l' heure à la main dans le fichier, et l'enregistrer avec ta macro.
J'ai fais un test, et il concluant.
Je vais garder ta macro, et aussi comme modèle, pour en créer une autre qui prendra les 12 caractères de la première ligne , pour mes mémos d' écritures.
Merci très sincèrement pour ton implication.
Bonne journée et très bon week-end.

Répondre