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 :

Affichage d'une date dans une liste déroulante


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 35
    Points : 34
    Points
    34
    Par défaut Affichage d'une date dans une liste déroulante
    Bonjour à tous,

    J'essaye d'afficher une liste de date dans une liste déroulante.

    Cette liste de date est construite via une macro en prenant certaines valeurs d'une autre liste de valeurs présente dans le même classeur.

    J'arrive à deux résultats qui tous les deux ne me conviennent pas:

    1° Soit j'ai ma liste qui s'affiche dans le bon ordre sur mon classeur ainsi que sur ma liste déroulante... SAUF une fois que j'ai sélectionné une date alors là elle s'affiche dans le format "Standard".
    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
        Worksheets("Program Data").Range("Selection_CCBD").Delete Shift:=xlUp 'Je supprime le Range précédent
     
        k_CCBD = 9
     
        For i = 3 To Range("Number_CN") + 3 
            exist_CCBD = 0
     
            For j = 9 To k_CCBD
                If Worksheets("CN DB").Cells(i, 12) = Worksheets("Program Data").Cells(j, 10) Then 'Recherchant les valeurs uniques, je vérifie si la valeur que je recherche existe déja
                    exist_CCBD = 1
                End If
            Next
            If exist_CCBD = 0 Then 'Si la valeur n'existe pas alors je la copie dans la liste
                Worksheets("Program Data").Cells(k_CCBD, 10) = Worksheets("CN DB").Cells(i, 12)
                k_CCBD = k_CCBD + 1
            End If
        Next
     
        Worksheets("Program Data").Range(Worksheets("Program Data").Cells(9, 10), Worksheets("Program Data").Cells(k_CCBD, 10)).Name = "Selection_CCBD" 'Je nomme ma liste
        Range("Selection_CCBD").Sort Key1:=Worksheets("Program Data").Range("J9"), Order1:=xlAscending, Header:=xlGuess, _
                OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    ' Je la tri par ordre croissant
     
        From_Date.RowSource = "Selection_CCBD"
        To_Date.RowSource = "Selection_CCBD"
    2° Je fais passer mes valeurs sélectionnées d'un format "Date" à un format standard ou texte tout en gardant le formatage désiré ("jj/mm/aaaa").
    Malheuresement lors de la transformation certaine date se transforme automatiquement et je perds alors l'effet de ma transformation. (en gros j'ai un style qui s'applique automatiquement pour certaine date dans certaine cellule
    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
     
    Dim CCBD As String 'je crée ma variable qui me servira à transformer ma variable en string
     
        Worksheets("Program Data").Range("Selection_CCBD").Delete Shift:=xlUp
     
        k_CCBD = 9
     
        For i = 3 To Range("Number_CN") + 3
            exist_CCBD = 0
     
        For i = 3 To Range("Number_CN") + 3
            exist_CCBD = 0
     
            For j = 9 To k_CCBD
                If Worksheets("Program Data").Cells(j, 10) = Worksheets("CN DB").Cells(i, 12) Then 'Je vérifie si ma valeur existe
                    exist_CCBD = 1
                End If
            Next
            If exist_CCBD = 0 Then
                Worksheets("Program Data").Cells(k_CCBD, 10) = Worksheets("CN DB").Cells(i, 12) ' je la copie si elle n'existe pas
                k_CCBD = k_CCBD + 1
            End If
        Next
     
        Worksheets("Program Data").Range(Worksheets("Program Data").Cells(9, 10), Worksheets("Program Data").Cells(k_CCBD, 10)).Name = "Selection_CCBD"
        Range("Selection_CCBD").Sort Key1:=Worksheets("Program Data").Range("J9"), Order1:=xlAscending, Header:=xlGuess, _
                OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
        ' je trie
     
        For j = 9 To k_CCBD - 1
            CCBD = Format(Worksheets("Program Data").Cells(j, 10), "dd/mm/yyyy")
            Worksheets("Program Data").Cells(j, 10) = CCBD
        Next 'je transforme mes valeurs
     
        From_Date.RowSource = "Selection_CCBD"
        To_Date.RowSource = "Selection_CCBD"
    A la suite de ceci, certain seront bien des chaines de caractéres alors que d'autre seront des dates.
    J'ai fais un test en transformant juste le jours et le mois, pour certain ça marche trés bien (par ex 12/04), et pour d'autre je me retrouve avec 08-Aout.

    Donc si quelqu'un aurais une solution pour que je puisse avoir dans ma liste déroulante des dates quand je l'ouvre ainsi qu'une fois ma date sélectionnée ce serait génial!

    Merci d'avance

  2. #2
    Membre régulier Avatar de DidierLoche
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    84
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 84
    Points : 105
    Points
    105
    Par défaut
    Bonjour,

    Désolé pour cette réponse tardive.
    Je ne comprends pas ton problème. J'ai testé une ComboBox dans un UserForm en l'initialisant avec des dates que j'ai mis dans la colonne A (au format jj/mm/aaaa.
    ça marche très bien, je ne vois pas de modification de date.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    'Worksheets(1).Range("A:A").Sort Key1:=Worksheets(1).Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
                OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    '
    'UserForm1.ComboBox_dates.Clear
    'li = 1
    'Do While Cells(li, 1) <> ""
    ' UserForm1.ComboBox_dates.AddItem Cells(li, 1)
    ' li = li + 1
    'Loop
    UserForm1.Show
    MsgBox CDate(UserForm1.ComboBox_dates.Value)
    ...
    J'ai également essayé avec une ComboBox directement dans la feuille Excel et ça marche tout aussi bien.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Worksheets(1).ComboBox1.Clear
    li = 1
    Do While Cells(li, 1) <> ""
     Worksheets(1).ComboBox1.AddItem Cells(li, 1)
     li = li + 1
    Loop
     
    Private Sub ComboBox1_Change()
    MsgBox CDate(Worksheets(1).ComboBox1.Value)
     
    End Sub
    Didier

Discussions similaires

  1. [MySQL] insérer une date dans une table dans un format compréhensible
    Par laurentSc dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 16/08/2014, 11h10
  2. insérer une date dans une table dans un format compréhensible
    Par laurentSc dans le forum Langage SQL
    Réponses: 5
    Dernier message: 08/08/2014, 16h31
  3. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  4. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48
  5. Inserer une date d'une table dans une autre table
    Par petitetre dans le forum Langage SQL
    Réponses: 8
    Dernier message: 18/04/2007, 20h16

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