Bonjour, j'utilise le code ci dessous pour une combobox (ComboBox1), mais lorsque la feuille sélectionnée dans la combobox n'existe pas le formulaire se plante. ma question c'est comment vérifier l'existe de la feuille sélectionnée afin d'éviter le plantage. si la feuille sélectionnée n'existe pas un message pour dire que la feuille sélectionnée n'existe pas mais si la feuille sélectionnée existe le code se poursuit.
merci
Private Sub CommandButton1_Click()
If Controls("ComboBox1") = "" Then
MsgBox "Indiquez le véhicule"
Controls("ComboBox1").SetFocus
Exit Sub
End If
Sheets(ComboBox1.Value).Select
UserForm2.Show
Unload Me
End Sub
des que l'on ajoute une feuille
des que l'on supprime une feuille
des que l'on choisi une feuille
et bien supposons que la combobox1 se trouve dans la feuille "menu"
dans le thisworkbook on va mettre seulement ceci
VB:
Private Sub Workbook_Open()
Workbook_SheetActivate activesheet
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
With Sheets("Menu").OLEObjects("ComboBox1").Object
.Clear
For Each Sh In Worksheets
If Sh.Name <> "menu" Then .AddItem Sh.Name
Next
End With
End Sub
tu n'a plus rien a faire ça se fera tout seul si tu ajoute ou supprime des feuilles ou simplement choisir une feuille
tester l'existance de la feuille avec cette fonction
VB:
function feuilleExiste(Nomfeuille as string) as boolean
feuilleExiste=false
for each ws in activeworkbook.sheets
if ws.name=Nomfeuille then
FeuilleExiste=true
exit function
end if
next ws
end function
sinon.. mieux.. dans le combo.. ne présenter QUE les feuilles qui existent
VB:
nomcombo.clear 'vide le combo
for each ws in activeworkbook.sheets
nomcombo.additem ws.name
next ws
des que l'on ajoute une feuille
des que l'on supprime une feuille
des que l'on choisi une feuille
et bien supposons que la combobox1 se trouve dans la feuille "menu"
dans le thisworkbook on va mettre seulement ceci
VB:
Private Sub Workbook_Open()
Workbook_SheetActivate activesheet
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
With Sheets("Menu").OLEObjects("ComboBox1").Object
.Clear
For Each Sh In Worksheets
If Sh.Name <> "menu" Then .AddItem Sh.Name
Next
End With
End Sub
tu n'a plus rien a faire ça se fera tout seul si tu ajoute ou supprime des feuilles ou simplement choisir une feuille
des que l'on ajoute une feuille
des que l'on supprime une feuille
des que l'on choisi une feuille
et bien supposons que la combobox1 se trouve dans la feuille "menu"
dans le thisworkbook on va mettre seulement ceci
VB:
Private Sub Workbook_Open()
Workbook_SheetActivate activesheet
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
With Sheets("Menu").OLEObjects("ComboBox1").Object
.Clear
For Each Sh In Worksheets
If Sh.Name <> "menu" Then .AddItem Sh.Name
Next
End With
End Sub
tu n'a plus rien a faire ça se fera tout seul si tu ajoute ou supprime des feuilles ou simplement choisir une feuille