Valeur par défault variable, Combobox, VBA.

Fermé
Julistage Messages postés 29 Date d'inscription lundi 20 septembre 2010 Statut Membre Dernière intervention 19 septembre 2014 - 18 nov. 2010 à 16:52
Julistage Messages postés 29 Date d'inscription lundi 20 septembre 2010 Statut Membre Dernière intervention 19 septembre 2014 - 22 nov. 2010 à 16:43
Bonjour à tous,

J'ai un petit soucis avec ma combobox. Je souhaiterais qu'elle affiche une valeur par défault. Ce qui complique un petit peu, c'est que la valeur par défault se trouve dans la cellule A1, et elle varie.

J'ai essayer quelques trucs, mais cela ne marche pas. ^^ Quelqu'un aurait une idée par rapport à ça s'il vous plait? :)
Voilà mon petit bout de code: (En gras ce qui ne marche pas :( )

Private Sub ComboBox3_Change()                         
Dim k, j As Integer

     Me.ListSources.Clear
        
        For j = 1 To Range("AJ65536").End(xlUp).Row
            If Cells(j, 35) = ComboBox3.Value Or (Val(ComboBox3.Value) = Cells(j, 35) And Val(ComboBox3.Value) = ComboBox3.Value) Then
                Me.ListSources.AddItem Workbooks("Correspondance vFinal 2.3.xls").Sheets("infos").Cells(j, 36).Value
                k = k + 1
                Me.ListSources.List(k - 1, 1) = Workbooks("Correspondance vFinal 2.3.xls").Sheets("infos").Cells(j, 37)
            End If
        Next j
Me.ComboBox3.SelectedItem = Range("A1").Value
End Sub


J'ai aussi essayer avec:
Me.ComboBox3.ListIndex = Range("A1").Value


Merci d'avance :) Bonne soirée!! :)

9 réponses

ccm81 Messages postés 10856 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 10 mai 2024 2 404
18 nov. 2010 à 17:33
bonjour
est ce que
Me.ComboBox3.Text = Range("A1").Value
répond à la question?
bonne suite
0
Julistage Messages postés 29 Date d'inscription lundi 20 septembre 2010 Statut Membre Dernière intervention 19 septembre 2014 3
19 nov. 2010 à 09:26
Bonjour et merci de te pencher sur cette question :).

ça marche en effet, mais ça bloque ma combobox sur cette valeur. Impossible de changer de valeur par la suite :(. Et bizarrement ça m'a ajouté pleins de doublons :x y aurait-il une autre méthode ?
0
ccm81 Messages postés 10856 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 10 mai 2024 2 404
19 nov. 2010 à 09:58
re
et en mettant la propriete LinkedCell de la combobox3 à A1 ?
pour l'ajout des doublons, est ce que quelque part il n'y a pas un remplissage de la combobox exécuté intempestivement. Si oui, faire un .Clear avant
bon courage
0
Julistage Messages postés 29 Date d'inscription lundi 20 septembre 2010 Statut Membre Dernière intervention 19 septembre 2014 3
19 nov. 2010 à 11:43
Re,

Je travail sur Excel 2003. Je ne vois pas cette propriété dans la combobox? :(
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ccm81 Messages postés 10856 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 10 mai 2024 2 404
19 nov. 2010 à 11:53
re
j'ai aussi excel 2003 et
ta combobox a certainement été crée avec la barre d'outils formulaire.
il vaudrait peut être mieux la créer avec la barre d'outils controles on a ainsi un acces à plus de propriétés. la combobox et son code seront alors liés à la feuille (le code ne sera plus dans un module)
si cette option te tentes
Affichage/Boite a outils controles et la petite equerre pour basculer du mode création au mode exécution. Tu pourra alors
- avec un clic droit avoir un acces direct a ses propriétés
- transporter ton code dans la feuille
bonne suite
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
19 nov. 2010 à 13:43
Bonjour ;o)

As-tu une procédure qui initialise ta combo ? Si oui remplace

Me.ComboBox3.SelectedItem = Range("A1").Value


par l'appel à ta procédure d'initialisation de ta combo.

Dans ta procédure d'initialisation tu dois avoir un combo.Clear en début

et un combo.Text = Worksheets(1).Range("A1").Value en fin de procédure.

;o)
0
Julistage Messages postés 29 Date d'inscription lundi 20 septembre 2010 Statut Membre Dernière intervention 19 septembre 2014 3
19 nov. 2010 à 15:32
Salut à tous les 2 :)

