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 :

[EX-XP] Ordonner une liste d'information


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 63
    Par défaut [EX-XP] Ordonner une liste d'information
    bonjour,

    j'ai un Userform et le code a reprendre, et voici l'interface :



    sur ce userform, j'ai actuellement 5 positions et c'est là que je bloque en therme d'idée ou de posibilité.

    je m'explique : aujourd'hui, j'ai 8 positions a gere donc il faut que je créer 3 position supplementaire => 3 combo.

    maintenant le gros probleme que je vais avoir, c'est que du jour au lendemain, je peux avoire 25 possitions a gerer et donc il faudrais que je recréer des combox et remettre le code a jours!

    le but finale est de gerer les une liste d'entré venant d'une colone d'EXCEL et de changer leur ordre en fonction des positions etablie dans ce USERFOMR.

    Et cette liste peux grandire suivant une note de service.

    j'espere que j'ai ete assez claire, sinon posez moi plus de question.

    en gros je ne sais pas comment gerer ce probleme.

    merci d'avance

    Via

  2. #2
    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
    Par défaut
    Déjà une question : Es-tu obligée de faire paraître toutes les "positions" sur l'userform ? Ou bien si une seule position est-elle intéressante "à la fois" ?

  3. #3
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour,

    Tu peux faire un userform avec une seule liste de choix et un bouton "ajouter une position".

    PGZ

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 63
    Par défaut
    heu je repond au 2 questions en meme temps

    je n'ai aucune obligation donc ca peux etre envisageable.

    donc je dirais oui mais comment gere la suite ??

    Via

    PS ( je n'ajoute pas une position puis que la liste correspond au nombre de position que je dois avoir, ou developpe)

  5. #5
    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
    Par défaut
    Si tu pouvais répondre à ma question... Là je ne vois pas ta réponse

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 63
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    Déjà une question : Es-tu obligée de faire paraître toutes les "positions" sur l'userform ? Ou bien si une seule position est-elle intéressante "à la fois" ?
    OUI, je peux faire apparaitre une seule position.

    mais c'est la suite que je voie pas.

    desolé je disais OUI pour les deux questions

    Via

  7. #7
    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
    Par défaut
    Alors, comme semble le suggèrer pgz, une liste variable selon "la note de service" proposant le choix des positions disponibles
    -> Où une sélection dans la liste affiche la liste de la position désirée, soit dans la même liste, soit dans une seconde liste.
    Chépasichuisbienclercsurcecouci

  8. #8
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    J'imagine que les positions ce sont des noms de colonnes.

    Je fais l'hypothèse que ce formulaire doit aussi bien pouvoir enregistrer de 1 à n positions, suivant la règle du moment et sans modification du classeur.

    Si on ne sait pas combien de colonnes (positions) il faut renseigner parce que ce nombre change périodiquement, on ne peut pas prévoir une liste de choix par colonne. On n'en prévoit donc qu'une.

    A partir de là, de 2 choses l'une : soit l'ordre de saisie des positions est signifiant (H1), soit il ne l'est pas (H2).

    H1. Une seule liste de choix et à chaque action [ajouter une position], on enregistre le contenu de la liste de choix. On peut d'aileurs prévoir une zone de liste non modifiable pour présenter ce qui a déjà été enregistré.

    H2. Une zone de liste modifiable (choix multiples) contenant toutes les positions possibles.

    Si j'ai compris le pb, bien sûr.

    PGZ

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 63
    Par défaut
    ok, je comprend ou vous voulez ne venir et je vais un peu plus preciser le cas que j'ai :

    on travail sur une liste de Sicav ou de FCP preferenciel.

    en gros c'est l'ordre prioritaire de vente ou d'achat de action

    dans la colonne "A" j'ai l'action a faire (action comptable).
    Donc en "A1" "ACHETER" et de "B1" a "B8" j'ai le nom des actions dans l'ordre de priorité.

    donc j'ai en gros ca :



    et suivant la note de service
    il faut que je modifie comme ca :




    Donc si je comprend bien :

    - je fait une liste, ce qui me permet en meme temps de compter les entrees.
    - je remplie une combo, ce qui me permet de selectionner une "action" de la liste

    et apres ....

    je construis une collection pour re-ecrire le fichier ??

    j'espere que j'ai tous compris dans vos explication ??

    Via

  10. #10
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Donc c'est plutôt H1: l'ordre est important.
    Citation Envoyé par viavba Voir le message
    - je fait une liste, ce qui me permet en meme temps de compter les entrees.
    - je remplie une combo, ce qui me permet de selectionner une "action" de la liste

    et apres ....
    Par exemple pour construire la liste "Vendre".
    L'opérateur sélectionne "Action1" dans la liste déroulante. Un Click sur [Ajouter] et la liste non modifiable enregistre "Action1".
    L'opérateur sélectionne "Action5" dans la liste déroulante. Après [Ajouter] la liste non modifiable contient :
    Action1
    Action5
    et ainsi de suite...
    Quand la liste contient
    Action1
    Action5
    ACtion3
    ...
    Action8
    Il ne reste qu'à valider.

    PGZ

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 63
    Par défaut
    ok je me remet dans le USRFORM et merci a vous deux pour les idées.

    je pense que je reviendrais sur ce poste avec des questions de code.

    merci beaucoup

    Via

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 63
    Par défaut
    bonjour,

    j'ai commencé a ecrire avec une collection et ca donn ca pour l'initialisation et annulé

    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
     
    Dim Titre As Collection
    Private Sub UserForm_Initialize()
     
        Set Titre = New Collection
        x = 3
    Do While ActiveWorkbook.Worksheets("Sicav_Placements").Range("A" & x).Value <> ""
        Titre.Add ActiveWorkbook.Worksheets("Sicav_Placements").Range("A" & x).Value
        x = x + 1
    Loop
    Dim IndexTitre As Integer
    IndexTitre = 1
     
    Do Until IndexTitre > Titre.Count
        Me.CbListeTitre.AddItem Titre.Item(IndexTitre)
        IndexTitre = IndexTitre + 1
    Loop
     
    Me.TBReference.SetFocus
     
    End Sub
    Private Sub CmBoutAnnuler_Click()
        Unload Me
    End Sub
    jusque la pas de probleme majeur.

    maintenant, je ne sais pas comment je vais gere les index de la collection quand je vais en choisir un

    plus en detail :

    je selectionne un titre et je clique sur le bouton, jusuqe la ca va

    maintenant, comment je retrouve l'item du titre selectionner pour le gere apres ???

    quelqu'un a la solution ??

    merci d'avance.

    Via

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Septembre 2008
    Messages : 63
    Par défaut
    voila ce que ca donne

    il me reste juste a recreer le tableau de donnné quand je clique sur terminer :

    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
     
    '=======================================================================================
    ' Module    : UsFNote
    ' Author    : Via
    ' Date      : 27/02/2009
    ' Purpose   : Mise en forme de la note des Actions
    '=======================================================================================
    Const Achat = "Ordre d'achat des Titres : "
    Const Vente = "Ordre de vente des Titres : "
        Dim IndexTitre As Integer
        Dim Titre As New Collection
        Dim OrdreAchat As New Collection
        Dim OrdreVente As New Collection
        Dim Date_de_La_Note As Date
        Dim Action_Treso As String
     
    Private Sub CmBTerminer_Click()
        If OrdreAchat <> OrdreVente Then
            MsgBox "Nous n'avons pas le meme nombre d'action dans les deux sections" & vbNewLine & _
            "Nous devons avoir des placements pour toutes les Actions Gérés" & vbNewLine & _
            "Merci de recommancer", vbInformation
            UserForm_Initialize
        End If
    End Sub
     
    Private Sub UserForm_Initialize()
        '=======================================================================================
        ' Gestion des bouton etc ...
        '=======================================================================================
        Action_Treso = Achat
        'Visible
        LbRefNote.Visible = True
        CmBDate.Visible = True
        DTPDate_Note.Value = Date
        DTPDate_Note.Visible = False
        LbRefOperation.Visible = False
        LbDu.Visible = False
        LbTitreSelectionner.Visible = False
        CbListeTitre.Visible = False
        CmBAjout.Visible = False
        CmBAnnuler.Visible = True
        CmBTerminer.Visible = True
        'Actif
        CmBDate.Enabled = True
        DTPDate_Note.Enabled = False
        CbListeTitre.Enabled = False
        CmBAjout.Enabled = False
        CmBAnnuler.Enabled = True
        CmBTerminer.Enabled = False
        '=======================================================================================
        'Set Titre = New Collection
     
        LbRefNote.Caption = "Référence de la Note : " & ActiveWorkbook.Worksheets("Sicav_Placements").Range("D1").Value + 1
        LbRefOperation.Caption = Action_Treso
        Initialisation_liste
    End Sub
    Sub Initialisation_liste()
        x = 3
        Do While ActiveWorkbook.Worksheets("Sicav_Placements").Range("A" & x).Value <> ""
            Titre.Add ActiveWorkbook.Worksheets("Sicav_Placements").Range("A" & x).Value
            x = x + 1
        Loop
     
        IndexTitre = 1
        Do Until IndexTitre > Titre.Count
            Me.CbListeTitre.AddItem Titre.Item(IndexTitre)
            IndexTitre = IndexTitre + 1
        Loop
    End Sub
    Private Sub UserForm_Activate()
        MsgBox " La Note se remplie en DEUX temps :" & vbNewLine & _
          " - Premiere opérartion  :  Remplire l'ordre des Actions dans le cas d'un ACHAT" & vbNewLine & _
          " - Second opération     :  Remplire l'ordre des Actions dans le cas d'une VENTE" & vbNewLine & _
          "A la suite de ces operations vous validez par le bouton TERMINER", vbInformation
    End Sub
    Private Sub CmBAnnuler_Click()
        Unload Me
    End Sub
    Private Sub CmBDate_Click()
        CmBDate.Visible = False
        LbDu.Visible = True
        DTPDate_Note.Visible = True
        DTPDate_Note.Enabled = True
    End Sub
    Private Sub DTPDate_Note_Change()
        LbRefOperation.Visible = True
        LbTitreSelectionner.Visible = True
        CbListeTitre.Visible = True
        CbListeTitre.Enabled = True
    End Sub
    Private Sub CbListeTitre_Change()
        If DTPDate_Note.Value > (Date - 3) And DTPDate_Note.Value < (Date + 30) Then
            DTPDate_Note.Enabled = False
            Date_de_La_Note = DTPDate_Note.Value
            CmBAjout.Visible = True
            CmBAjout.Enabled = True
        Else
            MsgBox "Vous n'avez pas selectionner la bonne date" & vbNewLine & "Merci de corriger", vbExclamation
            DTPDate_Note.Enabled = True
            LbRefOperation.Visible = False
            LbTitreSelectionner.Visible = False
            CbListeTitre.Visible = False
            CbListeTitre.Enabled = False
        End If
     
    End Sub
    Private Sub CmBAjout_Click()
        Controle_Donnee
    End Sub
    Sub Controle_Donnee()
        Dim i As Integer
        i = 1
        Do While i < Titre.Count + 1
            If Titre(i) = CbListeTitre.Column(0) Then
                MsgBox Titre(i) & vbNewLine & "index : " & i
                Select Case Action_Treso
                        Case Achat
                            OrdreAchat.Add Titre(i)
                            Titre.Remove i
                        Case Vente
                            OrdreVente.Add Titre(i)
                            Titre.Remove i
                End Select
            End If
            i = i + 1
        Loop
     
        Me.CbListeTitre.Clear
        IndexTitre = 1
        Do Until IndexTitre > Titre.Count
            Me.CbListeTitre.AddItem Titre.Item(IndexTitre)
            IndexTitre = IndexTitre + 1
        Loop
     
        If Titre.Count = 0 Then
            Select Case Action_Treso
                    Case Achat
                        Action_Treso = Vente
                        LbRefOperation.Caption = Action_Treso
                        MsgBox "Maintenant vous allez selectionner l'" & Action_Treso
                        Initialisation_liste
                    Case Vente
                        CmBAjout.Enabled = False
                        CmBTerminer.Enabled = True
            End Select
     
        End If
    End Sub

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 13/03/2009, 16h01
  2. Réponses: 2
    Dernier message: 17/06/2008, 23h18
  3. Réponses: 2
    Dernier message: 05/06/2008, 17h19
  4. Ordonner une liste
    Par Zimzimut dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 31/05/2007, 08h26

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