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 :

trier une combox sans affecter la colonne source?[15/02/2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Enseignant
    Inscrit en
    Février 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2007
    Messages : 9
    Par défaut trier une combox sans affecter la colonne source?[15/02/2007]
    Rebonjour, je suis confronter à un nouveau problème.
    Voila dans mon application j'ai créé une userform avec plusieurs combox. J'ai joins une image de ma fenetre pour exposer le probleme que je me pose. Dans mes combox, je retrouve la liste exacte de toutes mes cellules de la colonne source donc egalement les cellules vides.
    j'aimerais voir apparaitre que les cellules qui sont différentes mais en aucun cas cela doit affecter ma colonne source.
    Y a til un moyen de realiser ce que je veux? Ai-je beaucoup de choses a modifier sur ma macro? (cf ci-dessous).
    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
    Sub sortir_outil()
        Load USF_Sortie
        With USF_Sortie
        .CBX_posteT.List = Sheets("Réserve").Range("C2:C20").Value
        .CBX_posteT.ListIndex = 0
        .CBX_operationT.List = Sheets("Réserve").Range("A2:A20").Value
        .CBX_operationT.ListIndex = 0
        .CBX_afficheppT.List = Sheets("MagasinT").Range("B2:B600").Value
        .CBX_afficheppT.ListIndex = 0
        .CBX_affichep.List = Sheets("MagasinT").Range("C2:C600").Value
        .CBX_affichep.ListIndex = 0
        .CBX_afficheoutilT.List = Sheets("MagasinT").Range("D2:D600").Value
        .CBX_afficheoutilT.ListIndex = 0
     
        End With
        USF_Sortie.Show
    End Sub
    est ce dans les propriétés de mes combox?

    Dois-je creer un sous programme?

    merci de votre attention
    Images attachées Images attachées  

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Voici une fonction que j'avais crée

    1 - Je mets mes données dans un tableau en enlevant les doublons
    2 - Je tri la liste dans l'ordre croissant
    3 - Je met mes données dans ma combo


    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    Public Sub RemplirComboAlpha(cboCombobox As MSForms.ComboBox, strFeuille As String, strColDepart As String, lngRowDepart As Long)
        ' ***** cette procédure va remplir n'importe qu'elle combobox en récupérant les données
        ' ***** d'une colonne, en enlevant les doublons et en faisant un tri *****
        Application.Cursor = xlWait
        ' ***** déclaration des variables *****
        Call Liaison
        Set wks = BaseDorsal.Worksheets(strFeuille)
        Dim i As Long
        Dim lngIncrementTab As Long
        lngIncrementTab = 1
        Dim tabTri As Variant
        ReDim tabTri(1 To 1)
        cboCombobox.Clear
        ' ***** lancement de la procédure pour mettre les données dans une tableau *****
        wks.Range("" & strColDepart & lngRowDepart & "", wks.Range("" & strColDepart & lngRowDepart & "").End(xlDown)).AdvancedFilter Action:=xlFilterInPlace, _
                     criteriarange:=wks.Range("" & strColDepart & lngRowDepart & "", wks.Range("" & strColDepart & lngRowDepart & "").End(xlDown)), unique:=True
        For i = lngRowDepart To CLng(wks.Range("" & strColDepart & lngRowDepart & "").End(xlDown).Row)
            If wks.Range("" & strColDepart & i & "").EntireRow.Hidden = False Then
                tabTri(i - 1) = wks.Range("" & strColDepart & i & "").Value
            End If
            ' redimensionnement du tableau
            lngIncrementTab = lngIncrementTab + 1
            ReDim Preserve tabTri(1 To lngIncrementTab)
        Next i
        Set wks = Nothing
        ' ***** tri de la liste dans l'ordre alphabétique *****
        Dim j As Long
        Dim temp
        For i = LBound(tabTri) To UBound(tabTri) - 1
            For j = i + 1 To UBound(tabTri)
                If tabTri(i) > tabTri(j) Then
                    temp = tabTri(i)
                    tabTri(i) = tabTri(j)
                    tabTri(j) = temp
                End If
            Next j
        Next i
     
        ' ***** remplissage de la liste *****
        cboCombobox.AddItem "(TOUS)"
        For i = LBound(tabTri) To UBound(tabTri) - 1
            If tabTri(i) = "" Or IsNull(tabTri(i)) Then
            Else
                cboCombobox.AddItem tabTri(i)
            End If
        Next i
        cboCombobox.Value = "(TOUS)"
        Application.Cursor = xlDefault
     
    End Sub
    Si cela peut t'aider

    Starec

  3. #3
    Membre habitué
    Profil pro
    Enseignant
    Inscrit en
    Février 2007
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Février 2007
    Messages : 9
    Par défaut
    MERCI POUR TON AIDE,

    je vais essayer.Mais en utilisant ta soluce, je risque de modifier ma colonne source.Il faudrait donc que je fasse une copie de cette colonne je pense.
    je vais voir. en tout cas merci.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Re

    Non tu ne modifieras pas ta colonne source, j'ai écrit :

    1 - Je mets mes données dans un tableau en enlevant les doublons
    2 - Je tri la liste dans l'ordre croissant
    3 - Je met mes données dans ma combo

    Starec

Discussions similaires

  1. Réponses: 4
    Dernier message: 25/02/2015, 09h33
  2. [12.5] Exporter le resultat d'une procédure sans afficher les colonnes
    Par bossun dans le forum Adaptive Server Enterprise
    Réponses: 7
    Dernier message: 07/04/2010, 15h39
  3. Réponses: 8
    Dernier message: 10/10/2007, 16h51
  4. [PostGreSQL] Trier une liste ayant deux requêtes comme source
    Par Mat_DZ dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 09/08/2006, 10h51
  5. Réponses: 2
    Dernier message: 03/05/2006, 15h33

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