IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

saisie dans une quatrième combobox


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 165
    Points : 68
    Points
    68
    Par défaut saisie dans une quatrième combobox
    bonsoir,

    J'ai des combox(4) qui sont dépendants les uns des autres,
    les 3 premiers combobox sont bien alimentés par la base de donnée mais le quatriéme ne l'est pas.
    voilà mon code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub AjouterItem(ByRef oCollection As Collection, ByVal strItem As String)
        Dim oObjet As Object
        Dim ValeurPresente As Boolean
        Dim i As Long
     
        For i = 1 To oCollection.Count
            If oCollection.Item(i) = strItem Then
                ValeurPresente = True
                Exit Sub
            End If
        Next i
     
        If Not ValeurPresente Then oCollection.Add strItem
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Private Sub UserForm_Initialize()
        Dim Cellule As Range
        Dim Balan As Range
        Dim calle As Range
        Dim Translist As Range
        Dim oCollection As New Collection
        Dim i As Long
     
        For Each Cellule In Feuil4.Range("a2:a" & Feuil4.Range("a" & Rows.Count).End(xlUp).Row)
            AjouterItem oCollection, Cellule.Value
         Next Cellule
     
          For i = 1 To oCollection.Count
            ComboBox1.AddItem oCollection.Item(i)
        Next i
         For Each Balan In Feuil4.Range("b2:b" & Feuil4.Range("b" & Rows.Count).End(xlUp).Row)
            AjouterItem oCollection, Balan.Value
         Next Balan
     
        For i = 1 To oCollection.Count
            ComboBox2.AddItem oCollection.Item(i)
        Next i
     
          For Each calle In Feuil4.Range("c2:c" & Feuil4.Range("c" & Rows.Count).End(xlUp).Row)
            AjouterItem oCollection, calle.Value
         Next calle
     
        For i = 1 To oCollection.Count
            ComboBox3.AddItem oCollection.Item(i)
        Next i
     
            For Each Translist In Feuil4.Range("d2:d" & Feuil4.Range("d" & Rows.Count).End(xlUp).Row)
            AjouterItem oCollection, Translist.Value
         Next Translist
     
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Private Sub ComboBox3_Change()
     
        Dim oCollection As New Collection
        Dim i As Long
        Dim calle As Range
     
            ComboBox4.Clear
     
        ' Itération sur chaque cellule de d et appel de la procédure d'ajout
        For Each calle In Feuil4.Range("d2:d" & Feuil4.Range("d" & Rows.Count).End(xlUp).Row)
            If calle(1, 0).Value = ComboBox3.Value Then AjouterItem oCollection, calle.Value
        Next calle
     
        For i = 1 To oCollection.Count
            ComboBox4.AddItem oCollection.Item(i)
        Next i
    End Sub
    dans le sous programme j'ai mis que la partie "Private Sub ComboBox3_Change"

  2. #2
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Si le UserForm est déjà initialisé, il faut le "rafraîchir" après avoir chargé la Combo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For i = 1 To oCollection.Count
            ComboBox4.AddItem oCollection.Item(i)
        Next i
    Me.Repaint '<-- réessaye en ajoutant cette ligne
    End Sub

  3. #3
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 165
    Points : 68
    Points
    68
    Par défaut pb saisie 4 combox
    Citation Envoyé par fring Voir le message
    Si le UserForm est déjà initialisé, il faut le "rafraîchir" après avoir chargé la Combo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For i = 1 To oCollection.Count
            ComboBox4.AddItem oCollection.Item(i)
        Next i
    Me.Repaint '<-- réessaye en ajoutant cette ligne
    End Sub
    j'ai beau essayée, cette solution mais ça donne aucun effet

    je continue à ramé, donc

    on m'a dit une fois "tant que je rame j'avance" !

  4. #4
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    bah... de toute façon, je pense que dans ton cas la fonction Repaint est nécessaire.

    Teste ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MsgBox oCollection.Count '<-- pour vérifier ce que renvoit oCollection.Count
    For i = 1 To oCollection.Count
         MsgBox oCollection.Item(i) '<-- pour vérifier ce que renvoient les Items
    Next i

  5. #5
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 165
    Points : 68
    Points
    68
    Par défaut pb saisie 4 combox
    Citation Envoyé par fring Voir le message
    bah... de toute façon, je pense que dans ton cas la fonction Repaint est nécessaire.

    Teste ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MsgBox oCollection.Count '<-- pour vérifier ce que renvoit oCollection.Count
    For i = 1 To oCollection.Count
         MsgBox oCollection.Item(i) '<-- pour vérifier ce que renvoient les Items
    Next i
    cela me renvoie un msg "0"

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Teste ça. En rouge, la correction apportée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub ComboBox3_Change()
        Dim oCollection As New Collection
        Dim i As Long
        Dim calle As Range
            ComboBox4.Clear
        ' Itération sur chaque cellule de d et appel de la procédure d'ajout
        For Each calle In Feuil4.Range("d2:d" & Feuil4.Range("d" & Rows.Count).End(xlUp).Row)
            If calle(1, 0).Value = ComboBox3.Value Then oCollection.Add calle.Value
        Next calle
        
        For i = 1 To oCollection.Count
            ComboBox4.AddItem oCollection(i)
        Next i
    End Sub
    Si la condition que tu mets est correcte, ce code fonctionne.
    bonne nuit

  7. #7
    Membre du Club
    Inscrit en
    Avril 2008
    Messages
    165
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 165
    Points : 68
    Points
    68
    Par défaut
    Si la condition que tu mets est correcte, ce code fonctionne.
    bonne nuit

    Oui merci pour le code cela fonctionne mais le souci , et que sur le combox4 cela affiche les doublons!

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Private Sub ComboBox3_Change()
        Dim oCollection As New Collection
        Dim i As Long
        Dim calle As Range
            ComboBox4.Clear
        ' Itération sur chaque cellule de d et appel de la procédure d'ajout
        For Each calle In Feuil4.Range("d2:d" & Feuil4.Range("d" & Rows.Count).End(xlUp).Row)
            If calle(1, 0).Value = ComboBox3.Value Then oCollection.Add calle.Value
        Next calle
        
        For i = 1 To oCollection.Count
            'Ce sont ces deux lignes qui font tout 
            ComboBox4 = oCollection(i)
            If ComboBox4.ListIndex = -1 Then _
            ComboBox4.AddItem oCollection(i)
        Next i
    End Sub
    Vérifie à chaque tour de roue que l'item n'est pas déjà dans le combo.
    Bonne soirée

  9. #9
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Apparement Repaint n'est pas nécessaire, je pensais qu'à partir du moment où le UserForm était initialisé avant de charger la Combo, qu'il fallait rafraîchir l'affichage.

    Salut Ousk

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Récupérer la valeur saisie dans une ComboBox
    Par Nonno 94 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 12/12/2013, 14h56
  2. Réponses: 0
    Dernier message: 06/05/2013, 14h57
  3. Réponses: 4
    Dernier message: 08/03/2009, 13h13
  4. Interdire la saisie dans une combobox
    Par natie_49 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 19/12/2006, 12h27
  5. Vitesse de saisie dans une combobox.
    Par Delphi-ne dans le forum Delphi
    Réponses: 2
    Dernier message: 12/10/2006, 13h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo