Rechercher : dans
Par :

MACRO EXCEL

Dernière réponse le 9 nov 2009 à 23:30:43 CAROLE, le 9 nov 2009 à 13:18:22 
 Signaler ce message aux modérateurs

Bonjour,

mon code me permet de passer en PDF les fichier d'un dossier. Or je ne veux pas que le fichier "book1.xls" soit passé en pdf.

j'ai contourné le problème en sortant de la sub si une erreur survient (c'est le cas quand la macro essaie de passer book1.xls en PDF), mais ce n'est pas très "propre"

Comment sortir book1 de la boucle "proprement"? (je précise que mon code fonctionne bien en l'état.)

Public Sub CommandButton1_Click()
Application.ScreenUpdating = False
Application.EnableEvents = False
DisplayAlerts = False
Dim Fichier As String, Chemin As String
Dim Wb As Workbook

Chemin = ThisWorkbook.Path & "\"
Fichier = Dir(Chemin & "*.xls")
On Error GoTo Olive

Do Until Fichier = Dir(Chemin & "book1.xls")
Set Wb = Workbooks.Open(Chemin & Fichier)
Wb.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin & Fichier, Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False

Wb.Close (False)
Set Wb = Nothing
Fichier = Dir

Loop

Application.EnableEvents = True
Application.ScreenUpdating = True
DisplayAlerts = True
Olive:
End Sub

Configuration: Windows XP
Safari 532.0

1

Polux31, le 9 nov 2009 à 13:37:14

Bonjour,

Je pense que je ferai comme ça:

Chemin = ThisWorkbook.Path & "\" 
Fichier = Dir(Chemin & "*.xls") 

Do While (Fichier <> "")
If Fichier <> Chemin & "book1.xls" Then
Set Wb = Workbooks.Open(Fichier) 
 Wb.ExportAsFixedFormat Type:=xlTypePDF, Filename:=Chemin & Fichier, Quality:=xlQualityStandard,    IncludeDocProperties:=True, IgnorePrintAreas _ 
:=False, OpenAfterPublish:=False 
Wb.Close (False) 
Set Wb = Nothing 
End If
Fichier = Dir 

Loop 


;o) «Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.» 
Nicolas Boileau

Répondre à Polux31

2

CAROLE, le 9 nov 2009 à 14:04:33

Merci poilux!

peux tu m'expliquer rapidement pourquoi un "Do Until Fichier = Dir(Chemin & "book1.xls")" ne fait pas l'affaire?

merciiii

Répondre à CAROLE

3

Polux31, le 9 nov 2009 à 14:43:34

De rien,

Je ne saurai pas te dire exactement la différénce entre Do While ... Loop et Do Until ... Loop. Tu auras peut être plus d'explication ici : http://msdn.microsoft.com/fr-fr/library/21daexkw(VS.80).aspx­

Bon courage

;o) «Ce que l'on conçoit bien s'énonce clairement, Et les mots p­our le dire arrivent aisément.» 
Nicolas Boileau

Répondre à Polux31

4

 eriiic, le 9 nov 2009 à 23:30:43

Bonsoir tout le monde,

Ma façon de voir les choses :

do while : faire tant que ...
do until : faire jusqu'à ce que ...

polux fait : tant que

(Fichier <> "")
donc tous les fichiers (mais teste dans la boucle si le nom est accepté).

toi tu fais : jusqu'à ce que
 Fichier = Dir(Chemin & "book1.xls")"
donc les fichiers qui arrivent après : walou...

eric

Répondre à eriiic