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
| Sub Importation_Donnees_Caisse()
' -- Déclaration des variables
Dim wb As Workbook 'classeur Excel dans lequel on importe les données
Dim ws As Worksheet 'onglet Excel dans lequel on importe les données
Dim sNomFichier As String 'nom du fichier Word
Dim WApp As Object, WDoc As Object, WSel As Object
Dim i As Integer
' -- Initialisation des variables
Set wb = ThisWorkbook
Set ws = wb.Sheets(1) 'on sauvegarde dans la 1re feuille
sNomFichier = Application.GetOpenFilename("Fichiers word (*.docx),*.docx") 'pour choisir un fichier word
If sNomFichier = False Then Exit Sub
Set WApp = CreateObject("Word.Application") 'pour créer un objet Word
WApp.Visible = True 'afficher Word pendant l'exécution
i = ws.Range("A" & Rows.Count).End(xlUp).Row + 1 '1re ligne où on va écrire les données dans le fichier Excel
Application.ScreenUpdating = False
' -- Boucle sur les fichiers
Set WDoc = WApp.Documents.Open(sNomFichier) 'ouvre le document Word
Application.StatusBar = "Écriture ligne " & i 'message dans Excel pour voir la progression
' Numéro Payzen
WApp.Selection.Homekey unit:=6 'Retourne au début du fichier Word
WApp.Selection.Find.ClearFormatting 'on "vide la mémoire" de la fonction Recherche
WApp.Selection.Find.Execute "PF925037", Forward:=True 'On recherche le texte " "
Set WSel = WApp.Selection 'sélection du texte trouvé
ws.Cells(i, 1) = Trim(WSel)
' Montant Payzen (par la fonction FIND)
WApp.Selection.Homekey unit:=6 'Retourne au début du fichier Word
WApp.Selection.Find.ClearFormatting 'on "vide la mémoire" de la fonction Recherche
WApp.Selection.Find.Execute "PF925037", Forward:=True 'On recherche le texte " "
WApp.Selection.MoveRight unit:=3, Count:=2, Extend:=2 'On se déplace de 3 mots
Set WSel = WApp.Selection 'sélection du texte trouvé
ws.Cells(i, 2) = Trim(Split(WSel, "XPF")(1)) 'Le montant est la chaîne de caractères séparés par XPF
WDoc.Close False 'fermer le document Word sans enregistrer
SortieNormale:
Application.ScreenUpdating = True
WApp.Quit 'Fermer l'instance de Word
Application.StatusBar = False 'Remise à zéro de la barre d'état
MsgBox "TERMINE"
End Sub |
Partager