Extraire contenu texte d'un pdf et l'inclure dans un tableau Excel/macro

Le
joselito
Bonjour,
J'exploite un fichier de plusieur milliers de lignes représentant chacunes une fiche client.
ce fichier contient en colonne "A" le numéro client, en colonne "AP" le nom du document pdf fourni par le client et en colonne "BP" la celulle recevant le contenu texte du pdf.

Qui pourrait m'aider à réaliser une macro, selon le processus suivant ?
- Créer une sélection sur la colonne "BP" pour ne sélectionner que les fiches non renseignées. (celulles vides)
- Puis une sous-sélection sur la colonne "AP" pour ne sélectionner que les celulles contenant une référence de fichier pdf. (celulles non-vides)
- Récupérer le contenu texte du pdf et l'inclure dans la celulle "BP"
PS: Le fichier Excel et les pdf, sont dans un même dossier "GestionClientFepo"
PSS: Chaque jour le fichier de base Excel s'enrichi de nouvelles lignes clients

Une seconde Macro serait la bienvenue (Mise à jour colonne "AP")
- Faire une sélection des celulles vides
- Relever le numéro client en colonne "A" (ex du format: 1213673251)
PS: le nom du fichier pdf associé sera du format: "DC_1213673251_999999" (les 9 représentent un numéro de série incrémenté automatiquement par le site/// l'important est le numéro client compris entre les deux "_")
- Scruter le dossier GestionClientFepo" et renseigner la colonne "AP" des nouveaux pdf reçus.

Merci par avance pour votre contribution
J'ai bien trouvé dans ce forum une macro qui répond à la premiere action, extraire des données textes d'un pdf, mais je ne sais pas l'adapter à mon besoin.
Si cela peut vous être utile, je vous joint la macro ci-dessous.

••••••••••••••••••••••••••••••••••
"Tu peux automatiser l'ouverture du fichier PDF ainsi que le Copier-Coller de la façon suivante:"

Private Declare Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Sub Extraire_Texte_de_Pdf()

URL = "C:mes documentsGazel_no22.pdf" 'Adapter à votre fichier
'Ouvrir le fichier pdf avec le programme approprié
ShellExecute 0&, vbNullString, URL, vbNullString, _
vbNullString, vbNormalFocus

'Attendre 2 secondes
Application.Wait (Now + TimeValue("0:00:02"))

NomDeLafenetre = "Acrobat Reader"
AppActivate NomDeLafenetre 'Donner le focus à Acrobat Reader
SendKeys "^{a}" 'Sélectionner tout avec CTRL-A
AppActivate NomDeLafenetre
SendKeys "^{c}" 'Copier avec CTRL-C

'Attendre 2 secondes
Application.Wait (Now + TimeValue("0:00:02"))

AppActivate "Microsoft Excel" 'Redonner le focus à Excel

Sheets("Feuil1").Select
Sheets("Feuil1").Range("A1").Select
ActiveSheet.Paste

End Sub
••••••••••••••••••••••••••••••••

Au plaisir de vour lire.
José
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
FFO
Le #22532801
Salut à toi

Pour la première macro je te propose quelque chose comme ceci
Ta feuille doit être active
Private Declare Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As
String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Sub Extraire_Texte_de_Pdf()
i = 2
Do While i < Range("BP65535").End XlUp.Row+1
If Range("BP" & i)="" And Range("AP" & i)<>"" Then
URL = "C:mes documents" & Range("AP" & i) 'Adapter à votre fichier
'Ouvrir le fichier pdf avec le programme approprié
ShellExecute 0&, vbNullString, URL, vbNullString, _
vbNullString, vbNormalFocus
'Attendre 2 secondes
Application.Wait (Now + TimeValue("0:00:02"))
NomDeLafenetre = "Acrobat Reader"
AppActivate NomDeLafenetre 'Donner le focus à Acrobat Reader
SendKeys "^{a}" 'Sélectionner tout avec CTRL-A
AppActivate NomDeLafenetre
SendKeys "^{c}" 'Copier avec CTRL-C
'Attendre 2 secondes
Application.Wait (Now + TimeValue("0:00:02"))
AppActivate "Microsoft Excel" 'Redonner le focus à Excel
Range("BP" & i).Activate
ActiveSheet.Paste
End If
i=i+1
Loop
End Sub

L'extension .pdf doit être compris dans le nom du fichier de la
cellule AP sinon il faut modifier cette ligne ainsi :

URL = "C:mes documents" & Range("AP" & i) & ".pdf"

Maintenant je crains que pour des milliers de lignes compte tenu de la
procédure de recopie que tu as récupérée avec 2 attentes succéssi ves
et la boucle que je te propose le traitement soit trés long

Fais des essais que sur quelques lignes avant de traiter tout ton
fichier


Pour ta 2° Macro je te propose ceci :

Sub Extraire_Nom_Fichier_Pdf()
i = 2
Do While i < Range("AP65535").End XlUp.Row+1
If Range("AP" & i)="" Then
MyPath = ActiveWorkbook.Path
MyName = Dir(MyPath, vbDirectory)
Do While MyName <> ""
If MyName Like "*_" & Range("A" & i) & "_*" Then
Range("AP" & i)= MyName
End If
MyName = Dir
Loop
End If
i=i+1
Loop
End Sub

Je n'ai pas essayé mais je pense que celà devrait fonctionner

Dis moi !!!!!
FFO
Le #22532901
Rebonjour à toi
Une petite correction
Pour la ligne URL mets :

URL = ActiveWorkBook.Path & "" & Range("AP" & i)
ou
URL = ActiveWorkBook.Path & "" & Range("AP" & i) & ".pdf"

Celà devrait être mieux

Tiens moi informé
joselito
Le #22539411
joselito a écrit le 02/09/2010 à 07h14 :
Bonjour,
J'exploite un fichier de plusieur milliers de lignes représentant
chacunes une fiche client.
ce fichier contient en colonne "A" le numéro client, en
colonne "AP" le nom du document pdf fourni par le client et en
colonne "BP" la celulle recevant le contenu texte du pdf.

Qui pourrait m'aider à réaliser une macro, selon le processus
suivant ?
- Créer une sélection sur la colonne "BP" pour ne
sélectionner que les fiches non renseignées. (celulles vides)
- Puis une sous-sélection sur la colonne "AP" pour ne
sélectionner que les celulles contenant une référence de
fichier pdf. (celulles non-vides)
- Récupérer le contenu texte du pdf et l'inclure dans la celulle
"BP"
PS: Le fichier Excel et les pdf, sont dans un même dossier
"GestionClientFepo"
PSS: Chaque jour le fichier de base Excel s'enrichi de nouvelles lignes
clients

Une seconde Macro serait la bienvenue (Mise à jour colonne
"AP")
- Faire une sélection des celulles vides
- Relever le numéro client en colonne "A" (ex du format:
1213673251)
PS: le nom du fichier pdf associé sera du format:
"DC_1213673251_999999" (les 9 représentent un numéro de
série incrémenté automatiquement par le site///
l'important est le numéro client compris entre les deux "_")
- Scruter le dossier GestionClientFepo" et renseigner la colonne
"AP" des nouveaux pdf reçus.

Merci par avance pour votre contribution...
J'ai bien trouvé dans ce forum une macro qui répond à la
premiere action, extraire des données textes d'un pdf, mais je ne sais
pas l'adapter à mon besoin.
Si cela peut vous être utile, je vous joint la macro ci-dessous.

••••••••••••••••••••••••••••••••••
"Tu peux automatiser l'ouverture du fichier PDF ainsi que le Copier-Coller
de la façon suivante:"

Private Declare Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As
String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Sub Extraire_Texte_de_Pdf()

URL = "C:mes documentsGazel_no22.pdf" 'Adapter à votre
fichier
'Ouvrir le fichier pdf avec le programme approprié
ShellExecute 0&, vbNullString, URL, vbNullString, _
vbNullString, vbNormalFocus

'Attendre 2 secondes
Application.Wait (Now + TimeValue("0:00:02"))

NomDeLafenetre = "Acrobat Reader"
AppActivate NomDeLafenetre 'Donner le focus à Acrobat Reader
SendKeys "^{a}" 'Sélectionner tout avec CTRL-A
AppActivate NomDeLafenetre
SendKeys "^{c}" 'Copier avec CTRL-C

'Attendre 2 secondes
Application.Wait (Now + TimeValue("0:00:02"))

AppActivate "Microsoft Excel" 'Redonner le focus à Excel

Sheets("Feuil1").Select
Sheets("Feuil1").Range("A1").Select
ActiveSheet.Paste

End Sub
••••••••••••••••••••••••••••••••

Au plaisir de vour lire.
José


Merci pour votre aide/
(je viens juste de rentrer de déplacement et j'ai testé les macros)

-la seconde macro donne un code d'erreur et surligne en rouge la ligne "Do While i If Range("AP" & i)="" Then"

Je vais tester maintenant la première macro
joselito
Le #22539461
FFO a écrit le 02/09/2010 à 09h46 :
Salut à toi

Pour la première macro je te propose quelque chose comme ceci
Ta feuille doit être active
Private Declare Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As
String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Sub Extraire_Texte_de_Pdf()
i = 2
Do While i < Range("BP65535").End XlUp.Row+1
If Range("BP" & i)="" And Range("AP" &
i)<>"" Then
URL = "C:mes documents" & Range("AP" & i)
'Adapter à votre fichier
'Ouvrir le fichier pdf avec le programme approprié
ShellExecute 0&, vbNullString, URL, vbNullString, _
vbNullString, vbNormalFocus
'Attendre 2 secondes
Application.Wait (Now + TimeValue("0:00:02"))
NomDeLafenetre = "Acrobat Reader"
AppActivate NomDeLafenetre 'Donner le focus à Acrobat Reader
SendKeys "^{a}" 'Sélectionner tout avec CTRL-A
AppActivate NomDeLafenetre
SendKeys "^{c}" 'Copier avec CTRL-C
'Attendre 2 secondes
Application.Wait (Now + TimeValue("0:00:02"))
AppActivate "Microsoft Excel" 'Redonner le focus à Excel
Range("BP" & i).Activate
ActiveSheet.Paste
End If
i=i+1
Loop
End Sub

L'extension .pdf doit être compris dans le nom du fichier de la
cellule AP sinon il faut modifier cette ligne ainsi :

URL = "C:mes documents" & Range("AP" & i) &
".pdf"

Maintenant je crains que pour des milliers de lignes compte tenu de la
procédure de recopie que tu as récupérée avec 2
attentes succéssi ves
et la boucle que je te propose le traitement soit trés long

Fais des essais que sur quelques lignes avant de traiter tout ton
fichier


Pour ta 2° Macro je te propose ceci :

Sub Extraire_Nom_Fichier_Pdf()
i = 2
Do While i < Range("AP65535").End XlUp.Row+1
If Range("AP" & i)="" Then
MyPath = ActiveWorkbook.Path
MyName = Dir(MyPath, vbDirectory)
Do While MyName <> ""
If MyName Like "*_" & Range("A" & i) &
"_*" Then
Range("AP" & i)= MyName
End If
MyName = Dir
Loop
End If
i=i+1
Loop
End Sub

Je n'ai pas essayé mais je pense que celà devrait fonctionner

Dis moi !!!!!


Re-Bonjour

Pour la première macro, j'ai aussi le même message d'erreur de syntaxe pour la ligne suivante:
"Do While i If Range("BP" & i)="" And Range("AP" & i)<>"" Then"

Merci pour votre aide.
José
joselito
Le #22539511
joselito a écrit le 02/09/2010 à 07h14 :
Bonjour,
J'exploite un fichier de plusieur milliers de lignes représentant
chacunes une fiche client.
ce fichier contient en colonne "A" le numéro client, en
colonne "AP" le nom du document pdf fourni par le client et en
colonne "BP" la celulle recevant le contenu texte du pdf.

Qui pourrait m'aider à réaliser une macro, selon le processus
suivant ?
- Créer une sélection sur la colonne "BP" pour ne
sélectionner que les fiches non renseignées. (celulles vides)
- Puis une sous-sélection sur la colonne "AP" pour ne
sélectionner que les celulles contenant une référence de
fichier pdf. (celulles non-vides)
- Récupérer le contenu texte du pdf et l'inclure dans la celulle
"BP"
PS: Le fichier Excel et les pdf, sont dans un même dossier
"GestionClientFepo"
PSS: Chaque jour le fichier de base Excel s'enrichi de nouvelles lignes
clients

Une seconde Macro serait la bienvenue (Mise à jour colonne
"AP")
- Faire une sélection des celulles vides
- Relever le numéro client en colonne "A" (ex du format:
1213673251)
PS: le nom du fichier pdf associé sera du format:
"DC_1213673251_999999" (les 9 représentent un numéro de
série incrémenté automatiquement par le site///
l'important est le numéro client compris entre les deux "_")
- Scruter le dossier GestionClientFepo" et renseigner la colonne
"AP" des nouveaux pdf reçus.

Merci par avance pour votre contribution...
J'ai bien trouvé dans ce forum une macro qui répond à la
premiere action, extraire des données textes d'un pdf, mais je ne sais
pas l'adapter à mon besoin.
Si cela peut vous être utile, je vous joint la macro ci-dessous.

••••••••••••••••••••••••••••••••••
"Tu peux automatiser l'ouverture du fichier PDF ainsi que le Copier-Coller
de la façon suivante:"

Private Declare Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As
String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Sub Extraire_Texte_de_Pdf()

URL = "C:mes documentsGazel_no22.pdf" 'Adapter à votre
fichier
'Ouvrir le fichier pdf avec le programme approprié
ShellExecute 0&, vbNullString, URL, vbNullString, _
vbNullString, vbNormalFocus

'Attendre 2 secondes
Application.Wait (Now + TimeValue("0:00:02"))

NomDeLafenetre = "Acrobat Reader"
AppActivate NomDeLafenetre 'Donner le focus à Acrobat Reader
SendKeys "^{a}" 'Sélectionner tout avec CTRL-A
AppActivate NomDeLafenetre
SendKeys "^{c}" 'Copier avec CTRL-C

'Attendre 2 secondes
Application.Wait (Now + TimeValue("0:00:02"))

AppActivate "Microsoft Excel" 'Redonner le focus à Excel

Sheets("Feuil1").Select
Sheets("Feuil1").Range("A1").Select
ActiveSheet.Paste

End Sub
••••••••••••••••••••••••••••••••

Au plaisir de vour lire.
José


Bonjour,

Pour la deuxième macro j'ai modifié le code et je n'ai plus le message d'erreur,
mais la macro ne réalise aucune action.

Merci pour votre aidé
José
joselito
Le #22539581
joselito a écrit le 02/09/2010 à 07h14 :
Bonjour,
J'exploite un fichier de plusieur milliers de lignes représentant
chacunes une fiche client.
ce fichier contient en colonne "A" le numéro client, en
colonne "AP" le nom du document pdf fourni par le client et en
colonne "BP" la celulle recevant le contenu texte du pdf.

Qui pourrait m'aider à réaliser une macro, selon le processus
suivant ?
- Créer une sélection sur la colonne "BP" pour ne
sélectionner que les fiches non renseignées. (celulles vides)
- Puis une sous-sélection sur la colonne "AP" pour ne
sélectionner que les celulles contenant une référence de
fichier pdf. (celulles non-vides)
- Récupérer le contenu texte du pdf et l'inclure dans la celulle
"BP"
PS: Le fichier Excel et les pdf, sont dans un même dossier
"GestionClientFepo"
PSS: Chaque jour le fichier de base Excel s'enrichi de nouvelles lignes
clients

Une seconde Macro serait la bienvenue (Mise à jour colonne
"AP")
- Faire une sélection des celulles vides
- Relever le numéro client en colonne "A" (ex du format:
1213673251)
PS: le nom du fichier pdf associé sera du format:
"DC_1213673251_999999" (les 9 représentent un numéro de
série incrémenté automatiquement par le site///
l'important est le numéro client compris entre les deux "_")
- Scruter le dossier GestionClientFepo" et renseigner la colonne
"AP" des nouveaux pdf reçus.

Merci par avance pour votre contribution...
J'ai bien trouvé dans ce forum une macro qui répond à la
premiere action, extraire des données textes d'un pdf, mais je ne sais
pas l'adapter à mon besoin.
Si cela peut vous être utile, je vous joint la macro ci-dessous.

••••••••••••••••••••••••••••••••••
"Tu peux automatiser l'ouverture du fichier PDF ainsi que le Copier-Coller
de la façon suivante:"

Private Declare Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As
String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Sub Extraire_Texte_de_Pdf()

URL = "C:mes documentsGazel_no22.pdf" 'Adapter à votre
fichier
'Ouvrir le fichier pdf avec le programme approprié
ShellExecute 0&, vbNullString, URL, vbNullString, _
vbNullString, vbNormalFocus

'Attendre 2 secondes
Application.Wait (Now + TimeValue("0:00:02"))

NomDeLafenetre = "Acrobat Reader"
AppActivate NomDeLafenetre 'Donner le focus à Acrobat Reader
SendKeys "^{a}" 'Sélectionner tout avec CTRL-A
AppActivate NomDeLafenetre
SendKeys "^{c}" 'Copier avec CTRL-C

'Attendre 2 secondes
Application.Wait (Now + TimeValue("0:00:02"))

AppActivate "Microsoft Excel" 'Redonner le focus à Excel

Sheets("Feuil1").Select
Sheets("Feuil1").Range("A1").Select
ActiveSheet.Paste

End Sub
••••••••••••••••••••••••••••••••

Au plaisir de vour lire.
José


Voici le code modifié:
Sub APextraireNomPdf()
Dim i As Integer
'
Sheets("Eleves").Select
Range("AP11").Select ' on commence ici
nblig = Range(Selection, Selection.End(xlDown)).Rows.Count
i = 11
Do While i < nblig
If Range("AP" & i) = "" Then
MyPath = ActiveWorkbook.Path
MyName = Dir(MyPath, vbDirectory)
Do While MyName <> ""
If MyName Like "*_" & Range("A" & i) & "_*" Then
Range("AP" & i) = MyName
End If
MyName = Dir
Loop
End If
i = i + 1
Loop
End Sub
joselito
Le #22539591
joselito a écrit le 02/09/2010 à 07h14 :
Bonjour,
J'exploite un fichier de plusieur milliers de lignes représentant
chacunes une fiche client.
ce fichier contient en colonne "A" le numéro client, en
colonne "AP" le nom du document pdf fourni par le client et en
colonne "BP" la celulle recevant le contenu texte du pdf.

Qui pourrait m'aider à réaliser une macro, selon le processus
suivant ?
- Créer une sélection sur la colonne "BP" pour ne
sélectionner que les fiches non renseignées. (celulles vides)
- Puis une sous-sélection sur la colonne "AP" pour ne
sélectionner que les celulles contenant une référence de
fichier pdf. (celulles non-vides)
- Récupérer le contenu texte du pdf et l'inclure dans la celulle
"BP"
PS: Le fichier Excel et les pdf, sont dans un même dossier
"GestionClientFepo"
PSS: Chaque jour le fichier de base Excel s'enrichi de nouvelles lignes
clients

Une seconde Macro serait la bienvenue (Mise à jour colonne
"AP")
- Faire une sélection des celulles vides
- Relever le numéro client en colonne "A" (ex du format:
1213673251)
PS: le nom du fichier pdf associé sera du format:
"DC_1213673251_999999" (les 9 représentent un numéro de
série incrémenté automatiquement par le site///
l'important est le numéro client compris entre les deux "_")
- Scruter le dossier GestionClientFepo" et renseigner la colonne
"AP" des nouveaux pdf reçus.

Merci par avance pour votre contribution...
J'ai bien trouvé dans ce forum une macro qui répond à la
premiere action, extraire des données textes d'un pdf, mais je ne sais
pas l'adapter à mon besoin.
Si cela peut vous être utile, je vous joint la macro ci-dessous.

••••••••••••••••••••••••••••••••••
"Tu peux automatiser l'ouverture du fichier PDF ainsi que le Copier-Coller
de la façon suivante:"

Private Declare Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As
String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Sub Extraire_Texte_de_Pdf()

URL = "C:mes documentsGazel_no22.pdf" 'Adapter à votre
fichier
'Ouvrir le fichier pdf avec le programme approprié
ShellExecute 0&, vbNullString, URL, vbNullString, _
vbNullString, vbNormalFocus

'Attendre 2 secondes
Application.Wait (Now + TimeValue("0:00:02"))

NomDeLafenetre = "Acrobat Reader"
AppActivate NomDeLafenetre 'Donner le focus à Acrobat Reader
SendKeys "^{a}" 'Sélectionner tout avec CTRL-A
AppActivate NomDeLafenetre
SendKeys "^{c}" 'Copier avec CTRL-C

'Attendre 2 secondes
Application.Wait (Now + TimeValue("0:00:02"))

AppActivate "Microsoft Excel" 'Redonner le focus à Excel

Sheets("Feuil1").Select
Sheets("Feuil1").Range("A1").Select
ActiveSheet.Paste

End Sub
••••••••••••••••••••••••••••••••

Au plaisir de vour lire.
José


Voici le code modifié qui ne fait aucune action:

Sub APextraireNomPdf()
Dim i As Integer
'
Sheets("Eleves").Select
Range("AP11").Select ' on commence ici
nblig = Range(Selection, Selection.End(xlDown)).Rows.Count
i = 11
Do While i < nblig
If Range("AP" & i) = "" Then
MyPath = ActiveWorkbook.Path
MyName = Dir(MyPath, vbDirectory)
Do While MyName <> ""
If MyName Like "*_" & Range("A" & i) & "_*" Then
Range("AP" & i) = MyName
End If
MyName = Dir
Loop
End If
i = i + 1
Loop
End Sub
michdenis
Le #22540131
| Récupérer le contenu texte du pdf et l'inclure dans la celulle "BP"

Est-ce que tu penses qu'Excel peut ouvrir un fichier PDF ?
Quel est ton code qui fait ça ?

Au mieux, tu peux obtenir en BP le nom du fichier pdf à ouvrir.
À toi des les ouvrir manuellement et de faire ta copie.

Pour la première partie du travail, il y a ceci :

Dans la colonne BP, tu retrouveras le nom du fichier de la colonne AF
'---------------------------------
Sub APextraireNomPdf1()
Dim DerLig As Long, Rg As Range
Dim NbCol As Integer
Application.ScreenUpdating = False
Application.EnableEvents = False
With Sheets("Eleves")
DerLig = .Range("AP65536").End(xlUp).Row
If DerLig < 11 Then DerLig = 11
With .Range("AP11:BP" & DerLig)
.AutoFilter Field:=.Columns.Count, Criteria1:=""
.AutoFilter Field:=1, Criteria1:="*.pdf"
Set Rg = .Columns(.Columns.Count).SpecialCells(xlCellTypeVisible)
End With
With Rg
.Formula = "=" & Rg(1).Offset(, -26).Address(0, 1)
End With
With .Range("AP11:BP" & DerLig)
.AutoFilter
End With
With .Range("AP11:AP" & DerLig)
.Value = .Value
End With
End With
Application.ScreenUpdating = True
Application.EnableEvents = True

End Sub
'---------------------------------


--
MichD
--------------------------------------------


"joselito"
joselito a écrit le 02/09/2010 à 07h14 :
Bonjour,
J'exploite un fichier de plusieur milliers de lignes représentant
chacunes une fiche client.
ce fichier contient en colonne "A" le numéro client, en
colonne "AP" le nom du document pdf fourni par le client et en
colonne "BP" la celulle recevant le contenu texte du pdf.

Qui pourrait m'aider à réaliser une macro, selon le processus
suivant ?
- Créer une sélection sur la colonne "BP" pour ne
sélectionner que les fiches non renseignées. (celulles vides)
- Puis une sous-sélection sur la colonne "AP" pour ne
sélectionner que les celulles contenant une référence de
fichier pdf. (celulles non-vides)
- Récupérer le contenu texte du pdf et l'inclure dans la celulle
"BP"
PS: Le fichier Excel et les pdf, sont dans un même dossier
"GestionClientFepo"
PSS: Chaque jour le fichier de base Excel s'enrichi de nouvelles lignes
clients

Une seconde Macro serait la bienvenue (Mise à jour colonne
"AP")
- Faire une sélection des celulles vides
- Relever le numéro client en colonne "A" (ex du format:
1213673251)
PS: le nom du fichier pdf associé sera du format:
"DC_1213673251_999999" (les 9 représentent un numéro de
série incrémenté automatiquement par le site///
l'important est le numéro client compris entre les deux "_")
- Scruter le dossier GestionClientFepo" et renseigner la colonne
"AP" des nouveaux pdf reçus.

Merci par avance pour votre contribution...
J'ai bien trouvé dans ce forum une macro qui répond à la
premiere action, extraire des données textes d'un pdf, mais je ne sais
pas l'adapter à mon besoin.
Si cela peut vous être utile, je vous joint la macro ci-dessous.

••••••••••••••••••••••••••••••••••
"Tu peux automatiser l'ouverture du fichier PDF ainsi que le Copier-Coller
de la façon suivante:"

Private Declare Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As
String, _
ByVal lpFile As String, ByVal lpParameters As String, _
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Sub Extraire_Texte_de_Pdf()

URL = "C:mes documentsGazel_no22.pdf" 'Adapter à votre
fichier
'Ouvrir le fichier pdf avec le programme approprié
ShellExecute 0&, vbNullString, URL, vbNullString, _
vbNullString, vbNormalFocus

'Attendre 2 secondes
Application.Wait (Now + TimeValue("0:00:02"))

NomDeLafenetre = "Acrobat Reader"
AppActivate NomDeLafenetre 'Donner le focus à Acrobat Reader
SendKeys "^{a}" 'Sélectionner tout avec CTRL-A
AppActivate NomDeLafenetre
SendKeys "^{c}" 'Copier avec CTRL-C

'Attendre 2 secondes
Application.Wait (Now + TimeValue("0:00:02"))

AppActivate "Microsoft Excel" 'Redonner le focus à Excel

Sheets("Feuil1").Select
Sheets("Feuil1").Range("A1").Select
ActiveSheet.Paste

End Sub
••••••••••••••••••••••••••••••••

Au plaisir de vour lire.
José


Voici le code modifié qui ne fait aucune action:

Sub APextraireNomPdf()
Dim i As Integer
'
Sheets("Eleves").Select
Range("AP11").Select ' on commence ici
nblig = Range(Selection, Selection.End(xlDown)).Rows.Count
i = 11
Do While i < nblig
If Range("AP" & i) = "" Then
MyPath = ActiveWorkbook.Path
MyName = Dir(MyPath, vbDirectory)
Do While MyName <> ""
If MyName Like "*_" & Range("A" & i) & "_*" Then
Range("AP" & i) = MyName
End If
MyName = Dir
Loop
End If
i = i + 1
Loop
End Sub
Publicité
Poster une réponse
Anonyme