Forum Clubic

Macro d'enregistrement word

Bonjour ,

J’aimerais créer une macro dans Word qui enregistre automatiquement un fichier avec un nom specifique (année,mois,jour Bon de sortie Numéro de série)
Le problème se pose pour pour le numéro de série saisie dans mon document word j’aimerais le récupérer dans une variable et qu’il utilise cette variable pour le nom d’enregistrement de mon ficher
Voila mon code pour l’instant :
Sub Bon_desinvestisement()

’ Bon_de_sortie Macro


ChangeFileOpenDirectory “C:UsersKyleBTS”
ActiveDocument.SaveAs FileName:= _
Format(Date, “yyyy”) & “,” & Format(Date, “mm”) & “,” & Format(Date, “dd”) & “_Bon de sortie”, FileFormat _
:=wdFormatDocument, LockComments:=False, Password:="", AddToRecentFiles:= _
True, WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:= _
False, SaveNativePictureFormat:=False, SaveFormsData:=False, _
SaveAsAOCELetter:=False
End Sub

Salut,

Je n’ai jamais fait de macro pour Word auparavant (seulement Excel) mais j’étais curieux alors j’ai regardé vite fait. Tu peux récupérer ton numéro de série avec un Range.


Function getSerialNumber() As String

  Dim numParagraphs As Long
  Dim currentParagraph As String
  
  'nombre de paragraphes dans le document
  numParagraphs = ThisDocument.Paragraphs.Count
  
  'on explore chaque paragraphe à la recherche du numéro de série
  For i = 1 To numParagraphs
    
    currentParagraph = ThisDocument.Paragraphs(i).Range.Text
    
    If InStr(currentParagraph, "Numéro de série") Then
     
    'INSERER ICI LE CODE QUI EXTRAIT LE NUMERO DE SERIE DE "currentParagraph"
    'exemple:
    'getSerialNumber = Right(currentParagraph, 6)
      
    End If
    
  Next i

End Function

Il y a certainement mieux (sinon Word doit être vraiment pourri pour les macros) que de faire une boucle comme ça, mais ceci marche. Tu peux aussi rajouter un “exit” pour arrêter de boucler une fois que la macro a trouvé le numéro de série.
Edité le 10/02/2014 à 13:50

J’ai rentrez mon numero de serie dans une case de tableau je me demander donc si je pouvais rentrez mon numero de serie dans un champs et recuperer directement ce champs dans ma macro

On va supposer que ton tableau est reconnu par Word comme étant la “table 5” et que ton numéro de série se trouve en 3ème ligne, 2ème colonne :

Dim NumeroDeSerie As String
NumeroDeSerie  = ActiveDocument.Tables(5).Cell(3, 2).Range.Text

Il y aura sans doute un “Left” ou “Mid” à opérer pour enlever des caractères de contrôle, mais ça devrait marcher.
Edité le 10/02/2014 à 21:08