Comparer les valeurs d'une cellule avec les noms des fichid'un d

Fermé
siamens_duj Messages postés 192 Date d'inscription vendredi 20 juin 2014 Statut Membre Dernière intervention 14 février 2019 - Modifié par crapoulou le 21/01/2016 à 08:25
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 - 21 janv. 2016 à 13:40
Bonjour,

je suis coincé depuis quelque temps sur un programme que j'aimerais faire.

J'ai une feuille "feuil1" où j'ai des nom de fichier écrit dans la colonne A.

J'ai un dossier "convertir" qui comporte parmis ses fichiers, les fichiers dont le nom est inscrit en colonne A.

J'aimerais faire un programme qui compare les noms de fichiers de ma feuil1 et les noms de fichiers de mon dossier et lorsque ces derniers sont identique, les convertis en pdf.

Admettons que dans ma feuil1 j'ai en A1 : toto1.docx en A2: toto2.docx en A3: toto3.docx et en A4: toto4.docx et dans mon dossier convertir j'ai toto1.docx toto2.docx toto3.docx toto4.docx toto5.docx toto6.docx et toto7.docx
seulement les fichiers toto1.docx, toto2.docx, toto3.docx, toto4.docx sont convertis en pdf.

Je vous met mon code :

Option Explicit
Sub Conv()

Dim wdApp As Object
Dim FileNamePDF As String
Dim FileName As String
Dim i As Integer
Dim FileNameDOCX As String

Application.ScreenUpdating = False


i = 1

Set wdApp = CreateObject("word.application")

ActiveSheet.Name = "Feuil1"

FileNameDOCX = Dir("D:\Users\moi\Documents\convertir\*.docx")

Do While Cells(i, 1).Value <> ""

If Cells(i, 1).Value = FileNameDOCX Then

wdApp.Documents.Open ("D:\Users\moi\Documents\convertir\" & FileNameDOCX)

wdApp.ActivePrinter = "PDFCreator" 

FileName = Left(FileNameDOCX, Len(FileNameDOCX) - 5) 'selectionne le nom du fichier moins le ".docx"

FileNamePDF = ("D:\Users\moi\Documents\fait\" & FileName & ".pdf") 'Rajoute à la fin du nom du fichier ".pdf"

wdApp.DisplayAlerts = False
wdApp.PrintOut OutputFileName:=FileNamePDF, PrintToFile:=False

wdApp.ActiveDocument.Close

i = i + 1

ElseIf Cells(i, 1).Value <> FileNameDOCX Then
MsgBox "Fichier inexistant"
FileNameDOCX = Dir()
End If

Loop

wdApp.Quit
Set wdApp = Nothing

End Sub



Le problème est que seulement toto1.docx est "trouvé" et convertis en pdf dans le dossier "fait" (toto1.docx se trouve dans la cellule A1) et lorsque je change l'ordre dans la colonne À et que je met toto3.docx et toto4.docx dans A1 et A2 seulement eux sont trouvés.

Je ne comprend pas d'où vient le problème.

Quelqu'un pourrait m'aider svp. Merci.
A voir également:

1 réponse

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
21 janv. 2016 à 09:37
Bonjour

dans la feuil1 tu crées une plage avec les noms
style
With sheets("feuil1")
Derlig = .Columns("A").Find(what:="*", searchdirection:=xlPrevious).Row
Set Plage = .Range("A1:A" & Derlig)
end with


et
Filenamedocx = Dir("D:\Users\moi\Documents\convertir\*.docx")

Do While Filenamedocx <> ""

If Application.CountIf(Plage, Filenamedocx) > 0 Then

'......
0
siamens_duj Messages postés 192 Date d'inscription vendredi 20 juin 2014 Statut Membre Dernière intervention 14 février 2019 7
21 janv. 2016 à 10:15
Bonjour et merci pour votre reponse.
Cependant à terme j'aurais plus de 100 nom de fichier, je ne peux donc pas appliquer la première partie du code.
Aussi, j ai écris mon code dans un module. Cela convient ?
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310 > siamens_duj Messages postés 192 Date d'inscription vendredi 20 juin 2014 Statut Membre Dernière intervention 14 février 2019
21 janv. 2016 à 10:41
re,
Cependant à terme j'aurais plus de 100 nom de fichier, je ne peux donc pas appliquer la première partie du code

Pourquoi? je ne vois pas pourquoi ca gène ! qu'il y en ai 10 ou 1000 ca ne change rien...
0
siamens_duj Messages postés 192 Date d'inscription vendredi 20 juin 2014 Statut Membre Dernière intervention 14 février 2019 7
21 janv. 2016 à 13:02
Ah d'accord je n'avais pas compris.
Merci pour ces informations.

J'ai une erreur sur la ligne Derlig= .colums ("A").find (what:="*", searchdirection:=xlPrevious).Row

Il me met "Propriété ou méthode non gérée par cet objet"

J ai déclaré Derlig as long
0
f894009 Messages postés 17206 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 22 novembre 2024 1 710 > siamens_duj Messages postés 192 Date d'inscription vendredi 20 juin 2014 Statut Membre Dernière intervention 14 février 2019
21 janv. 2016 à 13:08
Bonjour a vous deux,

vous:
Derlig= .colums ("A")
.


michel_m:
Derlig = .Columns("A").
0
siamens_duj Messages postés 192 Date d'inscription vendredi 20 juin 2014 Statut Membre Dernière intervention 14 février 2019 7
21 janv. 2016 à 13:23
Bonjour et merci, ça c est de l'erreur bête. .

J'abuse encore mais mon code fait beuguer excel.
Une fois exécuté il me met " Excel attend la fin de l'exécution d'une action OLE d'une autre application "
Et tous me fichiers se convertissent en pdf sauf toto4.docx même quand je le change de place, que je le positionne en A1 ou A4 il ne se met pas en pdf.

Savez vous pourquoi ?
0