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 :

Incapable de remplir un Combobox [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 4
    Par défaut Incapable de remplir un Combobox
    Bonjour,

    Le but de ce code est de créer un lexique indexé. Les mots sont ajoutés puis triés par ordre alphabétique.
    Pour la navigation rapide, j'ai créé une colonne qui reprend la première lettre du premier mot commençant par une nouvelle lettre. Ensuite, j'ai décidé d'utilisé un Combobox qui va référencer les lettres de l'alphabets présentes dans cette colonne. Mais je n'arrive pas à utiliser la fonction AddItem. (en ligne 34)

    Je suis novice en vba, et en code tout court, donc il se peut que le code ne soit pas optimal. A vous de me le dire.
    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
    37
    38
    39
    40
    41
    42
     
    Sub Sorting()
    '
    ' Tri des mots et indexation
     
    Dim i As Integer
    Dim Alph As Object
     
    If ActiveSheet.OLEObjects.Count < 1 Then
        With Range("K3")
        Set Alph = ActiveSheet.OLEObjects.Add(ClassType:="Forms.Combobox.1", Link:=False, DisplayAsIcon:=False)
        End With
    End If
    'crée la liste
     
     
    If Not (IsEmpty(Range("E3")) Or IsEmpty(Range("E4"))) Then
     
        Rows("10:10").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Range("B10").Value = Range("E3").Value
        Range("F10").Value = Range("E4").Value
        Range("E3:E4").ClearContents
    'incrémente le lexique
     
        Range("B10:F300").Sort Key1:=Range("B10"), Order1:=xlAscending
    'tri le lexique
     
        n = Application.WorksheetFunction.CountA(Range("B:B"))
        For i = 10 To (n + 9)
            If Left(Range("B" & i), 1) <> Left(Range("B" & i - 1), 1) Then
                Range("A" & i) = Left(Range("B" & i), 1)
            Else: Range("A" & i).ClearContents
            End If
            If Not IsEmpty(Range("A" & i)) Then Alph.AddItem Sheets("Sheet1").Range("A" & i)
     
        Next
    'complète la liste
     
    Else: Exit Sub
    End If
     
    End Sub
    Merci

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Es-tu certain du Sheet1 ici ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not IsEmpty(Range("A" & i)) Then Alph.AddItem Sheets("Sheet1").Range("A" & i)
    Dans le reste de ton code, tu n'en fais pas mention explicitement...

  3. #3
    Membre Expert Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Par défaut
    Bonsoir le fil, bonsoir le forum,

    Essaie comme ça :

    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
    Sub Sorting()
    '
    ' Tri des mots et indexation
    Dim i As Integer
    Dim Alph As OLEObject
    Dim O As Worksheet
     
    Set O = Sheets("Sheet1")
    If O.OLEObjects.Count < 1 Then
        With O.Range("K3")
            .Select
            Set Alph = O.OLEObjects.Add(ClassType:="Forms.Combobox.1", Link:=False, DisplayAsIcon:=False)
        End With
    End If
    'crée la liste
    If Not (IsEmpty(O.Range("E3")) And IsEmpty(O.Range("E4"))) Then
        O.Rows("10:10").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        O.Range("B10").Value = O.Range("E3").Value
        O.Range("F10").Value = O.Range("E4").Value
        O.Range("E3:E4").ClearContents
    'incrémente le lexique
        O.Range("B10:F300").Sort Key1:=O.Range("B10"), Order1:=xlAscending
    'tri le lexique
        n = Application.WorksheetFunction.CountA(O.Range("B:B"))
        For i = 10 To (n + 9)
            If Left(O.Range("B" & i), 1) <> Left(O.Range("B" & i - 1), 1) Then
                O.Range("A" & i) = Left(O.Range("B" & i), 1)
            Else: O.Range("A" & i).ClearContents
            End If
            If Not IsEmpty(O.Range("A" & i)) Then ActiveSheet.ComboBox1.AddItem O.Range("A" & i).Value
        Next
    End If
    End Sub

  4. #4
    Expert confirmé Avatar de casefayere
    Homme Profil pro
    RETRAITE
    Inscrit en
    Décembre 2006
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations professionnelles :
    Activité : RETRAITE
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2006
    Messages : 5 138
    Par défaut
    Bonsoir,
    sans analyser plu loin, je pense qu'il serait utile d'utiliser "ArrayList" pour soulager le code, le tri en sera d'autant plus facile, ainsi que l'incrémentation, je ne l'ai découvert que récemment et, et, et. qu'est-ce que c'est pratique
    Cordialement,
    Dom
    _____________________________________________
    Vous êtes nouveau ? pour baliser votre code, cliquer sur cet exemple : Anomaly
    pensez à cliquer sur :resolu: si votre problème l'est
    Par contre, il est désagréable de voir une discussion résolue sans message final du demandeur (satisfaction, désarroi, remerciement, conclusion...)

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2016
    Messages : 4
    Par défaut
    Merci messieurs,

    Je regarde ça dans la journée et je vous ferai mon rapport.

    Edit 1 : ça arrive, je suis dessus

    Alors ça passe nickel, merci Thautheme.

    Est-ce que tu peux m'expliquer quel était le problème ?

    Une dernière petite question même si c'est un peu hs : peut on prioriser le scroll molette dans le combobox plutôt que dans la feuille quand celui-ci est ouvert ?

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

Discussions similaires

  1. [C#] Remplire un comboBox avec un fichier XML
    Par Roach dans le forum Windows Forms
    Réponses: 3
    Dernier message: 03/09/2005, 20h45
  2. Comment remplir un ComboBox avec le nom des feuilles Excel ?
    Par libracom dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 27/06/2005, 15h14
  3. [C#] Remplir une combobox avec le champs d'une table Access
    Par Damsou dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/06/2005, 15h31
  4. [VB.NET] Remplir une ComboBox avec une requete sql
    Par graphicsxp dans le forum Windows Forms
    Réponses: 6
    Dernier message: 22/03/2005, 15h29
  5. Réponses: 2
    Dernier message: 26/07/2004, 13h34

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