1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
Private Sub ExportVersWord_Click()
'on se positionne sur la feuille voulue
With Worksheets("Publications-2018")
'prendre les éléments du tableau qui a été filtré préalablement, et les concaténer dans une phrase :
'définition de ligne
ligne = Rows("1").Select
Dim Auteurs As String
Dim Titre As String
Dim NomDeRevue As String
Dim Annee As String
Dim idhal As String
'On commence à partir de la ligne 4
For i = 4 To ligne
'Si la ligne est visible, = résultat du filtre
If Not .Rows(i).Hidden Then
'On définit les variables, avec colonne$ on récupère la valeur en descendant de ligne en ligne tout en restant sur la colonne
'On sélectionne colonne$
Auteurs = .Range("C$" & i).Select
'Après sélection, on copie avec la mise en forme
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _False, Transpose:=False
Titre = .Range("D$" & i).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _False, Transpose:=False
NomDeRevue = .Range("E$" & i).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _False, Transpose:=False
Annee = .Range("A$" & i).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _False, Transpose:=False
idhal = .Range("B$" & i).Hyperlinks(1).Address
'On concatène les valeurs copiées dans une phrase
'& Chr(10) & & Chr(13) & servent pour un retour à la ligne
Phrase = " - " & Auteurs & ". " & Titre & ". " & NomDeRevue & " (" & Annee & ")" & Chr(10) & & Chr(13) & & idhal & "."
'Coller cette phrase dans un Word :
'Ouvrir Word :
'Nécessite d'activer la référence Microsoft Word xx.x object library
'(dans la fenêtre VBE, cliquez sur Outils, Référénces et cocher la référence)
Dim wdApp As New Word.Application
Dim wdDoc As Word.Document
'Ouvrir le word
Set wdDoc = wdApp.Documents.Open
wdApp.Visible = True
wdDoc.Activate
'on copie de la phrase, et on passe à la suivante
texte = texte & IIf(texte <> "", vbNewLine, "") & Phrase.Copy
'Collage
wdDoc.ActiveWindow.ActivePane.Selection.PasteAndFormat (wdPasteDefault)
'Saut de ligne dans le word
Selection.InsertAfter vbCrLf
End If
Next i
'ouvrir une boite de dialogue pour demander le chemin d'enregistrement du word
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = -1 Then
chemin = .SelectedItems(1) & "\"
End If
End With
'On vide la mémoire des objets
Set wdDoc = Nothing
Set wdApp = Nothing
End With
End Sub |
Partager