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.
Bonjour,
Merci pour l'éclairage je comprends mieux cependant là je suis un peu perdu car maintenant le code bloque ici :
Pouvez-vous m'aider à le faire fonctionner svp, s'il fonctionne car sa marche pour ouvrir la pièce jointe en pdf OK, 2-/ mais après il bloque je ne comprends pas pourquoi ??Code:Set PDDoc = CreateObject("AcroExch.PDDoc")
Voici ma pièce jointe et le code qq peut-il m'aider à l'adapter à mon cas.
Je souhaite ouvrir la pièce jointe récupérer les informations simplement sous fichier excel.
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 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 shTest 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 shTest = 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
Re, le code suppose que tu as installé Adobe Acrobat Pro ( pas Acrobat Reader )
Bonjour je vais télécharger la version gratuite Adobe Acrobat Pro.
Mais par la suite cette macro devrait être utilisé par plusieurs utilisateurs dans mon école. Y-a-t-il une possibilité de faire cela avec adobe normale ou en gratuit car on fait que déplacer le problème.
Le but est de faire cela simplement en VBA transfert pdf vers excel. Merci les pro pour votre solution car nous sommes bcps à chercher une solution simple en VBA. pdf to excel en VBA.
Re, aucune garantie car la version d'essai doit-être limitée dans le temps, y a-t-il une version dite "étudiant" à un prix raisonnable ?
Je reste persuadé que dans ton cas la meilleure solution est de faire une recherche via Gog sur les convertisseurs de fichiers pdf en ligne. De plus tu n'obtiendras sans doute pas mieux que le fait d'enregistrer en texte avec le Reader. Voir aussi ABBYY ?
Un vrai inconvénient passer par google ect... pour il y a pas de solution simple et gratuite d'après ce que j'ai compris en VBA (pas facile et pas très clair pour les simples utilisateurs qui voudrait passer par VBA ces solutions nous paraissent pas exploitable).
Faisons plus simple alors si vba ne le permet pas gratuitement (sans passer par adobe PRO ect... un labyrinthe
Alors :
Autre méthode Et dans le cas ou je fais à la méthode simple fichier / enregistrer au format texte / --> le format passe en format .txt et donc comment remettre dans l 'ordre les données car tout et à la lignes pour les passer en excel.
Comment faire pour remettre sous forme de fichier excel ou . csv?
merci de votre aide on va y arriver merci les pro.
Re, voir Manipulation des fichiers en VBA, la FAQ et l'enregistreur de macros, sans oublier via une recherche
Alors comment faire pour Transposer les données d'un format .txt qui sont référencées en ligne vers excel ?
ci-dessous ma macro : excel à excel, mon besoinCode:.txt vers excel
Code:
1
2
3
4
5
6
7
8
9
10
11
12 Sub Transposer() ' ' Transposer Macro Application.ScreenUpdating = False Sheets(1).Range(Cells(6, 3), Cells(6, 3).End(xlDown)).Copy Sheets("Feuil2").Range("C2").PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ False, Transpose:=True Application.CutCopyMode = False Application.ScreenUpdating = True End Sub