Aide VBA sur Word

hypo78

XLDnaute Impliqué
Bonjour à tous,

tout d'abord, je vous présente mes meilleurs voeux pour cette nouvelle année.

En lisant le titre de mon post vous devez vous dire que je suis hors sujet, mais existe-il un équivalent à ExcelDownload en version Word?? Le moteur de recherche ne me trouve rien de terrible...

Donc au cas où : j'ai un fichier Word. Après avoir saisi quelques données je dois le sauvegarder autant de fois qu'il y a de jours dans le mois concerné.

Le nom du fichier doit être sous la forme : 120201_modèle_01022012.doc

Avec ce code j'arrive à sauvegarder sous la forme 20120201_modèle_01022012.doc

Code:
Sub Creation_doc_mois()

    Application.ScreenUpdating = False: Application.DisplayAlerts = False
    
    Année = InputBox("Saisir l'année sous la forme aaaa")
    Mois = InputBox("Saisir le mois à créer sous la forme mm")
    Jours = InputBox("Saisir le nombre de jours dans le mois")
  
    
    With ActiveDocument
    For i = 1 To Jours
    ActiveDocument.SaveAs FileName:=Année & Mois & Format(i, "dd") & "_Modèle_" & Format(i, "dd") & Mois & Année & ".doc", _
        FileFormat:=wdFormatDocument, LockComments:=False, Password:="", _
        AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, _
        EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData _
        :=False, SaveAsAOCELetter:=False
    Next i
    End With
End Sub

Je que je souhaiterais :
- supprimer le 20 (en rouge ci-dessus), j'ai essayé avec Format (Année, "yy") en vain

Bizarrement quand je lance cette macro avec les données année = 2012, mois = 02 et jours = 29 elle me crée bien 29 classeurs mais le 29 et le 30 n'existe pas on passe de 28 à 31.

Merci de votre aide ou de m'aiguiller sur un autre forum.

Cordialement.
 

JNP

XLDnaute Barbatruc
Re : Aide VBA sur Word

Re :),
Ton lien, c'est du vb.net, même si c'est proche de VBA, tu vas avoir du mal à adapter :rolleyes:.
As-tu essayer de supprimer tes signets à la fin de la boucle
Code:
    ActiveDocument.Bookmarks(1).Delete
    ActiveDocument.Bookmarks(2).Delete
ou
Code:
    ActiveDocument.Bookmarks(1).Range.Delete
    ActiveDocument.Bookmarks(2).Range.Delete
Bon courage :cool:
 

hypo78

XLDnaute Impliqué
Re : Aide VBA sur Word

Bonjour,

une solution, lancer la macro depuis un autre doc.

Ce qui donne pour mon cas :
Code:
 Sub Creation_doc_mois()

    Application.ScreenUpdating = False: Application.DisplayAlerts = False
    
    Dim NewDoc As Document
    
1   année = InputBox("Saisir l'année sous la forme aaaa", "MOI")
    If année = "" Then Exit Sub
    If Not année Like "####" Then
     MsgBox ("Saisir sous la forme aaaa")
     GoTo 1
    End If

2    mois = InputBox("Saisir le mois à créer sous la forme mm")
    If mois = "" Then Exit Sub
    If Not mois Like "##" Then
     MsgBox ("Saisir sous la forme mm")
    GoTo 2
    End If
    Jours = DateAdd("m", 1, DateSerial(année, mois, 1)) - DateSerial(année, mois, 1)

     Deb = Timer:
    
    For i = 1 To Jours
    Set NewDoc = Application.Documents.Open(ActiveDocument.Path & "\Bulletin.doc")
    
    With NewDoc
    .Bookmarks("date_jour").Range.Text = Format(DateSerial(année, mois, i), "dd/mm/yyyy")
    .Bookmarks("date_lendemain").Range.Text = Format(DateSerial(année, mois, i + 1), "dd/mm/yyyy")
    
    .Bookmarks("année_cours").Range.Text = Format(DateSerial(année, mois, i), "yyyy")
    .Bookmarks("année_prec").Range.Text = Format(DateSerial(année - 1, mois, i), "yyyy")
    .Bookmarks("année_prec2").Range.Text = Format(DateSerial(année - 1, mois, i), "yyyy")
    .Bookmarks("mois_cours").Range.Text = Format(DateSerial(année, mois, i), "mmmm")
    .Bookmarks("mois_cours2").Range.Text = Format(DateSerial(année, mois, i), "mmmm")

    
 
    
    .SaveAs FileName:=ThisDocument.Path & "\" & Format(DateSerial(année, mois, i), "yymmdd") & "_modèle_" & Format(DateSerial(année, mois, i), "ddmmyyyy") & ".doc", _
        FileFormat:=wdFormatDocument, LockComments:=False, Password:="", _
        AddToRecentFiles:=True, WritePassword:="", ReadOnlyRecommended:=False, _
        EmbedTrueTypeFonts:=False, SaveNativePictureFormat:=False, SaveFormsData _
        :=False, SaveAsAOCELetter:=False
        .Close
    End With
    Cpt = Cpt + 1
    Next i
    Application.ScreenUpdating = True: Application.DisplayAlerts = True
    MsgBox "Traitement Terminé" & vbLf & _
         Cpt & " BRQ créés" & vbLf & _
         "en " & Format(Timer - Deb, "0.00") & " Secondes"
End Sub

Private Sub CommandButton1_Click()
Call Creation_doc_mois
End Sub

Maintenant il me reste à récuperer des données dans un tableau Excel pour les coller dans un tableau Word..:confused:
 

Discussions similaires

  • Résolu(e)
Microsoft 365 Aide VBA!
Réponses
13
Affichages
931

Statistiques des forums

Discussions
314 611
Messages
2 111 144
Membres
111 051
dernier inscrit
MANUREVALAND