Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 05/02/2010, 12h29   #1
Invité régulier
 
Date d'inscription: avril 2009
Messages: 14
Par défaut Ouvrir fichier PDF

Bonjour à tous !!

Je souhaite créer une macro qui m'ouvre un fichier PDF puis qui fait une sélection générale (CTRL-A) une copie (CTRL-C) puis qui va chercher mon classeur excel et coller la sélection dans ce classeur.

J'ai fait le bout de code suivant. Mais rien ne se passe. C'est comme si la sélection ne se faisait pas.

Code :
Sub Macro1()
 
Dim MaLigne As Variant
 
retshell = Shell("C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe C:\Users\avial\Desktop\test.pdf")
 
'Attendre 2 secondes
Application.Wait (Now + TimeValue("0:00:02"))
 
AppActivate (retshell)                                 'Donner le focus à Acrobat Reader
SendKeys ("^{a}")                                             'Sélectionner tout avec CTRL-A
AppActivate (retshell)
SendKeys ("^{c}")                                             'Copier avec CTRL-C
 
'Attendre 2 secondes
Application.Wait (Now + TimeValue("0:00:02"))
 
'AppActivate "Microsoft Excel" 'Redonner le focus à Excel
 
retshell2 = Shell("C:\Program Files\Microsoft Office\OFFICE11\excel.exe C:\Users\avial\Desktop\TOTO.xls")
 
 
AppActivate (retshell2)
Sheets("Feuil1").Select
 
MaLigne = Range("A65536").End(xlUp).Address
MaLigne = Range(MaLigne).Row
Sheets("Feuil1").Range("A" & MaLigne + 1).Select
SendKeys ("^(v)")
'ActiveSheet.Paste
 
 
End Sub
 
J'espère que l'un d'entre vous va pouvoir m'aider.

Merci
arkaramasof est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 05/02/2010, 17h15   #2
Rédacteur/Modérateur
 
Avatar de jpcheck
 
Date d'inscription: juillet 2007
Localisation: London
Âge: 26
Messages: 5 332
Envoyer un message via MSN à jpcheck
Par défaut

salut,
dans ta ligne de shell, il y a une espace dans le path du repertoire Adobe. Pour pallier a cette erreur, il faut encadrer le path par des ""
essaie avec
Code :
retshell = Shell("""C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe""" &  """C:\Users\avial\Desktop\test.pdf""")
__________________
Pas de question technique par MP, je ne réponds pas

Mon perso ? Une vraie brute

Tutos Access, Tâches planifiées et Batch,Tables de Paramètres sous Access, Excel et Batch, Tâches planifiées et Access
jpcheck est actuellement connecté   Envoyer un message privé Réponse avec citation
Vieux 05/02/2010, 18h17   #3
Invité régulier
 
Date d'inscription: avril 2009
Messages: 14
Par défaut

J'ai fait le test et je pense que ce n'est pas la raison du problème car je n'arrive à présent plus à ouvrir mon fichier "test.pdf" alors que précédemment cela fonctionnait avant. Je pense que le problème se trouve au niveau de la sélection (CTRL-A) et (CTRL-C) car lorsque j'arrête l'exécution du programme je n'ai pas de sélection active.
arkaramasof est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 06/02/2010, 13h18   #4
Invité régulier
 
Date d'inscription: avril 2009
Messages: 14
Par défaut

J'ai réussi à faire mon copier coller mais le problème est que je n'arrive pas à ouvrir mes différents fichiers en boucle. Le programme marche pour le premier fichier mais pas pour le second.
Il me met une erreur au niveau de la ligne AppActivate (retshell).
Peut etre cela est du au fait que le programme AcroRd32 tourne en fond dans le gestionnaire de tâches. Peut etre faudrait-il le décharger mais je ne sais pas comment faire.
Je joins mon code pour illustrer mon cas ...

Code :
Sub Macro1()
 
Dim MaLigne As Variant
Dim retshell As Integer
 
For i = 1 To 22
 
retshell = Shell("C:\Program Files\Adobe\Reader 9.0\Reader\AcroRd32.exe C:\Users\avial\Desktop\ECARTS PDF\test (" & i & ").pdf", vbNormalFocus)
 
