Bonjour,
J'utilise la programmation suivante pour vérifier si la feuille "data"
d'un
fichier excel fermé existe. La macro suivante ouvre le fichier et vérifie
si
elle est présente, cela prend environ 10 secondes à exécuter. Existe-t-il
une
façon plus rapide (peut-être sans ouvrir le fichier excel) de s'assurer
qu'elle est présente?
Merci !
Alex
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
Bonjour,
J'utilise la programmation suivante pour vérifier si la feuille "data"
d'un
fichier excel fermé existe. La macro suivante ouvre le fichier et vérifie
si
elle est présente, cela prend environ 10 secondes à exécuter. Existe-t-il
une
façon plus rapide (peut-être sans ouvrir le fichier excel) de s'assurer
qu'elle est présente?
Merci !
Alex
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
Bonjour,
J'utilise la programmation suivante pour vérifier si la feuille "data"
d'un
fichier excel fermé existe. La macro suivante ouvre le fichier et vérifie
si
elle est présente, cela prend environ 10 secondes à exécuter. Existe-t-il
une
façon plus rapide (peut-être sans ouvrir le fichier excel) de s'assurer
qu'elle est présente?
Merci !
Alex
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
Bonsoir Alex;
Par exemple:
Sub SheetExists()
Const Wbk$ = "D:ExcelDataBaseMonClasseur.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" a écrit dans le
message de news:Bonjour,
J'utilise la programmation suivante pour vérifier si la feuille "data"
d'un
fichier excel fermé existe. La macro suivante ouvre le fichier et vérifie
si
elle est présente, cela prend environ 10 secondes à exécuter. Existe-t-il
une
façon plus rapide (peut-être sans ouvrir le fichier excel) de s'assurer
qu'elle est présente?
Merci !
Alex
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
Bonsoir Alex;
Par exemple:
Sub SheetExists()
Const Wbk$ = "D:ExcelDataBaseMonClasseur.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" <AlexStPierre@discussions.microsoft.com> a écrit dans le
message de news: 5F9EFF13-EA48-4F02-8E61-FF2760109A61@microsoft.com...
Bonjour,
J'utilise la programmation suivante pour vérifier si la feuille "data"
d'un
fichier excel fermé existe. La macro suivante ouvre le fichier et vérifie
si
elle est présente, cela prend environ 10 secondes à exécuter. Existe-t-il
une
façon plus rapide (peut-être sans ouvrir le fichier excel) de s'assurer
qu'elle est présente?
Merci !
Alex
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
Bonsoir Alex;
Par exemple:
Sub SheetExists()
Const Wbk$ = "D:ExcelDataBaseMonClasseur.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" a écrit dans le
message de news:Bonjour,
J'utilise la programmation suivante pour vérifier si la feuille "data"
d'un
fichier excel fermé existe. La macro suivante ouvre le fichier et vérifie
si
elle est présente, cela prend environ 10 secondes à exécuter. Existe-t-il
une
façon plus rapide (peut-être sans ouvrir le fichier excel) de s'assurer
qu'elle est présente?
Merci !
Alex
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
Bonsoir Alex;
Par exemple:
Sub SheetExists()
Const Wbk$ = "D:ExcelDataBaseMonClasseur.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" a écrit dans le
message de news:Bonjour,
J'utilise la programmation suivante pour vérifier si la feuille "data"
d'un
fichier excel fermé existe. La macro suivante ouvre le fichier et vérifie
si
elle est présente, cela prend environ 10 secondes à exécuter. Existe-t-il
une
façon plus rapide (peut-être sans ouvrir le fichier excel) de s'assurer
qu'elle est présente?
Merci !
Alex
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
Bonsoir Alex;
Par exemple:
Sub SheetExists()
Const Wbk$ = "D:ExcelDataBaseMonClasseur.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" <AlexStPierre@discussions.microsoft.com> a écrit dans le
message de news: 5F9EFF13-EA48-4F02-8E61-FF2760109A61@microsoft.com...
Bonjour,
J'utilise la programmation suivante pour vérifier si la feuille "data"
d'un
fichier excel fermé existe. La macro suivante ouvre le fichier et vérifie
si
elle est présente, cela prend environ 10 secondes à exécuter. Existe-t-il
une
façon plus rapide (peut-être sans ouvrir le fichier excel) de s'assurer
qu'elle est présente?
Merci !
Alex
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
Bonsoir Alex;
Par exemple:
Sub SheetExists()
Const Wbk$ = "D:ExcelDataBaseMonClasseur.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" a écrit dans le
message de news:Bonjour,
J'utilise la programmation suivante pour vérifier si la feuille "data"
d'un
fichier excel fermé existe. La macro suivante ouvre le fichier et vérifie
si
elle est présente, cela prend environ 10 secondes à exécuter. Existe-t-il
une
façon plus rapide (peut-être sans ouvrir le fichier excel) de s'assurer
qu'elle est présente?
Merci !
Alex
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
Merci, ça fonctionne très bien (et très rapide!!)
Je vais aussi utiliser la fonction pour importer l'ensemble des noms de
feuille du classeur. J'ai remarqué que si le nom de la feuille est "table
3.1", Left$(Tbl.Name, Len(Tbl.Name) - 1) donne "Table 3#1" (le point est
remplacé par un #). Aussi, s'il y a de la couleur dans le nom de l'onglet,
un
signe de $ apparait à la fin du nom. Est-ce que tu sais s'il y a moyen
d'obtenir le nom tel qu'il est écrit dans Excel ?
Merci !
--
Alex St-PierreBonsoir Alex;
Par exemple:
Sub SheetExists()
Const Wbk$ = "D:ExcelDataBaseMonClasseur.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" a écrit dans le
message de news:Bonjour,
J'utilise la programmation suivante pour vérifier si la feuille "data"
d'un
fichier excel fermé existe. La macro suivante ouvre le fichier et
vérifie
si
elle est présente, cela prend environ 10 secondes à exécuter.
Existe-t-il
une
façon plus rapide (peut-être sans ouvrir le fichier excel) de s'assurer
qu'elle est présente?
Merci !
Alex
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
Merci, ça fonctionne très bien (et très rapide!!)
Je vais aussi utiliser la fonction pour importer l'ensemble des noms de
feuille du classeur. J'ai remarqué que si le nom de la feuille est "table
3.1", Left$(Tbl.Name, Len(Tbl.Name) - 1) donne "Table 3#1" (le point est
remplacé par un #). Aussi, s'il y a de la couleur dans le nom de l'onglet,
un
signe de $ apparait à la fin du nom. Est-ce que tu sais s'il y a moyen
d'obtenir le nom tel qu'il est écrit dans Excel ?
Merci !
--
Alex St-Pierre
Bonsoir Alex;
Par exemple:
Sub SheetExists()
Const Wbk$ = "D:ExcelDataBaseMonClasseur.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" <AlexStPierre@discussions.microsoft.com> a écrit dans le
message de news: 5F9EFF13-EA48-4F02-8E61-FF2760109A61@microsoft.com...
Bonjour,
J'utilise la programmation suivante pour vérifier si la feuille "data"
d'un
fichier excel fermé existe. La macro suivante ouvre le fichier et
vérifie
si
elle est présente, cela prend environ 10 secondes à exécuter.
Existe-t-il
une
façon plus rapide (peut-être sans ouvrir le fichier excel) de s'assurer
qu'elle est présente?
Merci !
Alex
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
Merci, ça fonctionne très bien (et très rapide!!)
Je vais aussi utiliser la fonction pour importer l'ensemble des noms de
feuille du classeur. J'ai remarqué que si le nom de la feuille est "table
3.1", Left$(Tbl.Name, Len(Tbl.Name) - 1) donne "Table 3#1" (le point est
remplacé par un #). Aussi, s'il y a de la couleur dans le nom de l'onglet,
un
signe de $ apparait à la fin du nom. Est-ce que tu sais s'il y a moyen
d'obtenir le nom tel qu'il est écrit dans Excel ?
Merci !
--
Alex St-PierreBonsoir Alex;
Par exemple:
Sub SheetExists()
Const Wbk$ = "D:ExcelDataBaseMonClasseur.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" a écrit dans le
message de news:Bonjour,
J'utilise la programmation suivante pour vérifier si la feuille "data"
d'un
fichier excel fermé existe. La macro suivante ouvre le fichier et
vérifie
si
elle est présente, cela prend environ 10 secondes à exécuter.
Existe-t-il
une
façon plus rapide (peut-être sans ouvrir le fichier excel) de s'assurer
qu'elle est présente?
Merci !
Alex
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
Re Alex;
Le signe $ est toujours présent à la fin du nom; c'est pourquoi il y a -1
dans:
Left$(Tbl.Name, Len(Tbl.Name) - 1)
Mais tu peux aussi utiliser (à condition de ne pas utiliser $ dans le nom de
la feuille):
Left$(Tbl.Name, InStr(1, Tbl.Name, "$") - 1)
Je te rappelle les restrictions d'usage dans les noms de feuilles:
31 caractères maxi
Pas de caractères tels que: / ? * [ ].
(3.1) n'est donc pas un nom valide; c'est pourquoi tu trouves # en lieu et
place du .
Tu peux aussi essayer cette autre manière de faire :
Sub VerifSheet()
Const Wbk$ = "D:ExcelDataBaseMonClasseur.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" a écrit dans le
message de news:Merci, ça fonctionne très bien (et très rapide!!)
Je vais aussi utiliser la fonction pour importer l'ensemble des noms de
feuille du classeur. J'ai remarqué que si le nom de la feuille est "table
3.1", Left$(Tbl.Name, Len(Tbl.Name) - 1) donne "Table 3#1" (le point est
remplacé par un #). Aussi, s'il y a de la couleur dans le nom de l'onglet,
un
signe de $ apparait à la fin du nom. Est-ce que tu sais s'il y a moyen
d'obtenir le nom tel qu'il est écrit dans Excel ?
Merci !
--
Alex St-PierreBonsoir Alex;
Par exemple:
Sub SheetExists()
Const Wbk$ = "D:ExcelDataBaseMonClasseur.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" a écrit dans le
message de news:Bonjour,
J'utilise la programmation suivante pour vérifier si la feuille "data"
d'un
fichier excel fermé existe. La macro suivante ouvre le fichier et
vérifie
si
elle est présente, cela prend environ 10 secondes à exécuter.
Existe-t-il
une
façon plus rapide (peut-être sans ouvrir le fichier excel) de s'assurer
qu'elle est présente?
Merci !
Alex
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
Re Alex;
Le signe $ est toujours présent à la fin du nom; c'est pourquoi il y a -1
dans:
Left$(Tbl.Name, Len(Tbl.Name) - 1)
Mais tu peux aussi utiliser (à condition de ne pas utiliser $ dans le nom de
la feuille):
Left$(Tbl.Name, InStr(1, Tbl.Name, "$") - 1)
Je te rappelle les restrictions d'usage dans les noms de feuilles:
31 caractères maxi
Pas de caractères tels que: / ? * [ ].
(3.1) n'est donc pas un nom valide; c'est pourquoi tu trouves # en lieu et
place du .
Tu peux aussi essayer cette autre manière de faire :
Sub VerifSheet()
Const Wbk$ = "D:ExcelDataBaseMonClasseur.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" <AlexStPierre@discussions.microsoft.com> a écrit dans le
message de news: 225D5082-BF09-42D3-B938-EA71F18BA9EA@microsoft.com...
Merci, ça fonctionne très bien (et très rapide!!)
Je vais aussi utiliser la fonction pour importer l'ensemble des noms de
feuille du classeur. J'ai remarqué que si le nom de la feuille est "table
3.1", Left$(Tbl.Name, Len(Tbl.Name) - 1) donne "Table 3#1" (le point est
remplacé par un #). Aussi, s'il y a de la couleur dans le nom de l'onglet,
un
signe de $ apparait à la fin du nom. Est-ce que tu sais s'il y a moyen
d'obtenir le nom tel qu'il est écrit dans Excel ?
Merci !
--
Alex St-Pierre
Bonsoir Alex;
Par exemple:
Sub SheetExists()
Const Wbk$ = "D:ExcelDataBaseMonClasseur.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" <AlexStPierre@discussions.microsoft.com> a écrit dans le
message de news: 5F9EFF13-EA48-4F02-8E61-FF2760109A61@microsoft.com...
Bonjour,
J'utilise la programmation suivante pour vérifier si la feuille "data"
d'un
fichier excel fermé existe. La macro suivante ouvre le fichier et
vérifie
si
elle est présente, cela prend environ 10 secondes à exécuter.
Existe-t-il
une
façon plus rapide (peut-être sans ouvrir le fichier excel) de s'assurer
qu'elle est présente?
Merci !
Alex
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
Re Alex;
Le signe $ est toujours présent à la fin du nom; c'est pourquoi il y a -1
dans:
Left$(Tbl.Name, Len(Tbl.Name) - 1)
Mais tu peux aussi utiliser (à condition de ne pas utiliser $ dans le nom de
la feuille):
Left$(Tbl.Name, InStr(1, Tbl.Name, "$") - 1)
Je te rappelle les restrictions d'usage dans les noms de feuilles:
31 caractères maxi
Pas de caractères tels que: / ? * [ ].
(3.1) n'est donc pas un nom valide; c'est pourquoi tu trouves # en lieu et
place du .
Tu peux aussi essayer cette autre manière de faire :
Sub VerifSheet()
Const Wbk$ = "D:ExcelDataBaseMonClasseur.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" a écrit dans le
message de news:Merci, ça fonctionne très bien (et très rapide!!)
Je vais aussi utiliser la fonction pour importer l'ensemble des noms de
feuille du classeur. J'ai remarqué que si le nom de la feuille est "table
3.1", Left$(Tbl.Name, Len(Tbl.Name) - 1) donne "Table 3#1" (le point est
remplacé par un #). Aussi, s'il y a de la couleur dans le nom de l'onglet,
un
signe de $ apparait à la fin du nom. Est-ce que tu sais s'il y a moyen
d'obtenir le nom tel qu'il est écrit dans Excel ?
Merci !
--
Alex St-PierreBonsoir Alex;
Par exemple:
Sub SheetExists()
Const Wbk$ = "D:ExcelDataBaseMonClasseur.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" a écrit dans le
message de news:Bonjour,
J'utilise la programmation suivante pour vérifier si la feuille "data"
d'un
fichier excel fermé existe. La macro suivante ouvre le fichier et
vérifie
si
elle est présente, cela prend environ 10 secondes à exécuter.
Existe-t-il
une
façon plus rapide (peut-être sans ouvrir le fichier excel) de s'assurer
qu'elle est présente?
Merci !
Alex
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
Merci, ça fonctionne très bien (et très rapide!!)
Je vais aussi utiliser la fonction pour importer l'ensemble des noms de
feuille du classeur. J'ai remarqué que si le nom de la feuille est "table
3.1", Left$(Tbl.Name, Len(Tbl.Name) - 1) donne "Table 3#1" (le point est
remplacé par un #). Aussi, s'il y a de la couleur dans le nom de l'onglet,
un
signe de $ apparait à la fin du nom. Est-ce que tu sais s'il y a moyen
d'obtenir le nom tel qu'il est écrit dans Excel ?
Merci !
--
Alex St-PierreBonsoir Alex;
Par exemple:
Sub SheetExists()
Const Wbk$ = "D:ExcelDataBaseMonClasseur.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" a écrit dans le
message de news:Bonjour,
J'utilise la programmation suivante pour vérifier si la feuille "data"
d'un
fichier excel fermé existe. La macro suivante ouvre le fichier et
vérifie
si
elle est présente, cela prend environ 10 secondes à exécuter.
Existe-t-il
une
façon plus rapide (peut-être sans ouvrir le fichier excel) de s'assurer
qu'elle est présente?
Merci !
Alex
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
Merci, ça fonctionne très bien (et très rapide!!)
Je vais aussi utiliser la fonction pour importer l'ensemble des noms de
feuille du classeur. J'ai remarqué que si le nom de la feuille est "table
3.1", Left$(Tbl.Name, Len(Tbl.Name) - 1) donne "Table 3#1" (le point est
remplacé par un #). Aussi, s'il y a de la couleur dans le nom de l'onglet,
un
signe de $ apparait à la fin du nom. Est-ce que tu sais s'il y a moyen
d'obtenir le nom tel qu'il est écrit dans Excel ?
Merci !
--
Alex St-Pierre
Bonsoir Alex;
Par exemple:
Sub SheetExists()
Const Wbk$ = "D:ExcelDataBaseMonClasseur.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" <AlexStPierre@discussions.microsoft.com> a écrit dans le
message de news: 5F9EFF13-EA48-4F02-8E61-FF2760109A61@microsoft.com...
Bonjour,
J'utilise la programmation suivante pour vérifier si la feuille "data"
d'un
fichier excel fermé existe. La macro suivante ouvre le fichier et
vérifie
si
elle est présente, cela prend environ 10 secondes à exécuter.
Existe-t-il
une
façon plus rapide (peut-être sans ouvrir le fichier excel) de s'assurer
qu'elle est présente?
Merci !
Alex
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
Merci, ça fonctionne très bien (et très rapide!!)
Je vais aussi utiliser la fonction pour importer l'ensemble des noms de
feuille du classeur. J'ai remarqué que si le nom de la feuille est "table
3.1", Left$(Tbl.Name, Len(Tbl.Name) - 1) donne "Table 3#1" (le point est
remplacé par un #). Aussi, s'il y a de la couleur dans le nom de l'onglet,
un
signe de $ apparait à la fin du nom. Est-ce que tu sais s'il y a moyen
d'obtenir le nom tel qu'il est écrit dans Excel ?
Merci !
--
Alex St-PierreBonsoir Alex;
Par exemple:
Sub SheetExists()
Const Wbk$ = "D:ExcelDataBaseMonClasseur.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" a écrit dans le
message de news:Bonjour,
J'utilise la programmation suivante pour vérifier si la feuille "data"
d'un
fichier excel fermé existe. La macro suivante ouvre le fichier et
vérifie
si
elle est présente, cela prend environ 10 secondes à exécuter.
Existe-t-il
une
façon plus rapide (peut-être sans ouvrir le fichier excel) de s'assurer
qu'elle est présente?
Merci !
Alex
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
Re Alex;
En effet, puisque plages sont des sous tables, elles figurent dans la liste;
mais comme seules les feuilles possèdent le signe $ à la fin, tu peux la
jouer comme ça (en rajoutant la variable Pos&):
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" a écrit dans le
message de news:Merci, ça fonctionne très bien (et très rapide!!)
Je vais aussi utiliser la fonction pour importer l'ensemble des noms de
feuille du classeur. J'ai remarqué que si le nom de la feuille est "table
3.1", Left$(Tbl.Name, Len(Tbl.Name) - 1) donne "Table 3#1" (le point est
remplacé par un #). Aussi, s'il y a de la couleur dans le nom de l'onglet,
un
signe de $ apparait à la fin du nom. Est-ce que tu sais s'il y a moyen
d'obtenir le nom tel qu'il est écrit dans Excel ?
Merci !
--
Alex St-PierreBonsoir Alex;
Par exemple:
Sub SheetExists()
Const Wbk$ = "D:ExcelDataBaseMonClasseur.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" a écrit dans le
message de news:Bonjour,
J'utilise la programmation suivante pour vérifier si la feuille "data"
d'un
fichier excel fermé existe. La macro suivante ouvre le fichier et
vérifie
si
elle est présente, cela prend environ 10 secondes à exécuter.
Existe-t-il
une
façon plus rapide (peut-être sans ouvrir le fichier excel) de s'assurer
qu'elle est présente?
Merci !
Alex
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
Re Alex;
En effet, puisque plages sont des sous tables, elles figurent dans la liste;
mais comme seules les feuilles possèdent le signe $ à la fin, tu peux la
jouer comme ça (en rajoutant la variable Pos&):
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" <AlexStPierre@discussions.microsoft.com> a écrit dans le
message de news: 225D5082-BF09-42D3-B938-EA71F18BA9EA@microsoft.com...
Merci, ça fonctionne très bien (et très rapide!!)
Je vais aussi utiliser la fonction pour importer l'ensemble des noms de
feuille du classeur. J'ai remarqué que si le nom de la feuille est "table
3.1", Left$(Tbl.Name, Len(Tbl.Name) - 1) donne "Table 3#1" (le point est
remplacé par un #). Aussi, s'il y a de la couleur dans le nom de l'onglet,
un
signe de $ apparait à la fin du nom. Est-ce que tu sais s'il y a moyen
d'obtenir le nom tel qu'il est écrit dans Excel ?
Merci !
--
Alex St-Pierre
Bonsoir Alex;
Par exemple:
Sub SheetExists()
Const Wbk$ = "D:ExcelDataBaseMonClasseur.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" <AlexStPierre@discussions.microsoft.com> a écrit dans le
message de news: 5F9EFF13-EA48-4F02-8E61-FF2760109A61@microsoft.com...
Bonjour,
J'utilise la programmation suivante pour vérifier si la feuille "data"
d'un
fichier excel fermé existe. La macro suivante ouvre le fichier et
vérifie
si
elle est présente, cela prend environ 10 secondes à exécuter.
Existe-t-il
une
façon plus rapide (peut-être sans ouvrir le fichier excel) de s'assurer
qu'elle est présente?
Merci !
Alex
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
Re Alex;
En effet, puisque plages sont des sous tables, elles figurent dans la liste;
mais comme seules les feuilles possèdent le signe $ à la fin, tu peux la
jouer comme ça (en rajoutant la variable Pos&):
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" a écrit dans le
message de news:Merci, ça fonctionne très bien (et très rapide!!)
Je vais aussi utiliser la fonction pour importer l'ensemble des noms de
feuille du classeur. J'ai remarqué que si le nom de la feuille est "table
3.1", Left$(Tbl.Name, Len(Tbl.Name) - 1) donne "Table 3#1" (le point est
remplacé par un #). Aussi, s'il y a de la couleur dans le nom de l'onglet,
un
signe de $ apparait à la fin du nom. Est-ce que tu sais s'il y a moyen
d'obtenir le nom tel qu'il est écrit dans Excel ?
Merci !
--
Alex St-PierreBonsoir Alex;
Par exemple:
Sub SheetExists()
Const Wbk$ = "D:ExcelDataBaseMonClasseur.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" a écrit dans le
message de news:Bonjour,
J'utilise la programmation suivante pour vérifier si la feuille "data"
d'un
fichier excel fermé existe. La macro suivante ouvre le fichier et
vérifie
si
elle est présente, cela prend environ 10 secondes à exécuter.
Existe-t-il
une
façon plus rapide (peut-être sans ouvrir le fichier excel) de s'assurer
qu'elle est présente?
Merci !
Alex
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
Re Alex;
En effet, puisque plages sont des sous tables, elles figurent dans la liste;
mais comme seules les feuilles possèdent le signe $ à la fin, tu peux la
jouer comme ça (en rajoutant la variable Pos&):
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" a écrit dans le
message de news:Merci, ça fonctionne très bien (et très rapide!!)
Je vais aussi utiliser la fonction pour importer l'ensemble des noms de
feuille du classeur. J'ai remarqué que si le nom de la feuille est "table
3.1", Left$(Tbl.Name, Len(Tbl.Name) - 1) donne "Table 3#1" (le point est
remplacé par un #). Aussi, s'il y a de la couleur dans le nom de l'onglet,
un
signe de $ apparait à la fin du nom. Est-ce que tu sais s'il y a moyen
d'obtenir le nom tel qu'il est écrit dans Excel ?
Merci !
--
Alex St-PierreBonsoir Alex;
Par exemple:
Sub SheetExists()
Const Wbk$ = "D:ExcelDataBaseMonClasseur.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" a écrit dans le
message de news:Bonjour,
J'utilise la programmation suivante pour vérifier si la feuille "data"
d'un
fichier excel fermé existe. La macro suivante ouvre le fichier et
vérifie
si
elle est présente, cela prend environ 10 secondes à exécuter.
Existe-t-il
une
façon plus rapide (peut-être sans ouvrir le fichier excel) de s'assurer
qu'elle est présente?
Merci !
Alex
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
Re Alex;
En effet, puisque plages sont des sous tables, elles figurent dans la liste;
mais comme seules les feuilles possèdent le signe $ à la fin, tu peux la
jouer comme ça (en rajoutant la variable Pos&):
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" <AlexStPierre@discussions.microsoft.com> a écrit dans le
message de news: 225D5082-BF09-42D3-B938-EA71F18BA9EA@microsoft.com...
Merci, ça fonctionne très bien (et très rapide!!)
Je vais aussi utiliser la fonction pour importer l'ensemble des noms de
feuille du classeur. J'ai remarqué que si le nom de la feuille est "table
3.1", Left$(Tbl.Name, Len(Tbl.Name) - 1) donne "Table 3#1" (le point est
remplacé par un #). Aussi, s'il y a de la couleur dans le nom de l'onglet,
un
signe de $ apparait à la fin du nom. Est-ce que tu sais s'il y a moyen
d'obtenir le nom tel qu'il est écrit dans Excel ?
Merci !
--
Alex St-Pierre
Bonsoir Alex;
Par exemple:
Sub SheetExists()
Const Wbk$ = "D:ExcelDataBaseMonClasseur.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" <AlexStPierre@discussions.microsoft.com> a écrit dans le
message de news: 5F9EFF13-EA48-4F02-8E61-FF2760109A61@microsoft.com...
Bonjour,
J'utilise la programmation suivante pour vérifier si la feuille "data"
d'un
fichier excel fermé existe. La macro suivante ouvre le fichier et
vérifie
si
elle est présente, cela prend environ 10 secondes à exécuter.
Existe-t-il
une
façon plus rapide (peut-être sans ouvrir le fichier excel) de s'assurer
qu'elle est présente?
Merci !
Alex
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
Re Alex;
En effet, puisque plages sont des sous tables, elles figurent dans la liste;
mais comme seules les feuilles possèdent le signe $ à la fin, tu peux la
jouer comme ça (en rajoutant la variable Pos&):
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" a écrit dans le
message de news:Merci, ça fonctionne très bien (et très rapide!!)
Je vais aussi utiliser la fonction pour importer l'ensemble des noms de
feuille du classeur. J'ai remarqué que si le nom de la feuille est "table
3.1", Left$(Tbl.Name, Len(Tbl.Name) - 1) donne "Table 3#1" (le point est
remplacé par un #). Aussi, s'il y a de la couleur dans le nom de l'onglet,
un
signe de $ apparait à la fin du nom. Est-ce que tu sais s'il y a moyen
d'obtenir le nom tel qu'il est écrit dans Excel ?
Merci !
--
Alex St-PierreBonsoir Alex;
Par exemple:
Sub SheetExists()
Const Wbk$ = "D:ExcelDataBaseMonClasseur.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" a écrit dans le
message de news:Bonjour,
J'utilise la programmation suivante pour vérifier si la feuille "data"
d'un
fichier excel fermé existe. La macro suivante ouvre le fichier et
vérifie
si
elle est présente, cela prend environ 10 secondes à exécuter.
Existe-t-il
une
façon plus rapide (peut-être sans ouvrir le fichier excel) de s'assurer
qu'elle est présente?
Merci !
Alex
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
Re Alex;
En effet, puisque plages sont des sous tables, elles figurent dans la liste;
mais comme seules les feuilles possèdent le signe $ à la fin, tu peux la
jouer comme ça (en rajoutant la variable Pos&):
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" a écrit dans le
message de news:Merci, ça fonctionne très bien (et très rapide!!)
Je vais aussi utiliser la fonction pour importer l'ensemble des noms de
feuille du classeur. J'ai remarqué que si le nom de la feuille est "table
3.1", Left$(Tbl.Name, Len(Tbl.Name) - 1) donne "Table 3#1" (le point est
remplacé par un #). Aussi, s'il y a de la couleur dans le nom de l'onglet,
un
signe de $ apparait à la fin du nom. Est-ce que tu sais s'il y a moyen
d'obtenir le nom tel qu'il est écrit dans Excel ?
Merci !
--
Alex St-PierreBonsoir Alex;
Par exemple:
Sub SheetExists()
Const Wbk$ = "D:ExcelDataBaseMonClasseur.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" a écrit dans le
message de news:Bonjour,
J'utilise la programmation suivante pour vérifier si la feuille "data"
d'un
fichier excel fermé existe. La macro suivante ouvre le fichier et
vérifie
si
elle est présente, cela prend environ 10 secondes à exécuter.
Existe-t-il
une
façon plus rapide (peut-être sans ouvrir le fichier excel) de s'assurer
qu'elle est présente?
Merci !
Alex
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
Re Alex;
En effet, puisque plages sont des sous tables, elles figurent dans la liste;
mais comme seules les feuilles possèdent le signe $ à la fin, tu peux la
jouer comme ça (en rajoutant la variable Pos&):
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" <AlexStPierre@discussions.microsoft.com> a écrit dans le
message de news: 225D5082-BF09-42D3-B938-EA71F18BA9EA@microsoft.com...
Merci, ça fonctionne très bien (et très rapide!!)
Je vais aussi utiliser la fonction pour importer l'ensemble des noms de
feuille du classeur. J'ai remarqué que si le nom de la feuille est "table
3.1", Left$(Tbl.Name, Len(Tbl.Name) - 1) donne "Table 3#1" (le point est
remplacé par un #). Aussi, s'il y a de la couleur dans le nom de l'onglet,
un
signe de $ apparait à la fin du nom. Est-ce que tu sais s'il y a moyen
d'obtenir le nom tel qu'il est écrit dans Excel ?
Merci !
--
Alex St-Pierre
Bonsoir Alex;
Par exemple:
Sub SheetExists()
Const Wbk$ = "D:ExcelDataBaseMonClasseur.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" <AlexStPierre@discussions.microsoft.com> a écrit dans le
message de news: 5F9EFF13-EA48-4F02-8E61-FF2760109A61@microsoft.com...
Bonjour,
J'utilise la programmation suivante pour vérifier si la feuille "data"
d'un
fichier excel fermé existe. La macro suivante ouvre le fichier et
vérifie
si
elle est présente, cela prend environ 10 secondes à exécuter.
Existe-t-il
une
façon plus rapide (peut-être sans ouvrir le fichier excel) de s'assurer
qu'elle est présente?
Merci !
Alex
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
Re Alex;
En effet, puisque plages sont des sous tables, elles figurent dans la liste;
mais comme seules les feuilles possèdent le signe $ à la fin, tu peux la
jouer comme ça (en rajoutant la variable Pos&):
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" a écrit dans le
message de news:Merci, ça fonctionne très bien (et très rapide!!)
Je vais aussi utiliser la fonction pour importer l'ensemble des noms de
feuille du classeur. J'ai remarqué que si le nom de la feuille est "table
3.1", Left$(Tbl.Name, Len(Tbl.Name) - 1) donne "Table 3#1" (le point est
remplacé par un #). Aussi, s'il y a de la couleur dans le nom de l'onglet,
un
signe de $ apparait à la fin du nom. Est-ce que tu sais s'il y a moyen
d'obtenir le nom tel qu'il est écrit dans Excel ?
Merci !
--
Alex St-PierreBonsoir Alex;
Par exemple:
Sub SheetExists()
Const Wbk$ = "D:ExcelDataBaseMonClasseur.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" a écrit dans le
message de news:Bonjour,
J'utilise la programmation suivante pour vérifier si la feuille "data"
d'un
fichier excel fermé existe. La macro suivante ouvre le fichier et
vérifie
si
elle est présente, cela prend environ 10 secondes à exécuter.
Existe-t-il
une
façon plus rapide (peut-être sans ouvrir le fichier excel) de s'assurer
qu'elle est présente?
Merci !
Alex
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
Pour lire la valeur d'une cellule ayant le nom toto
LeNom = Application.ExecuteExcel4Macro("'C:Mes documentsClasseur1.xls'!toto")
"Alex St-Pierre" a écrit dans le message de news:
Bonjour Michel,
Je me demande s'il est possible d'accéder au contenu d'une cellule qui porte
un nom. Par exemple, dans la feuille "data" en question, il y a une cellule
nommé "date_eval" qui contient une date que je voudrais mettre dans mon
formulaire.
Merci !
--
Alex St-PierreRe Alex;
En effet, puisque plages sont des sous tables, elles figurent dans la liste;
mais comme seules les feuilles possèdent le signe $ à la fin, tu peux la
jouer comme ça (en rajoutant la variable Pos&):
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" a écrit dans le
message de news:Merci, ça fonctionne très bien (et très rapide!!)
Je vais aussi utiliser la fonction pour importer l'ensemble des noms de
feuille du classeur. J'ai remarqué que si le nom de la feuille est "table
3.1", Left$(Tbl.Name, Len(Tbl.Name) - 1) donne "Table 3#1" (le point est
remplacé par un #). Aussi, s'il y a de la couleur dans le nom de l'onglet,
un
signe de $ apparait à la fin du nom. Est-ce que tu sais s'il y a moyen
d'obtenir le nom tel qu'il est écrit dans Excel ?
Merci !
--
Alex St-PierreBonsoir Alex;
Par exemple:
Sub SheetExists()
Const Wbk$ = "D:ExcelDataBaseMonClasseur.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" a écrit dans le
message de news:Bonjour,
J'utilise la programmation suivante pour vérifier si la feuille "data"
d'un
fichier excel fermé existe. La macro suivante ouvre le fichier et
vérifie
si
elle est présente, cela prend environ 10 secondes à exécuter.
Existe-t-il
une
façon plus rapide (peut-être sans ouvrir le fichier excel) de s'assurer
qu'elle est présente?
Merci !
Alex
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
Pour lire la valeur d'une cellule ayant le nom toto
LeNom = Application.ExecuteExcel4Macro("'C:Mes documentsClasseur1.xls'!toto")
"Alex St-Pierre" <AlexStPierre@discussions.microsoft.com> a écrit dans le message de news:
C5C6D728-CC8D-497F-A1E1-6FD0E7CC9DAB@microsoft.com...
Bonjour Michel,
Je me demande s'il est possible d'accéder au contenu d'une cellule qui porte
un nom. Par exemple, dans la feuille "data" en question, il y a une cellule
nommé "date_eval" qui contient une date que je voudrais mettre dans mon
formulaire.
Merci !
--
Alex St-Pierre
Re Alex;
En effet, puisque plages sont des sous tables, elles figurent dans la liste;
mais comme seules les feuilles possèdent le signe $ à la fin, tu peux la
jouer comme ça (en rajoutant la variable Pos&):
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" <AlexStPierre@discussions.microsoft.com> a écrit dans le
message de news: 225D5082-BF09-42D3-B938-EA71F18BA9EA@microsoft.com...
Merci, ça fonctionne très bien (et très rapide!!)
Je vais aussi utiliser la fonction pour importer l'ensemble des noms de
feuille du classeur. J'ai remarqué que si le nom de la feuille est "table
3.1", Left$(Tbl.Name, Len(Tbl.Name) - 1) donne "Table 3#1" (le point est
remplacé par un #). Aussi, s'il y a de la couleur dans le nom de l'onglet,
un
signe de $ apparait à la fin du nom. Est-ce que tu sais s'il y a moyen
d'obtenir le nom tel qu'il est écrit dans Excel ?
Merci !
--
Alex St-Pierre
Bonsoir Alex;
Par exemple:
Sub SheetExists()
Const Wbk$ = "D:ExcelDataBaseMonClasseur.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" <AlexStPierre@discussions.microsoft.com> a écrit dans le
message de news: 5F9EFF13-EA48-4F02-8E61-FF2760109A61@microsoft.com...
Bonjour,
J'utilise la programmation suivante pour vérifier si la feuille "data"
d'un
fichier excel fermé existe. La macro suivante ouvre le fichier et
vérifie
si
elle est présente, cela prend environ 10 secondes à exécuter.
Existe-t-il
une
façon plus rapide (peut-être sans ouvrir le fichier excel) de s'assurer
qu'elle est présente?
Merci !
Alex
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
Pour lire la valeur d'une cellule ayant le nom toto
LeNom = Application.ExecuteExcel4Macro("'C:Mes documentsClasseur1.xls'!toto")
"Alex St-Pierre" a écrit dans le message de news:
Bonjour Michel,
Je me demande s'il est possible d'accéder au contenu d'une cellule qui porte
un nom. Par exemple, dans la feuille "data" en question, il y a une cellule
nommé "date_eval" qui contient une date que je voudrais mettre dans mon
formulaire.
Merci !
--
Alex St-PierreRe Alex;
En effet, puisque plages sont des sous tables, elles figurent dans la liste;
mais comme seules les feuilles possèdent le signe $ à la fin, tu peux la
jouer comme ça (en rajoutant la variable Pos&):
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" a écrit dans le
message de news:Merci, ça fonctionne très bien (et très rapide!!)
Je vais aussi utiliser la fonction pour importer l'ensemble des noms de
feuille du classeur. J'ai remarqué que si le nom de la feuille est "table
3.1", Left$(Tbl.Name, Len(Tbl.Name) - 1) donne "Table 3#1" (le point est
remplacé par un #). Aussi, s'il y a de la couleur dans le nom de l'onglet,
un
signe de $ apparait à la fin du nom. Est-ce que tu sais s'il y a moyen
d'obtenir le nom tel qu'il est écrit dans Excel ?
Merci !
--
Alex St-PierreBonsoir Alex;
Par exemple:
Sub SheetExists()
Const Wbk$ = "D:ExcelDataBaseMonClasseur.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" a écrit dans le
message de news:Bonjour,
J'utilise la programmation suivante pour vérifier si la feuille "data"
d'un
fichier excel fermé existe. La macro suivante ouvre le fichier et
vérifie
si
elle est présente, cela prend environ 10 secondes à exécuter.
Existe-t-il
une
façon plus rapide (peut-être sans ouvrir le fichier excel) de s'assurer
qu'elle est présente?
Merci !
Alex
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