Transformer une pile de PDF en tableau Excel exploitable
Chaque mois, un service comptable reçoit des centaines de factures fournisseurs en PDF. Les saisir manuellement prend 5 minutes chacune, soit 8 heures pour 100 factures. Excel combiné à Power Query ou VBA peut automatiser l’extraction, avec un taux de réussite de 85-95 pour cent sur des PDF bien structurés.
Deux approches
Power Query : natif pour PDF texte, sans code. Limité aux PDF dont le texte est sélectionnable. VBA + API externe : pour PDF scannés (OCR nécessaire), via Tesseract local ou API cloud comme Claude Vision ou AWS Textract.
Méthode 1 : Power Query pour PDF texte
Données > Obtenir des données > À partir d’un fichier > À partir d’un PDF. Excel détecte chaque tableau et chaque page. Sélectionnez les tableaux pertinents. Appliquez les transformations habituelles Power Query : suppression de lignes parasites, renommage colonnes, typage.
Méthode 2 : dossier entier de PDF
Données > À partir d’un dossier, ciblez le dossier contenant les PDF. Excel liste les fichiers, vous cliquez Combiner et Transformer. Résultat : une table consolidée de toutes les factures.
VBA pour PDF non structurés
Sub ExtrairePDF()
Dim chemin As String, fichier As String
chemin = "C:\Factures\"
fichier = Dir(chemin & "*.pdf")
Do While fichier <> ""
Dim texte As String
texte = LireTextePDF(chemin & fichier)
' Extraire avec RegEx
Dim montant As String, numero As String
montant = ExtraireRegex(texte, "Total TTC[\s:]+([0-9\s]+,\d{2})")
numero = ExtraireRegex(texte, "Facture N[°o]\s*(\w+)")
' Enregistrer dans la feuille
EnregistrerLigne fichier, numero, montant
fichier = Dir
Loop
End Sub
La fonction LireTextePDF utilise la librairie Adobe Acrobat SDK ou, plus simple, l’outil pdftotext.exe de Poppler appelé via Shell.
Fonction RegEx réutilisable
Function ExtraireRegex(texte As String, pattern As String) As String
Dim regex As Object
Set regex = CreateObject("VBScript.RegExp")
regex.Pattern = pattern
regex.Global = False
If regex.Test(texte) Then
ExtraireRegex = regex.Execute(texte)(0).SubMatches(0)
Else
ExtraireRegex = ""
End If
End Function
Méthode 3 : OCR via API Claude Vision
Pour les factures scannées de fournisseurs informels (très courant en Afrique), une IA multimodale lit directement le PDF :
Sub ExtraireViaClaude()
Dim http As Object
Set http = CreateObject("MSXML2.XMLHTTP")
http.Open "POST", "https://api.anthropic.com/v1/messages", False
http.setRequestHeader "x-api-key", "VOTRE_CLE"
http.setRequestHeader "content-type", "application/json"
http.setRequestHeader "anthropic-version", "2023-06-01"
Dim body As String
body = "{""model"":""claude-sonnet-4-6"",""max_tokens"":1024,""messages"":[{""role"":""user"",""content"":[{""type"":""document"",""source"":{""type"":""base64"",""media_type"":""application/pdf"",""data"":""" & Base64PDF & """}},{""type"":""text"",""text"":""Extraire : fournisseur, numéro facture, date, montant HT, TVA, montant TTC. Format JSON.""}]}]}"
http.send body
' Parser la réponse
End Sub
Validation et contrôle
Toujours valider les extractions : somme des lignes = montant total, TVA = 18 pour cent du HT (au Sénégal), date cohérente. En cas d’anomalie, marquer pour révision manuelle.
Intégration comptable
Export final vers Sage, Ciel ou Odoo via CSV normalisé. Les comptes sont pré-mappés selon le fournisseur (plan comptable SYSCOHADA). Un comptable valide les anomalies seulement, gain de 80 pour cent sur le temps de saisie.
Conclusion
L’extraction automatique transforme la comptabilité fournisseurs d’une corvée répétitive en processus de contrôle ciblé. Investissement initial : 2 jours. Économies : quasiment continues. Approche hybride Power Query + VBA + IA = la formule gagnante en 2026.