ComboBOX ADDITEM incrémentation

recovery

XLDnaute Junior
Bonjour à tous

besoin d'aide ma combobox reste désespérément vide depuis mon classeur A j'aimerais alimenter cette dernière à chaque rentrée d'une donnée supplémentaire dans un classeur Source celui ci serait fermé voici un bout de code ainsi que les deux fichiers excel merci pour votre aide

Private Sub MiseAjour()
Chemin = ActiveWorkbook.Path
Set Source = GetObject(Chemin & "\Source.xls")


If ComboBox1.ListCount >= 1 Then
Dim ElementListe As Integer
Dim NbreElt As Integer
NbreElt = cboNom.ListCount - 1
For ElementListe = NbreElt To 0 Step -1
ComboBox1.RemoveItem (ElementListe)
Next ElementListe
End If



Dim compteur As Long
Dim AjoutAuteur As String
For compteur = 2 To Source.Sheets(1).Range("A1").End(xlDown).Row
AjoutAuteur = Source.Sheets(1).Range("A" & compteur).Value
On Error Resume Next
ComboBox1.AddItem (AjoutAuteur)
Next compteur
End Sub
 

Pièces jointes

  • Classeur1.xls
    39.5 KB · Affichages: 58
  • Source.xls
    13.5 KB · Affichages: 42
  • Classeur1.xls
    39.5 KB · Affichages: 64
  • Source.xls
    13.5 KB · Affichages: 41
  • Classeur1.xls
    39.5 KB · Affichages: 60
  • Source.xls
    13.5 KB · Affichages: 43

Dranreb

XLDnaute Barbatruc
Re : ComboBOX ADDITEM incrémentation

Bonsoir.
Vous devriez mettre Option Explicit en tête de chaque module.
Ça vous permettrait de voir plein de choses qui ne sont ni déclarées ni définies dans votre Module2. Et qui portent en plus des noms identiques à ceux d'objets internes à l'Userform1.
À +
 

Dranreb

XLDnaute Barbatruc
Re : ComboBOX ADDITEM incrémentation

Qu'est-ce que vous voulez faire exactement ?
Expliquez un scénario plus précis des manœuvres qui doivent être effectuées et des résultats attendus.
Est-ce que vous souhaitez, par exemple que l'userform soit affiché à l'ouverture du classeur et qu'il reste affiché en permanence sans empêcher quoi que ce soit, et qu'à chaque activation d'un autre classeur, la liste du ComboBox soit remplacée par le contenu de la colonne A du classeur activé ?
P.S. Pour le moment quand on clique sur l'ellipse, l'Userform1 est affiché et le ComboBox a sa liste garnie des prénoms de la colonne A de la Feuil1. À partir de là, qu'est-ce qu'on doit pouvoir faire ? L'userfoem est affiché en modal et il n'y a pas de bouton pour y faire quoi que ce soit d'autre qu'un choix dans le ComboBox.
À +
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : ComboBOX ADDITEM incrémentation

Bonjour recovery, Bernard,

Pourquoi pas une solution archi-simple (et classique) comme dans le fichier joint ?

Certains préfèrent les solutions compliquées, désolé :rolleyes:

A+
 

Pièces jointes

  • Classeur(1).xls
    59.5 KB · Affichages: 64
  • Source.xls
    15.5 KB · Affichages: 51
  • Classeur(1).xls
    59.5 KB · Affichages: 66
  • Source.xls
    15.5 KB · Affichages: 49
  • Classeur(1).xls
    59.5 KB · Affichages: 65
  • Source.xls
    15.5 KB · Affichages: 53

Dranreb

XLDnaute Barbatruc
Re : ComboBOX ADDITEM incrémentation

Ah, erreur de ma part:
La propriété ShowModal du Userform est à True mais il est affiché avec UserForm1.Show 0, ce qui revient au même que si elle était à False. Donc on peut lancer quelque chose de l'extérieur.
Alors dans l'userform:
VB:
Private Sub UserForm_Initialize()
ComboBox1.SetFocus
Me.ComboBox1.List = Feuil1.Range("A1:A" & [A65000].End(xlUp).Row).Value
End Sub
Dans le module, je suis arriver à faire tourner ça:
VB:
Private Sub MiseAjour()
Dim Source As Workbook
On Error Resume Next
Set Source = Workbooks("Source.xls")
If Err Then Err.Clear: Workbooks.Open ThisWorkbook.Path & "\Source.xls": Set Source = ActiveWorkbook
On Error GoTo 0
With Source.Sheets(1)
   UserForm1.ComboBox1.List = .Range("A1:A" & .[A65536].End(xlUp).Row).Value
   End With
Source.Close False
End Sub
Mais ça ne me paraît quand même pas très orthodoxe de modifier des contrôles de l'extérieur d'un userform. Mais je dois me tromper, vu que c'est possible puisqu'ils y sont accessibles en tant que propriétés, au même titre que des variables et procédures qui y seraient déclarées Public.
Cela dit la Sub MiseAjour, elle, est Private. Comment comptez vous la lancer ?
P.S. Un conseil: n'utilisez jamais RowSource, surtout dans les macros. Le seul cas ou ça fonctionne bien à coup sûr c'est si elle est fixée définitivement dans la fenêtre de propriétés du userform comme un nom dans le classeur avec une référence non dynamique. On ne peut pas changer la liste d'un ComboBox qui a sa propriété RowSouce définie.
À +
 
Dernière édition:

Discussions similaires

Réponses
11
Affichages
409

Statistiques des forums

Discussions
312 928
Messages
2 093 701
Membres
105 789
dernier inscrit
dulcioso