J'aimerai mettre une condition : si la feuille du nom : ____ existe dans le classeur alors ....
Est ce possible?
Merci d'avance pour votre aide
Version imprimable
J'aimerai mettre une condition : si la feuille du nom : ____ existe dans le classeur alors ....
Est ce possible?
Merci d'avance pour votre aide
en utilisant la gestion d'erreur...par exemple...
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Function FeuilleExiste(wk As Workbook, stFeuille) As Boolean On Error Resume Next FeuilleExiste = Not (wk.Sheets(stFeuille) Is Nothing) End Function Sub MonTestDelaFonctionExiste() If FeuilleExiste(ThisWorkbook, "feuil1") Then MsgBox "la feuille existe" Else MsgBox "N'existe pas " End If End Sub
Si j'ai bien compris avec Thisworkbook, je travail sur le classeur d'ou la macro est lancée. Moi j'aimerai savoir si une feuille existe sur un classeur ouvert mais non celui d'ou je lance la macro. Il faut remplacer thisworkbook par autre chose?
Code:If FeuilleExiste(ThisWorkbook, "feuil1") Then
ben comment l'ouvre tu ton classeur , montre nous le code...
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 While reference(i) <> "" m = 1 nom_fichier = ActiveWorkbook.Name ChDir k While (Dir(k & "\FERT pliage automatisée " & reference(i) & indice(m) & ".xls")) = "" m = m + 1 Wend If FeuilleExiste(ThisWorkbook, "FTP " & reference(i)) Then Else Workbooks.Open Filename:=k & "\FERT pliage automatisée " & reference(i) & indice(m) & ".xls" Windows("FERT pliage automatisée " & reference(i) & indice(m) & ".xls").Activate ' la je voudrai rajouter : si la feuille"panoplie" existe dans le fichier alors... j = Sheets("Poste de pliage").Range("C1") - 1 'N° de la feuille à afficher If j = 1 Then nom = "F.T.P. " & j & " POSTE DE PLIAGE" Else: nom = "F.T.P. " & j & " POSTES DE PLIAGE" End If Sheets(nom).Select Sheets(nom).Copy Before:=Workbooks( _ nom_fichier).Sheets(8) Windows("FERT pliage automatisée " & reference(i) & indice(m) & ".xls").Activate ActiveWindow.Close Sheets(nom).Select Sheets(nom).Name = "FTP " & reference(i) Sheets("Feuilles données").Select End If i = i + 1 Wend
ben pour lors de l'ouverture du classeur place le résultat dans une variable de type workbook...
tu peu ensuite utiliser ta variable wk ...qui pointe vers ton classeur... en évitant même tout tes activate ... par exemple :Code:
1
2
3
4
5 Dim wk as workbook .... set wk Workbooks.Open (Filename:=k & "\FERT pliage automatisée " & reference(i) & indice(m) & ".xls")
Code:..j = wk.Sheets("Poste de pliage").Range("C1") - 1 'N° de la feuille à afficher...