XL 2016 Vérifier une combobox

vanin

XLDnaute Occasionnel
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
 
Solution
Bonjour
et si on rendait cela automatique

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
;)

vgendron

XLDnaute Barbatruc
Bonjour

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
 

patricktoulon

XLDnaute Barbatruc
Bonjour
et si on rendait cela automatique

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
;)
 

Pièces jointes

  • comb voiture automatiC.xlsm
    23.2 KB · Affichages: 10
Dernière édition:

vanin

XLDnaute Occasionnel
Bonjour
et si on rendait cela automatique

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
;)
Merci ca marche
 

Discussions similaires

Réponses
6
Affichages
202