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 :

Faire apparaitre une date dans un combo au démarrage d' un userform


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    173
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2009
    Messages : 173
    Points : 75
    Points
    75
    Par défaut Faire apparaitre une date dans un combo au démarrage d' un userform
    Bonjours
    je vous explique
    j'ai une feuille excel dans lequel j'ai des données et des dates
    dans mon userform j'ai une listbox dans le quel sont repris mes données en fonction dune date choise dans un combobox
    je souhaiterai faire apparraitre dans ma combobox lors de l'ouverture de mon formulaire la date du jour et bien entendu les données qui coresponde a cette date tout en sachant que s l y a pas de données pour une date que rien y apparaisse
    merci

  2. #2
    Expert éminent sénior Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Points : 31 877
    Points
    31 877
    Par défaut
    Je propose de faire une sorte de routine qui contrôle l'existence de la date d'aujourd'hui dans ta colonne source de donnée de dates dans l'évènement Intitalize de ton userform juste après l'affectation des données à ta combobox
    à adapter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub UserForm_Initialize()
    Dim c As Range
    ComboBox1.RowSource = "XXX!A2:A27"
    Set c = Sheets("XXX").Range("A2:A27").Find(Date)
    If Not c Is Nothing Then ComboBox1.Value = Date
    Set c = Nothing
    End Sub
    Cordialement.
    J'utilise toujours le point comme séparateur décimal dans mes tests.

  3. #3
    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 543
    Points
    15 543
    Par défaut
    Tu peux régler ton problème avec List dans une liste à deux colonnes par exemple
    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
    Sub CommandButton2_Click()
    Dim Tablo(), NoLig As Integer, derlig As Long, i As Integer, ColDate As Integer
    Dim FL1 As Worksheet
        Set FL1 = Worksheets("feuil1")
        ColDate = 1
    'On récupère la dernière ligne renseignée de la feuille de calculs
        derlig = Split(FL1.UsedRange.Address, "$")(4)
        For NoLig = 1 To derlig
    'On vérifie que la date correspond bien à celle sélectionnée ds le combo
            If FL1.Cells(NoLig, ColDate) = ComboBox1 Then
    'on vérifie la présence d'une donnée dans la colonne des données (2 ds l'exemple)
                If Not IsEmpty(Cells(NoLig, 2)) Then
    'Ici on distingue i de NoLig pour éviter d'avoir des lignes vides si la colonne "données" est vide
                    i = i + 1
                    ReDim Preserve Tablo(1 To 2, 1 To i)
                    Tablo(1, i) = Cells(NoLig, 1)
                    Tablo(2, i) = Cells(NoLig, 2)
                End If
            End If
        Next
        ListBox2.List() = Application.WorksheetFunction.Transpose(Tablo)
    End Sub
    Si le fichier est important tu gagnerais à utiliser une recherche sur la date dans une boucle avec Find. Ce qui voudrait dire qu'à chaque date correspondante si une donnée existe tu incrémenterais NoLig au lieu de le faire dans une boucle for next.
    C'est toi qui vois
    Bonne soirée

    Edit
    Je viens de voir la réponse de mercatog... La solution idéale serait un mariage des deux...
    Tu peux aussi concaténer la date et la donnée et n'utiliser qu'une seule colonne auquel cas additem te suffirait...
    Bref, ce ne sont pas les solutions qui manquent.

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/04/2010, 11h13
  2. [XL-2007] Faire apparaitre une cellule dans une textbox
    Par charline33 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 15/04/2009, 12h25
  3. Faire apparaitre une image dans une fenetre.
    Par kilrou dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 23/05/2008, 13h13
  4. Format d'une date dans un combo
    Par bobobobo01 dans le forum WinDev
    Réponses: 17
    Dernier message: 11/07/2007, 16h33

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