Application.Wait (Now + TimeValue("0:00:02"))
 
AppActivate (retshell)
SendKeys ("^{a}")
SendKeys ("^{c}")
 
Application.Wait (Now + TimeValue("0:00:02"))
 
retshell2 = Shell("C:\Program Files\Microsoft Office\OFFICE11\excel.exe C:\Users\avial\Desktop\TOTO.xls", vbNormalFocus)
 
AppActivate (retshell2)
 
Sheets("Feuil1").Select
 
MaLigne = Range("A65536").End(xlUp).Address
MaLigne = Range(MaLigne).Row
Sheets("Feuil1").Range("A" & MaLigne + 1).Select
SendKeys ("^{v}")
 
SendKeys ("^{s}")
SendKeys ("%{F4}")
 
AppActivate (retshell)
SendKeys ("%{F4}")
 
 
'Workbooks("PDF2XLS.xls").Activate
 
Next
 
End Sub
Merci de votre aide
arkaramasof est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 07/02/2010, 12h56   #5
Membre éprouvé
 
Date d'inscription: décembre 2006
Messages: 444
Envoyer un message via Skype™ à ESVBA
Par défaut

bonjour Arkamarasof, jpcheck,

AppActivate avec le nom du titre de la fenêtre : pas l'instruction de lancement !

La chaine est du genre :
Code :
C:\Users\avial\Desktop\ECARTS PDF\test (" & i & ").pdf
De plus, Acrobat Reader ajoute au titre un truc du genre " - Adobe Reader" au titre de la fenêtre.

A essayer.

ESVBA
ESVBA est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 24/02/2010, 09h24   #6
Candidat au titre de Membre du Club
 
Date d'inscription: janvier 2006
Localisation: France 87
Messages: 21
Par défaut

Bonjour tout le monde,

cette solution de code vba pourrait résoudre le problème que j'ai mentionné dans une autre discussion : http://www.developpez.net/forums/d88...l/#post5013914

Citation:
Bonjour,

il m'a été transmis un formulaire à remplir en format PDF. Ce formulaire contient des champs texte, des listes déroulantes et des caches à cocher.

J'ai du remplir une centaine de fiches identiques (identique dans leur forme et non par leur données).

Aujourd'hui, j'aurais besoin de regrouper les données de l'ensemble des fiches dans un tableau excel.

Au lieu de devoir ouvrir chaque fiche et de taper les données sur Excel à la mimine, est il possible via VBA d'extraire les données des fichiers PDF pour les mettre dans un tableau excel unique, contenant sous forme de colonne l'ensemble des champs du fichier PDF ?
Pour précision, j'ai utiliser le code de arkaramasof du 06/02/2010 à 13h18 sur lequel j'ai bien-sûr modifier les chemins de répertoire pour les fichiers pdf et xls.

Mais deux problèmes se posent :

1) au lancement de la macro, Acrobat s'ouvre avec le premier fichier "test (1).pdf" mais ensuite j'ai le message "Erreur d'exécution '5' : argument ou appel de procédure incorrect". Et quand je clique sur le bouton "Débogage" j'ai le premier "AppActivate (retshell)" du code qui est en surbrillance.

2) Même manuellement le CTRL+A (sélectionner tout) puis CTRL+C (copier) ne copie pas le contenu des champs de mes fichiers PDF. Il ne copie que le nom des champs. En effet, lorsque je retourne sur Excel et que je fais CTRL+V (coller), cela ne colle que le nom des champs l'un en dessus de l'autre (une ligne par champs) dans une même colonne.

Auriez vous une idée de ce que je pourrais faire SVP ?
Jerome_Hej est déconnecté   Envoyer un message privé Réponse avec citation
NEWS EXCELF.A.Q EXCELTUTORIELS EXCELSOURCES EXCELOUTILS EXCELLIVRES EXCELOFFICE 2010

Réponse Proposer ce sujet en actualité

Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel



Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non



Fuseau horaire GMT +1. Il est actuellement 19h50.


Vos questions techniques : forum d'entraide Excel - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Hébergement - Participez - Copyright © 2000-2010 www.developpez.com - Legal informations.