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 :

Renvoyer dynamiquement les valeurs uniques (dates) de la colonne d'un tableau (ListObject)


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 867
    Par défaut Renvoyer dynamiquement les valeurs uniques (dates) de la colonne d'un tableau (ListObject)
    Bonjour,

    Il me semble qu'il est impossible de masquer les doublons dans un tableau structuré.

    J'ai trouvé une solution sur le blog de Philippe TULLIEZ avec cet excellent billet "EXCEL Comment renvoyer dynamiquement les valeurs uniques de la colonne d'un tableau (ListObject)" que j'essaye d'utiliser avec une colonne au format date ("jj-mm-aa") dans le tableau.

    Comment récupérer les dates avec le même format dans un ComboBox.

    Merci d'avance pour vos réponses.

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    bonjour
    la demande n'est pas claire au moins pour moi
    si tu cherche à remplir ton combo avec la colonne B avec des date et sans doublons teste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub UserForm_Initialize()
    Dim i As Integer
    For i = 2 To Sheets("feuil1").Range("B65536").End(xlUp).Row
      ComboBox1 = Sheets("feuil1").Range("B" & i)
      If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem Sheets("feuil1").Range("B" & i)
    Next i
    ComboBox1.Value = Format(ComboBox1.Value, "dd-mm-yy")
    End Sub

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 867
    Par défaut
    Bonjour

    Merci pour votre réponse dans ce cas aucun soucis de fonctionnement.

    Mais je souhaite utiliser la solution de Philippe TULLIEZ "EXCEL Comment renvoyer dynamiquement les valeurs uniques de la colonne d'un tableau (ListObject)" https://www.developpez.net/forums/bl...ject/#comments

    Par exemple si la colonne date du tableau est 19-11-19 c'est 43788 qui est renvoyer dans la ComboBox ?

    Je ne trouve pas la solution pour corriger.

  4. #4
    Membre émérite Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 522
    Par défaut
    Salut,
    Tu dois formater au format Date donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ComboBox1.List = Evaluate("TEXT(UNIQUE(C3:C12),""dd/mm/yyyy"")")

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    867
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 867
    Par défaut
    Bonjour Valtrase,

    Merci pour votre réponse.

    Je résume ce que je souhaite obtenir comme résultat :
    Voici le tableau

    Nom : Tableau3.jpg
Affichages : 113
Taille : 31,8 Ko

    La procédure de P. TULLIEZ adaptée

    Nom : Procédure.jpg
Affichages : 112
Taille : 24,0 Ko

    La fonction de P. TULLIEZ

    Nom : Funtion.jpg
Affichages : 114
Taille : 67,0 Ko

    Mon Userform

    Nom : UserForm2.jpg
Affichages : 111
Taille : 13,5 Ko

    Comment et où utiliser votre format Date ?

    @+

  6. #6
    Membre émérite Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    522
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 522
    Par défaut
    Bonjour,
    Tu dois modifier la fonction de P. Tulliez comme suit:
    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
    Function GetUniqueValue(TableName As String, LabelName As String)
      ' Renvoie la liste des éléments unique présents dans la colonne du tableau passé par arguments
      ' Philippe Tulliez (https://magicoffice.be)
      ' Arguments
      '   TableName  Nom du tableau
      '   LabelName  Etiquette de la colonne
      ' Déclaration
      Const FormulaPattern As String = "TEXT(UNIQUE(<Table>[<Label>]),""dd-mm-yyyy"")" ' Modèle de la formule
      Dim f As String
      ' Remplacement des balises <Table> et <Label> par les arguments passés
      f = Replace(FormulaPattern, "<Table>", TableName)
      f = Replace(f, "<Label>", LabelName)
      ' Renvoi des éléments uniques
      GetUniqueValue = Evaluate(f)
    End Function
    Pour l'appel cela ne change pas.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ComboBox1.List = GetUniqueValue("Tableau2", "Facture")
    Normalement selon version tu n'en aura pas besoin. Mais si la liste déroulante se remplie sur une seule ligne et plusieurs colonnes, alors change la dernière ligne de la fonction par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GetUniqueValue = Application.Transpose(Evaluate(f))

Discussions similaires

  1. Réponses: 6
    Dernier message: 11/12/2014, 10h52
  2. macro excel renvoyant toutes les valeurs d'une variable
    Par eclipse012 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 05/11/2008, 16h41
  3. [plot] Modifier dynamiquement les valeurs tracées sur un graphique
    Par mr_samurai dans le forum Interfaces Graphiques
    Réponses: 4
    Dernier message: 19/02/2008, 16h37
  4. Trouver les valeurs uniques d'un vecteur
    Par Ptinéwik dans le forum MATLAB
    Réponses: 3
    Dernier message: 21/01/2008, 17h14
  5. Réponses: 2
    Dernier message: 23/11/2003, 19h44

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