Valeur par défault variable, Combobox, VBA.

Julistage Messages postés 31 Statut Membre -  
Julistage Messages postés 31 Statut Membre -
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. ccm81 Messages postés 11033 Statut Membre 2 434
     
    bonjour
    est ce que
    Me.ComboBox3.Text = Range("A1").Value
    répond à la question?
    bonne suite
    0
  2. Julistage Messages postés 31 Statut Membre 3
     
    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
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
  4. Julistage Messages postés 31 Statut Membre 3
     
    Re,

    Je travail sur Excel 2003. Je ne vois pas cette propriété dans la combobox? :(
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
  7. Polux31 Messages postés 7219 Statut Membre 1 204
     
    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
  8. Julistage Messages postés 31 Statut Membre 3
     
    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. Polux31 Messages postés 7219 Statut Membre 1 204
       
      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. Julistage Messages postés 31 Statut Membre 3
       
      Salut :) J'ai changer le change en selection, et en fait ça vide juste ma listbox qui dépend de la combobox. ^^.
      0
  9. ccm81 Messages postés 11033 Statut Membre 2 434
     
    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
  10. Julistage Messages postés 31 Statut Membre 3
     
    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. Polux31 Messages postés 7219 Statut Membre 1 204
       
      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. Julistage Messages postés 31 Statut Membre 3
       
      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