[UserForm] Erreur d'exécution 70 : Accès refusé

Bonjour à tous,

Je bute sur un truc tout con... Sauf que j'ai une erreur d'exécution 70 qui me refuse l'accès.

Remarque: Je n'ai pas cette erreur, si avant d'exécuter le programme je suis dans la feuille "Liste_Formulaire". A contrario si une autre feuille que celle ci est active j'ai l'erreur 70.

Je veux alimenter une combobox avec le code suivant:

Private Sub UserForm_Initialize()

Dim Etat_Ligne As Integer

    Lbl_Nom_Projet_Tache = Range("NomProjet")

    Me.cmb_Etat_Tache.RowSource = "Liste_Formulaire!b3: b8"

    Etat_Ligne = 1
    While Cells(Etat_Ligne, 1) <> ""
        Me.cmb_Etat_Tache.AddItem (Cells(Etat_Ligne, 1))
        Etat_Ligne = Etat_Ligne + 1

    Wend

End Sub

Mon but est:

* Alimenter ma combobox avec la liste de valeur présente sur la feuille "Liste_Formulaire" range B3:B8

* A terme permettre aux utilisateurs d'ajouter des valeurs si nécessaire

Merci :)

bonjour,

si ma mémoire est bonne, tu ne peux pas utiliser les 2 méthodes conjointement. Ou bien tu utilises rowsource, ou bien tu utilises additem. Comme tu veux pouvoir ajouter des valeurs, tu dois utiliser additem.

Private Sub UserForm_Initialize()

    Dim Etat_Ligne As Integer

    Lbl_Nom_Projet_Tache = Range("NomProjet")

    For Each v In Range("Liste_Formulaire!b3:b8")
        Me.cmb_Etat_Tache.AddItem v.Value
    Next

    Etat_Ligne = 1
    Do While Cells(Etat_Ligne, 1) <> ""
        Me.cmb_Etat_Tache.AddItem (Cells(Etat_Ligne, 1))
        Etat_Ligne = Etat_Ligne + 1

    Loop

End Sub

Merci pour ta réponse.

Je n'ai plus l'erreur, par contre lorsque la feuille active lors de l'exécution de la commande est une feuille différente de la feuille contenant ma liste j'ai les valeurs des cellules A1:A3 qui s'ajoute dans la combobox...(en plus de celle de la feuille de liste)

Je ne vois même pas comment cela peut-être possible avec le code qui est écrit...

P.S.: A quoi va servir la boucle FOR EACH NEXT dans ta réponse ?

Bonjour le fil,

@h2so4, ta mémoire est bonne on ne peut pas définir une zone source et ajouter des valeurs

En revanche, le code correcte serait plutôt

Private Sub UserForm_Initialize()
  Dim Cel as Range
  For Each Cel In Sheets("Liste_Formulaire").Range("B3:B8")
    Me.cmb_Etat_Tache.AddItem Cel.Value
  Next
End Sub

Mais on peut garder également

Range("Liste_Formulaire!B3:B8")

A+

Yes !

Merci à tous les deux !

Question bonus: Si je veux prendre une liste plus longue (donc qui ne s'arrête pas à B8) et n'afficher dans la combobox que les valeurs qui sont différentes de vide. (afin d'éviter qu'il y ait beaucoup de blanc quand je déploie la liste déroulante de la combo dans le formulaire)

Merci encore

Re,

Dans ce cas,

Private Sub UserForm_Initialize()
  Dim Cel as Range, dLig as long
  With Sheets("Liste_Formulaire")
    ' Dernière ligne remplie de la colonne B de la feuille
    dLig = .range("B" & Rows.Count).End(XlUp).Row
    For Each Cel In.Range("B3:B" & dLig)
      If Cel <> "" then Me.cmb_Etat_Tache.AddItem Cel.Value
    Next Cel
  End With
End Sub

A+

Ca marche niquel, merci

Rechercher des sujets similaires à "userform erreur execution acces refuse"