Valeur par défault variable, Combobox, VBA.

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

  1. bonjour
    est ce que
    Me.ComboBox3.Text = Range("A1").Value
    répond à la question?
    bonne suite
    0
    1. 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
      1. 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
        1. Re,

          Je travail sur Excel 2003. Je ne vois pas cette propriété dans la combobox? :(
          0
          1. 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
            1. 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
              1. 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
                1. 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
                2. Salut :) J'ai changer le change en selection, et en fait ça vide juste ma listbox qui dépend de la combobox. ^^.
                  0
              2. 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
                1. 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
                  1. 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
                  2. 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