Bonjour,
Comment faire pour convertir un export pdf en excel ou csv svp ?
en vba ou autre car j 'ai besoin d'exploiter les données sur excel.
Merci de votre aide
Version imprimable
Bonjour,
Comment faire pour convertir un export pdf en excel ou csv svp ?
en vba ou autre car j 'ai besoin d'exploiter les données sur excel.
Merci de votre aide
Bonsoir,
Il sort d'ou ce pdf ? Le format pdf c'est plutôt pour transmettre une mise en forme et pas des données exploitables dans un autre logiciel....
Salut, si cela peut t'aider voir ici et essayer via les Post# 2 et 3 .
Sinon via Acrobat Reader sauver en texte : Menu Fichier/Enregistrer sous/Texte
L'idée est simple j'exporte d'une appli web un pdf de + 90 pages, à partir de ce pdf je voudrais exploiter les données issues de ce dernier. Pour cela le transfert vers csv me sera indispensable alors j'essai de mettre une macro adapter une fois le pdf enregitré dans un fichier tempo --> il passe en csv autom.
voici un petit éclairage sur les indications, merci de votre aide
merci pour l'éclairage, j'ai testé la méthode ci-dessous :
mais le code bloque à la lignemerci pour votre aide.Code:Set oDO = New MSForms.DataObject
Code:
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 Option Explicit Sub SelectionFichier2() Dim FD As FileDialog Set FD = Application.FileDialog(msoFileDialogFilePicker) With FD .InitialFileName = ThisWorkbook.Path .AllowMultiSelect = False .Filters.Clear .Filters.Add "PDF", "*.pdf", 1 .ButtonName = "Ouvrir fichier" .Title = "Sélectionner un fichier PDF" End With If FD.Show = True Then Lire2 FD.SelectedItems(1) Set FD = Nothing End Sub ' Cocher Reference : Microsoft Forms 2.0 Object Library Sub Lire2(sFichier As String) Dim PDDoc As Object Dim PDPage As Object Dim PDText As Object Dim TextSelt As Object Dim Rep As Long Dim i As Long, j As Long Dim wkPage As Long Dim wkCnt As Long Dim wkText As String Dim FName As String Dim oDO As Object FName = sFichier Set PDDoc = CreateObject("AcroExch.PDDoc") Rep = PDDoc.Open(FName) Set TextSelt = CreateObject("AcroExCh.HiliteList") TextSelt.Add 0, 32767 wkPage = PDDoc.GetNumPages() For i = 0 To wkPage - 1 Set PDPage = PDDoc.AcquirePage(i) Set PDText = PDPage.CreatePageHilite(TextSelt) wkCnt = PDText.GetNumText() For j = 0 To wkCnt - 1 wkText = wkText & PDText.GetText(j) Next j Next i PDDoc.Close Set PDPage = Nothing Set PDText = Nothing Set oDO = New MSForms.DataObject oDO.Clear oDO.SetText wkText oDO.PutInClipboard Application.ScreenUpdating = False ShTest.Cells.Clear ShTest.Range("A1").PasteSpecial Set oDO = Nothing Set TextSelt = Nothing Set PDDoc = Nothing ShTest.Range("H1").Select Application.ScreenUpdating = True End Sub
Salut, c'est pourtant écrit en toutes lettres ...
ou parcourir jusqu'à c:\windows\system32\FM20.DLLCitation:
' Cocher Reference : Microsoft Forms 2.0 Object Library
J'ai excel 2007, et ne trouve pas dans la librairie microsoft Forms 2.0 Object,
j'ai microsoft office 12 library etc... comment se fait il que je ne dispose pas de cet dernière ?
Salut, tu l'as surement, une autre solution : crée une UserForm puis supprime la, cela devrait suffire à référencer Microsoft Forms ?
Voici plus d info sur le sujet, à la base j'ai un fichier pdf de 200 pages,
mon but et de le mettre en .csv
Re, faire une recherche via Gog sur les convertisseurs de fichiers pdf en ligne
Je vais re-créer un UserForm puis supprimeret voir si je trouve l'option évoqué plus haut pour faire fonctionner le code de kiki
Code:
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 Option Explicit Sub SelectionFichier2() Dim FD As FileDialog Set FD = Application.FileDialog(msoFileDialogFilePicker) With FD .InitialFileName = ThisWorkbook.Path .AllowMultiSelect = False .Filters.Clear .Filters.Add "PDF", "*.pdf", 1 .ButtonName = "Ouvrir fichier" .Title = "Sélectionner un fichier PDF" End With If FD.Show = True Then Lire2 FD.SelectedItems(1) Set FD = Nothing End Sub ' Cocher Reference : Microsoft Forms 2.0 Object Library Sub Lire2(sFichier As String) Dim PDDoc As Object Dim PDPage As Object Dim PDText As Object Dim TextSelt As Object Dim Rep As Long Dim i As Long, j As Long Dim wkPage As Long Dim wkCnt As Long Dim wkText As String Dim FName As String Dim oDO As Object FName = sFichier Set PDDoc = CreateObject("AcroExch.PDDoc") Rep = PDDoc.Open(FName) Set TextSelt = CreateObject("AcroExCh.HiliteList") TextSelt.Add 0, 32767 wkPage = PDDoc.GetNumPages() For i = 0 To wkPage - 1 Set PDPage = PDDoc.AcquirePage(i) Set PDText = PDPage.CreatePageHilite(TextSelt) wkCnt = PDText.GetNumText() For j = 0 To wkCnt - 1 wkText = wkText & PDText.GetText(j) Next j Next i PDDoc.Close Set PDPage = Nothing Set PDText = Nothing Set oDO = New MSForms.DataObject oDO.Clear oDO.SetText wkText oDO.PutInClipboard Application.ScreenUpdating = False ShTest.Cells.Clear ShTest.Range("A1").PasteSpecial Set oDO = Nothing Set TextSelt = Nothing Set PDDoc = Nothing ShTest.Range("H1").Select Application.ScreenUpdating = True End Sub
COOL je viens de tester la librairie apparaît mais maintenant il y a une erreur
voici le message : erreur de compilation variable non définie ??
Code:ShTest.Cells.Clear
Bonsoir,
C'est que vraisemblablement comme le message d'erreur l'indique, tu n'as pas déclaré la variable ShTest ni évidemment attribuer à cette variable la référence à l'objet.
Exemple
Code:
1
2 Dim shtTest As Worksheet Set shtTest = Worksheets("LeNomDeLaFeuille")
Re, c'est le CodeName
J'ai déclaré la variable ci-dessous mais cela ne fonctionne tjrs pas :
On dit que le code fonctionne mais j'ai fait simple rien ne fonctionne car le code bloqueCode:
1
2 Dim shtTest As Worksheet Set shtTest = Worksheets("Feuil1")
Je ne comprends d'ou vient l'erreur 8O merci pour votre éguillage les PROCode:ShTest.Cells.Clear
Code:
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
74
75 Option Explicit Sub SelectionFichier2() Dim FD As FileDialog Set FD = Application.FileDialog(msoFileDialogFilePicker) With FD .InitialFileName = ThisWorkbook.Path .AllowMultiSelect = False .Filters.Clear .Filters.Add "PDF", "*.pdf", 1 .ButtonName = "Ouvrir fichier" .Title = "Sélectionner un fichier PDF" End With If FD.Show = True Then Lire2 FD.SelectedItems(1) Set FD = Nothing End Sub ' Cocher Reference : Microsoft Forms 2.0 Object Library Sub Lire2(sFichier As String) Dim PDDoc As Object Dim PDPage As Object Dim PDText As Object Dim TextSelt As Object Dim Rep As Long Dim i As Long, j As Long Dim wkPage As Long Dim wkCnt As Long Dim wkText As String Dim FName As String Dim oDO As Object Dim shtTest As Worksheet FName = sFichier Set PDDoc = CreateObject("AcroExch.PDDoc") Rep = PDDoc.Open(FName) Set TextSelt = CreateObject("AcroExCh.HiliteList") TextSelt.Add 0, 32767 wkPage = PDDoc.GetNumPages() For i = 0 To wkPage - 1 Set PDPage = PDDoc.AcquirePage(i) Set PDText = PDPage.CreatePageHilite(TextSelt) wkCnt = PDText.GetNumText() For j = 0 To wkCnt - 1 wkText = wkText & PDText.GetText(j) 'wkText = wkText & vbTab & PDText.GetText(j) Next j Next i PDDoc.Close Set PDPage = Nothing Set PDText = Nothing Set oDO = New MSForms.DataObject oDO.Clear oDO.SetText wkText oDO.PutInClipboard Application.ScreenUpdating = False Set shtTest = Worksheets("Feuil1") ShTest.Cells.Clear ShTest.Range("A1").PasteSpecial Set oDO = Nothing Set TextSelt = Nothing Set PDDoc = Nothing ShTest.Range("Z1").Select Application.ScreenUpdating = True End Sub
bonsoir,
vérifie le nombre de t dans tes nom de variables...
Salut, je me répète mais il s'agit du CodeName de la feuille recevant les données.
Bonjour,
D'abord, la variable objet utilisée par le programme n'est pas contrairement à ce que j'avais écrit shtTest, mais shTest mais comme te l'a répété par deux fois Philippe, shTest est un CodeName et il te proposait de lire un post.
Cependant, même si le programme utilise un CodeName, la déclaration de la variable objet même avec le même nom, est prioritaire.
Si Feuille1 a pour CodeName shTest on peut malgré tout déclarer une variable objet du même nom.
Mais si l'on écrit ceciCode:
1
2
3
4
5 Sub Test() Dim shTest As Worksheet Set shTest = Worksheets("Feuil1") shTest.Cells.Clear End Sub
C'est sur la feuille nommée Feuil2 que l'instruction va s'appliquer malgré que le CodeName de la feuille nommée Feuil1 est shTestCode:
1
2
3
4
5 Sub Test() Dim shTest As Worksheet Set shTest = Worksheets("Feuil2") shTest.Cells.Clear End Sub
Salut, l'intérêt du CodeName est de ne pas avoir à retoucher au code VBA si l'utilisateur change le nom d'onglet des feuilles, ajoute une feuille ou en déplace. Le CodeName est déjà le nom d'objet de la feuille et donc ce genre de manip même si faisable est plutôt inappropriée et fait perdre au CodeName ses intérêts.
Bonjour Philippe,
J'ai bien compris l'intérêt du CodeName l'utilisant moi-même.
Le but de mon intervention sur ce sujet était surtout d'abord de signaler qu'il y avait une mauvaise orthographe dans le nom de la variable et aussi d'ajouter pour faire avancer les connaissances que malgré le fait qu'une feuille avait un CodeName d'un nom X, ce même nom pouvait être attribué à une variable objet et que celui-ci était prioritaire sur le CodeName. J'ai découvert cela il y a quelques mois et je trouvais cela intéressant de le signaler.
Mais je te suis à 100% sur le fait qu'il est plus intéressant d'utiliser un CodeName pour une feuille et qu'il est parfaitement superfétatoire dans ce cas de déclarer une variable objet pour cette feuille.