Bon la seule chose que j'ai réussie à faire c'est de faire une boucle infinie lol.
J'ai en effet une procédure qui initialise la combo.

  ComboBox3.clear  
     For j = 1 To Range("AI65536").End(xlUp).Row
        ComboBox3 = Range("AI" & j)
        If ComboBox3.ListIndex = -1 Then ComboBox3.AddItem Range("AI" & j)
    Next j


En fait ma combobox se trouve justement sur un userform.
Je vais continuer à essayer de trifouiller le code. :)
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
19 nov. 2010 à 17:22
Autre piste ...

Tu es dans l'évènement change() de la combo. Essaie avec le même code dans l'évènement Selection().

;o)
0
Julistage Messages postés 29 Date d'inscription lundi 20 septembre 2010 Statut Membre Dernière intervention 19 septembre 2014 3
22 nov. 2010 à 09:24
Salut :) J'ai changer le change en selection, et en fait ça vide juste ma listbox qui dépend de la combobox. ^^.
0
ccm81 Messages postés 10856 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 10 mai 2024 2 404
22 nov. 2010 à 11:00
re

et en mettant la propriété ControlSource à A1 puisque la combobox est créee dans une userform avec la boite a outils controles

bon courage
0
Julistage Messages postés 29 Date d'inscription lundi 20 septembre 2010 Statut Membre Dernière intervention 19 septembre 2014 3
22 nov. 2010 à 15:23
re, Alors je dois m'y prendre comme un pied, mais cela ne marche pas non plus :x... Dans la propriété control source j'ai mis: (sachant que ma feuille est la feuille "infos") infos!A1 c'est peut-être pas la bonne syntaxe?
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
22 nov. 2010 à 16:34
Non tu ne t'y prends pas comme un pied, c'est simplement pas la bonne propriété.

Le problème doit venir d'ailleurs.

Que veux tu faire quand tu fais ta boucle :
ComboBox3.clear  
     For j = 1 To Range("AI65536").End(xlUp).Row
        ComboBox3 = Range("AI" & j)
        If ComboBox3.ListIndex = -1 Then ComboBox3.AddItem Range("AI" & j)
    Next j


Remplir ta combo ? si oui alors :

ComboBox3.clear  
     For j = 1 To Range("AI65536").End(xlUp).Row
        ComboBox3.AddItem Range("AI" & j)
    Next j

 ComboBox3.Text = Worksheets(1).Range("A1").Value


Je ne comprends pas pourquoi cette ligne

If ComboBox3.ListIndex = -1 Then ComboBox3.AddItem Range("AI" & j)


Elle fait quoi au juste ?
0
Julistage Messages postés 29 Date d'inscription lundi 20 septembre 2010 Statut Membre Dernière intervention 19 septembre 2014 3
Modifié par Julistage le 22/11/2010 à 16:45
Elle me permet de remplir ma combobox sans doublons.

En fait je procède en deux parties. Dans une première fonction, je remplie la combobox, et dans une seconde je lui dis que ce qui se trouve dans la listbox doit varier en fonction de la selection.

d'ou:
sub main() 
... 
... 
... 
    'Récupère les données de la colonne A... 
    For j = 1 To Range("AI65536").End(xlUp).Row 
        ComboBox3 = Range("AI" & j) 
        '...et filtre les doublons 
        If ComboBox3.ListIndex = -1 Then ComboBox3.AddItem Range("AI" & j) 
    Next j 
... 
... 
... 
End Sub 

Et
Private Sub ComboBox3_change()                          'Lie la ComboBox avec la Listbox sur l'onglet 1. ("Fenêtre de contrôle") 
Dim k, j, i As Integer 
Dim NomOnglet As Variant 

     Me.ListSources.Clear 
     Me.ListBox26.Clear 

        For j = 1 To Range("AJ65536").End(xlUp).Row 
            If Cells(j, 35) = ComboBox3.Value Or (Val(ComboBox3.Value) = Cells(j, 35) And Val(ComboBox3.Value) = ComboBox3.Value) Then 
                Me.ListSources.AddItem Workbooks("Correspondance vFinal 2.3.xls").Sheets("infos").Cells(j, 36).Value 
                k = k + 1 
                Me.ListSources.List(k - 1, 1) = Workbooks("Correspondance vFinal 2.3.xls").Sheets("infos").Cells(j, 37) 
                 
            End If 
        Next j 
End sub


La combobox contient le nom de tous les onglets du fichier.
Mais en fait ma fonction main utilise un onglet à un moment donné. ce nom d'onglet, je l'ai mis dans la cellule A1 de la feuille infos. Et je souhaiterais qu'à l'ouverture, ma combobox soit par défaut sur ce nom d'onglet, mais que j'ai malgré tout l'accès aux autres choix de la combobox et que je puisse la consulter.
0