Comment tester l'existence d'une feuille dans un classeur sans ouvrir ce classeur ?
Merci d'avance pour votre aide
HD
Comment tester l'existence d'une feuille dans un classeur sans ouvrir ce classeur ?
Plus précisément... Comment à partir d'un classeur savoir si un autre classeur dispose ou non d'une feuille d'un nom déterminé et ce sans ouvrir cet autre classeur...
--
@+ HD
Comment tester l'existence d'une feuille dans
un classeur sans ouvrir ce classeur ?
Plus précisément... Comment à partir d'un classeur savoir si un autre
classeur dispose ou non d'une feuille d'un nom déterminé et ce sans ouvrir
cet autre classeur...
Comment tester l'existence d'une feuille dans un classeur sans ouvrir ce classeur ?
Plus précisément... Comment à partir d'un classeur savoir si un autre classeur dispose ou non d'une feuille d'un nom déterminé et ce sans ouvrir cet autre classeur...
Le problème est que lors du changement du lien au niveau du nom de la feuille (en VBA via un Replace) l'on a alors une fenêtre qui s'ouvre nous précisant que la feuille n'existe pas sur le classeur et qu'il nous faut en sélectionner une autre... Même en passant par une désactivation du DisplayAlerts ou du AskToUpdateLinks j'ai toujours la fenêtre qui s'affiche... alors que je n'en veut pas...
Voici mon bout de code qui change ma cellule D21 où se trouve le lien à tester... (avant d'avoir à lancer le changement de lien sur un grand nombre de cellules)
Sub test() On Error Resume Next Application.EnableEvents = False Application.DisplayAlerts = False Application.ScreenUpdating = False Application.AskToUpdateLinks = False Range("D21").Replace What:="]2007'", Replacement:="]2005'", LookAt:=xlPart, SearchOrder:=xlByRows Application.EnableEvents = True Application.DisplayAlerts = True Application.ScreenUpdating = True Application.AskToUpdateLinks = True End Sub
Le problème est que lors du changement du lien au niveau du nom de la
feuille (en VBA via un Replace) l'on a alors une fenêtre qui s'ouvre nous
précisant que la feuille n'existe pas sur le classeur et qu'il nous faut en
sélectionner une autre... Même en passant par une désactivation du
DisplayAlerts ou du AskToUpdateLinks j'ai toujours la fenêtre qui
s'affiche... alors que je n'en veut pas...
Voici mon bout de code qui change ma cellule D21 où se trouve le lien à
tester... (avant d'avoir à lancer le changement de lien sur un grand nombre
de cellules)
Sub test()
On Error Resume Next
Application.EnableEvents = False
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Application.AskToUpdateLinks = False
Range("D21").Replace What:="]2007'", Replacement:="]2005'",
LookAt:=xlPart, SearchOrder:=xlByRows
Application.EnableEvents = True
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.AskToUpdateLinks = True
End Sub
Le problème est que lors du changement du lien au niveau du nom de la feuille (en VBA via un Replace) l'on a alors une fenêtre qui s'ouvre nous précisant que la feuille n'existe pas sur le classeur et qu'il nous faut en sélectionner une autre... Même en passant par une désactivation du DisplayAlerts ou du AskToUpdateLinks j'ai toujours la fenêtre qui s'affiche... alors que je n'en veut pas...
Voici mon bout de code qui change ma cellule D21 où se trouve le lien à tester... (avant d'avoir à lancer le changement de lien sur un grand nombre de cellules)
Sub test() On Error Resume Next Application.EnableEvents = False Application.DisplayAlerts = False Application.ScreenUpdating = False Application.AskToUpdateLinks = False Range("D21").Replace What:="]2007'", Replacement:="]2005'", LookAt:=xlPart, SearchOrder:=xlByRows Application.EnableEvents = True Application.DisplayAlerts = True Application.ScreenUpdating = True Application.AskToUpdateLinks = True End Sub
HD
Je me suis donc résolu à ouvrir le classeur source... Je ne pense pas qu'il y'ai une autre solution... Voici mon code :
Function TestFeuille(FTest As String) As Boolean On Error Resume Next Dim AWkbk As String Dim FicDest As String Dim FicDestNom As String
TestFeuille = False AWkbk = ActiveWorkbook.Name
'Si le classeur source est ouvert If Workbooks.Count > 1 Then For Each wkbks In Workbooks If LCase(wkbks.Name) = "budget.xls" Then wkbks.Activate Sheets(FTest).Select If ActiveSheet.Name = FTest Then TestFeuille = True Exit Function End If End If Next End If
Application.EnableEvents = False Application.DisplayAlerts = False Application.ScreenUpdating = False Application.AskToUpdateLinks = False Workbooks.Open Filename:=FicDest & FicDestNom Sheets(FTest).Select If ActiveSheet.Name = FTest Then TestFeuille = True ActiveWorkbook.Close Application.EnableEvents = True Application.DisplayAlerts = True Application.ScreenUpdating = True Application.AskToUpdateLinks = True End Function
Je me suis donc résolu à ouvrir le classeur source... Je ne pense pas qu'il
y'ai une autre solution... Voici mon code :
Function TestFeuille(FTest As String) As Boolean
On Error Resume Next
Dim AWkbk As String
Dim FicDest As String
Dim FicDestNom As String
TestFeuille = False
AWkbk = ActiveWorkbook.Name
'Si le classeur source est ouvert
If Workbooks.Count > 1 Then
For Each wkbks In Workbooks
If LCase(wkbks.Name) = "budget.xls" Then
wkbks.Activate
Sheets(FTest).Select
If ActiveSheet.Name = FTest Then
TestFeuille = True
Exit Function
End If
End If
Next
End If
Je me suis donc résolu à ouvrir le classeur source... Je ne pense pas qu'il y'ai une autre solution... Voici mon code :
Function TestFeuille(FTest As String) As Boolean On Error Resume Next Dim AWkbk As String Dim FicDest As String Dim FicDestNom As String
TestFeuille = False AWkbk = ActiveWorkbook.Name
'Si le classeur source est ouvert If Workbooks.Count > 1 Then For Each wkbks In Workbooks If LCase(wkbks.Name) = "budget.xls" Then wkbks.Activate Sheets(FTest).Select If ActiveSheet.Name = FTest Then TestFeuille = True Exit Function End If End If Next End If
Application.EnableEvents = False Application.DisplayAlerts = False Application.ScreenUpdating = False Application.AskToUpdateLinks = False Workbooks.Open Filename:=FicDest & FicDestNom Sheets(FTest).Select If ActiveSheet.Name = FTest Then TestFeuille = True ActiveWorkbook.Close Application.EnableEvents = True Application.DisplayAlerts = True Application.ScreenUpdating = True Application.AskToUpdateLinks = True End Function
isabelle
bonjour HD,
peut être avec cette approche,
x = Range("C2").FormulaR1C1 x = Right(x, Len(x) - 1) x = Application.Substitute(x, "Feuil1", "Feuil2") If IsError(ExecuteExcel4Macro("" & x & "")) Then MsgBox "n'existe pas"
Le problème est que lors du changement du lien au niveau du nom de la feuille (en VBA via un Replace) l'on a alors une fenêtre qui s'ouvre nous précisant que la feuille n'existe pas sur le classeur et qu'il nous faut en sélectionner une autre... Même en passant par une désactivation du DisplayAlerts ou du AskToUpdateLinks j'ai toujours la fenêtre qui s'affiche... alors que je n'en veut pas...
Voici mon bout de code qui change ma cellule D21 où se trouve le lien à tester... (avant d'avoir à lancer le changement de lien sur un grand nombre de cellules)
Sub test() On Error Resume Next Application.EnableEvents = False Application.DisplayAlerts = False Application.ScreenUpdating = False Application.AskToUpdateLinks = False Range("D21").Replace What:="]2007'", Replacement:="]2005'", LookAt:=xlPart, SearchOrder:=xlByRows Application.EnableEvents = True Application.DisplayAlerts = True Application.ScreenUpdating = True Application.AskToUpdateLinks = True End Sub
bonjour HD,
peut être avec cette approche,
x = Range("C2").FormulaR1C1
x = Right(x, Len(x) - 1)
x = Application.Substitute(x, "Feuil1", "Feuil2")
If IsError(ExecuteExcel4Macro("" & x & "")) Then MsgBox "n'existe pas"
Le problème est que lors du changement du lien au niveau du nom de la
feuille (en VBA via un Replace) l'on a alors une fenêtre qui s'ouvre nous
précisant que la feuille n'existe pas sur le classeur et qu'il nous faut en
sélectionner une autre... Même en passant par une désactivation du
DisplayAlerts ou du AskToUpdateLinks j'ai toujours la fenêtre qui
s'affiche... alors que je n'en veut pas...
Voici mon bout de code qui change ma cellule D21 où se trouve le lien à
tester... (avant d'avoir à lancer le changement de lien sur un grand nombre
de cellules)
Sub test()
On Error Resume Next
Application.EnableEvents = False
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Application.AskToUpdateLinks = False
Range("D21").Replace What:="]2007'", Replacement:="]2005'",
LookAt:=xlPart, SearchOrder:=xlByRows
Application.EnableEvents = True
Application.DisplayAlerts = True
Application.ScreenUpdating = True
Application.AskToUpdateLinks = True
End Sub
x = Range("C2").FormulaR1C1 x = Right(x, Len(x) - 1) x = Application.Substitute(x, "Feuil1", "Feuil2") If IsError(ExecuteExcel4Macro("" & x & "")) Then MsgBox "n'existe pas"
Le problème est que lors du changement du lien au niveau du nom de la feuille (en VBA via un Replace) l'on a alors une fenêtre qui s'ouvre nous précisant que la feuille n'existe pas sur le classeur et qu'il nous faut en sélectionner une autre... Même en passant par une désactivation du DisplayAlerts ou du AskToUpdateLinks j'ai toujours la fenêtre qui s'affiche... alors que je n'en veut pas...
Voici mon bout de code qui change ma cellule D21 où se trouve le lien à tester... (avant d'avoir à lancer le changement de lien sur un grand nombre de cellules)
Sub test() On Error Resume Next Application.EnableEvents = False Application.DisplayAlerts = False Application.ScreenUpdating = False Application.AskToUpdateLinks = False Range("D21").Replace What:="]2007'", Replacement:="]2005'", LookAt:=xlPart, SearchOrder:=xlByRows Application.EnableEvents = True Application.DisplayAlerts = True Application.ScreenUpdating = True Application.AskToUpdateLinks = True End Sub