Erreur "Objet requis"

Bonsoir,

Je souhaitais rassembler l'ensemble des données susceptible de changer dans un Module "Données".

Du coup en sortant le code suivant du Userform, j'ai une erreur du type "erreur de compilation : objet requis" au niveau du ComboBox.

Y aurait il un moyen de corriger l'erreur sans remettre mon code dans le userform ?

Merci à tous.

Sub coefficient()
Dim secteur As String

secteur = ComboBox1_Secteur.Value

Select Case secteur

    Case Is = "PON"
        coef = 0.9
        Range("E17").Value = coef

    Case Is = "POS"
        coef = 0.95
        Range("E17").Value = coef

    Case Is = "BALAGNE"
        coef = 0.93
        Range("E17").Value = coef

    Case Is = "AJACCIO"
        coef = 0.95
        Range("E17").Value = coef

    Case Is = "SE"
        coef = 0.95
        Range("E17").Value = coef

End Select

End Sub

Bonjour,

Sous toute réserve n'ayant le fichier pour tester la suite ...

Il manquerait le nom du Userform ou l'emplacement du Combobox1 devant ...

secteur = Userform1.ComboBox1_Secteur.Value ou ...

secteur = Worksheets("xxx").ComboBox1_Secteur.Value

ric

Bonjour,

Comme ça :

Option Explicit
Sub coefficient()
Dim secteur As String
Dim coef As Double
  secteur = UserForm1.ComboBox1_Secteur.Value
  Select Case secteur
    Case Is = "PON"
        coef = 0.9
    Case Is = "POS"
        coef = 0.95
    Case Is = "BALAGNE"
        coef = 0.93
    Case Is = "AJACCIO"
        coef = 0.95
    Case Is = "SE"
        coef = 0.95
  End Select
  ActiveSheet.Range("E17").Value = coef
End Sub

EDIT : ou bien :

Option Explicit
Sub coefficient()
Dim secteur As String
Dim coef As Double
  secteur = UserForm1.ComboBox1_Secteur.Value
  Select Case secteur
    Case "PON"
        coef = 0.9
    Case "POS", "AJACCIO", "SE"
        coef = 0.95
    Case "BALAGNE"
        coef = 0.93
  End Select
  ActiveSheet.Range("E17").Value = coef
End Sub

bonjour,

Ce n'est pas très cohérent : Le code des bojets du USerform à vocation à rester dans le module du UserForm...

Modifier comme suit (adapter avec le véritable nom de ton Userform et le véritable nom de la feuille cible :

Sub coefficient()
Dim secteur as string, coef as double
secteur = USerForm1.ComboBox1_Secteur.Value
Select Case secteur
    Case Is = "PON": coef = 0.9
    Case Is = "POS": coef = 0.95
    Case Is = "BALAGNE": coef = 0.93
    Case Is = "AJACCIO":  coef = 0.95
    Case Is = "SE": coef = 0.95
End Select
WorkSheets("blabla").Range("E17").Value = coef
End Sub

EDIT : HI ! Doublé sur le fil ...

Mais donner le nom de la feuille est préférable à ActiveSheet (en effet le Userform peut être utilisé et faire référence à une autre feuille que la feuille active...)

A+

Ce n'est pas très cohérent : Le code des bojets du USerform à vocation à rester dans le module du UserForm...

... donner le nom de la feuille est préférable à ActiveSheet (en effet le Userform peut être utilisé et faire référence à une autre feuille que la feuille active...)

Tout à fait d'accord , mais le plus judicieux serait de créer une fonction :

Option Explicit
Function coefficient(secteur As String) As Double
  Select Case secteur
    Case "PON": coefficient = 0.9
    Case "POS", "AJACCIO", "SE": coefficient = 0.95
    Case "BALAGNE": coefficient = 0.93
  End Select
End Function

Merci à tous, ça fonctionne. Rajouter "UserForm." suffit je ne sais pas pourquoi je n'y ai pas pensé.

Par contre, quel est la différence entre function et sub ?

bonjour,

La fonction renvoie une valeur à l'appelant : ici le Userform mais elle pourrait être appelée directement par la feuille.

La Sub écrit directement sur la feuille.

A+

Bonjour,

Exemple d'utilisation de la fonction :

1) Dans le module Module1 :

Option Explicit
Function coefficient(secteur As String) As Double
  Select Case secteur
    Case "PON": coefficient = 0.9
    Case "POS", "AJACCIO", "SE": coefficient = 0.95
    Case "BALAGNE": coefficient = 0.93
  End Select
End Function

2) Et dans le formulaire Userform1 :

Private Sub CommandButton1_Click()
   Worksheets("xxxx").Range("E17").Value = Module1.coefficient(Me.ComboBox1_secteur.Value)
End Sub
Rechercher des sujets similaires à "erreur objet requis"