sXlFilePath2 = Application.GetOpenFilename("Fichiers Excel,*.xls")
If sXlFilePath2 <> False Then
On Error Resume Next
Workbooks.Open sXlFilePath2, False
sXlFileName2 = LCase(Right(sXlFilePath2, Len(sXlFilePath2) -
InStrRev(sXlFilePath2, "\")))
Workbooks(sXlFileName2).Activate
Set wks = Nothing
Set wks = Sheets("data")
Workbooks(sXlFileName2).Close (False)
If wks Is Nothing Then
'Aucun traitement, la feuille data n'existe pas.
Else
'Traitement
End If
--
Alex St-Pierre
Sub SheetExists()
Const Wbk$ = "D:\Excel\DataBase\MonClasseur.xls"
Const Sht$ = "Data"
If OkSheetName(Wbk, Sht) Then
MsgBox "La feuille " & Sht & " est présente dans le classeur:" & vbLf & Wbk
& " !", 64
End If
End Sub
Private Function OkSheetName(FullPathFile$, SheetName$) As Boolean
Dim Con As Object, Cat As Object, Tbl As Object
Set Con = CreateObject("ADODB.Connection")
Con.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" _
& FullPathFile & ";" & "Extended Properties=Excel 8.0;"
Set Cat = CreateObject("ADOX.Catalog")
Set Cat.ActiveConnection = Con
For Each Tbl In Cat.Tables
If Left$(Tbl.Name, Len(Tbl.Name) - 1) = SheetName Then
OkSheetName = True
Exit For
End If
Next Tbl
Set Cat = Nothing: Con.Close: Set Con = Nothing
End Function
MP
"Alex St-Pierre" <AlexSt...@discussions.microsoft.com> a écrit dans le
message de news: 5F9EFF13-EA48-4F02...@microsoft.com...
"Michel Pierron" a écrit :
--
Alex St-Pierre
"Michel Pierron" a écrit :
> Bonsoir Alex;
Tu peux aussi essayer cette autre manière de faire :
Sub VerifSheet()
Const Wbk$ = "D:\Excel\DataBase\MonClasseur.xls"
Const Sht$ = "Feuil3"
If FindSheet(Wbk, Sht) Then
MsgBox "La feuille " & Sht & " est présente dans" & vbLf & Wbk & " !", 64
End If
End Sub
Private Function FindSheet(FullPath$, Name$) As Boolean
If Dir(FullPath) = "" Then Exit Function
Dim Pos&(1 To 2), b(0 To 2048) As Byte
Dim lr&: lr = FileLen(FullPath)
Dim f&: f = FreeFile
Open FullPath For Binary Access Read As #f
Do
Pos(1) = Pos(1) + 2047
Get #f, Pos(1), b
Pos(2) = InStrB(b, ChrB(133))
Loop While Pos(2) = 0 And Pos(1) < lr
Do While Pos(2) > 0
Pos(1) = Pos(1) + Pos(2) - 1
Get #f, Pos(1), b
FindSheet = CBool(Mid(StrConv(b, vbUnicode), 13, b(10)) = Name)
If FindSheet Then Exit Do
Pos(2) = IIf(b(b(2) + 4) = 133, InStrB(4, b, ChrB(133)), 0)
Loop
Close #f
End Function
MP
"Alex St-Pierre" <AlexSt...@discussions.microsoft.com> a écrit dans le
message de news: 225D5082-BF09-42D3...@microsoft.com...
Set monDicoSource = CreateObject("Scripting.Dictionary")
For Each Tbl In Cat.Tables
sTemp = Replace(Tbl.Name, "#", ".")
sTemp = Replace(Tbl.Name, "$", "")
If sTemp = SheetName Then 'Left$(Tbl.Name, Len(Tbl.Name) - 1) =
SheetName
OkSheetName = True 'Exit For
ElseIf sTemp <> "manager" And sTemp <> "merge" Then 'don't want data
and manager sheet
monDicoSource.Add sTemp, sTemp
End If
Next Tbl
For Each Tbl In Cat.Tables
Pos = InStr(1, Tbl.Name, "$")
If Pos Then
OkSheetName = CBool(Left$(Tbl.Name, Pos - 1))
If OkSheetName Then Exit For
End If
Next Tbl
MP
"Alex St-Pierre" <AlexSt...@discussions.microsoft.com> a écrit dans le
message de news: 225D5082-BF09-42D3...@microsoft.com...
LeNom = Application.ExecuteExcel4Macro("'C:\Mes documents\Classeur1.xls'!toto")
"Alex St-Pierre" <AlexSt...@discussions.microsoft.com> a écrit dans le message de news:
C5C6D728-CC8D-497F...@microsoft.com...
"MichDenis" a écrit :
mais je ne crois pas que l'on puisse modifier la ligne de code en remplaçant
toto par "Feuil1!toto" si c'est à quoi tu fais référence.
"Alex St-Pierre" <AlexSt...@discussions.microsoft.com> a écrit dans le message de news:
2F99409C-FDFB-48F2...@microsoft.com...