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 :

Valeurs différentes d'une colonne d'un tableau [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre émérite
    Homme Profil pro
    Formateur et développeur bureautique
    Inscrit en
    Mars 2007
    Messages
    1 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur et développeur bureautique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 468
    Points : 2 996
    Points
    2 996
    Par défaut Valeurs différentes d'une colonne d'un tableau
    Bonjour tout le monde

    J'ai un tableau (listobject) classique : Nom, Ville, CA

    Je voudrais pouvoir boucler sur toutes les valeurs différentes de la colonne Ville (pour ensuite créer autant de feuille qu'il y a de villes, ...). Comment dois-je faire ?

    Je sais boucler sur les items d'un filtre de rapport dans un TCD, mais pas sur les items d'une colonne d'un tableau.

    Quelqu'un a-t'il une solution ?

    Bonne journée

    Pierre
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 905
    Points : 28 877
    Points
    28 877
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour boucler sur les lignes d'une colonne, 2 solutions parmi d'autres.
    2 exemples de lecture des cellules C2 à C10 de la feuil1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Exemple1()
     Dim l As Long
     Dim sht As Worksheet
     Set sht = ThisWorkbook.Worksheets("Feuil1")
     For l = 2 To 10
      Debug.Print sht.Cells(l, 3)
     Next
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Exemple2()
     Dim cel As Range
     Dim sht As Worksheet
     Set sht = ThisWorkbook.Worksheets("Feuil1")
     For Each cel In sht.Range("C2:C10")
      Debug.Print cel
     Next
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre émérite
    Homme Profil pro
    Formateur et développeur bureautique
    Inscrit en
    Mars 2007
    Messages
    1 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur et développeur bureautique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 468
    Points : 2 996
    Points
    2 996
    Par défaut
    Citation Envoyé par corona Voir le message
    Pour boucler sur les lignes d'une colonne, 2 solutions parmi d'autres.
    Bonjour

    Non, non. Ce n'est pas ça. décidémment on ne se comprend pas : je dois mal m'exprimer

    Ce que je veux c'est boucler sur des l'ensemble des valeurs DIFFERENTES de la colonne.
    Quand on est en mode tableau, on peut cliquer sur la petite flèche à côté de Ville et Excel nous affiche toutes les villes différentes dans la colonne. C'est donc qu'il est capable de trouver toutes les valeurs DIFFERENTES dans cette colonne. Je voudrais faire la même chose. Mais je n'y arrive pas.

    A titre de comparaison, dans un TCD, dans un filtre du rapport, quand on clique sur la petite flèche, Excel affiche toutes les valeurs différentes pour ce champ. Et là, je sais trouver les différentes valeurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For Each pf In ActiveCell.PivotTable.PageFields
       For Each Pi In pf.PivotItems
       Next Pi
    Next pf
    Je voudrais pouvoir faire la même chose pour tous les items (différents) de la colonne Ville de mon Tableau1.

    Merci

    Pierre
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 905
    Points : 28 877
    Points
    28 877
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Il faut faire une lecture en utilisant par exemple l'objet Dictionary
    Une discussion sur le sujet ici
    [EDIT]
    Je voudrais pouvoir boucler sur toutes les valeurs différentes de la colonne Ville (pour ensuite créer autant de feuille qu'il y a de villes, ...). Comment dois-je faire ?
    Et encore mieux un lien vers une discussion qui correspond pratiquement à ce que tu cherches Alimentaion des feuilles depuis occurences sur feuille de synthèse
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre émérite
    Homme Profil pro
    Formateur et développeur bureautique
    Inscrit en
    Mars 2007
    Messages
    1 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur et développeur bureautique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 468
    Points : 2 996
    Points
    2 996
    Par défaut
    Ok

    Merci. Voici la solution que j'ai réalisé :
    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
    Sub valeursuniques()
    Dim Dico
    Dim c As Range
    Dim d
    Dim b As Long
     
    Set Dico = CreateObject("Scripting.Dictionary")
    For Each c In Range("Tableau1[Ville]")
        If Not Dico.Exists(c.Value) Then Dico.Add c.Value, c.Value
    Next c
     
    b = 2
    For Each d In Dico.items
        Range("H" & b) = d
        b = b + 1
    Next d
     
    End Sub
    Toutefois, je trouve un peu dommage de devoir se constituer sa propre liste en bouclant sur toutes les valeurs avant de pouvoir les utliser. Je pensai vraiment qu'il y avait une collection qui les possédait déjà.

    j'attends un peu avant de mettre "Résolu" au cas où quelqu'un connaisse cette collection.

    Bonne journée

    Pierre
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 905
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 905
    Points : 28 877
    Points
    28 877
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    A ma connaissance, cela n'existe pas. Les outils comme les filtres créent dynamiquement les listes au moment de leurs activations.
    C'est exactement la même chose que lorsque tu te places dans la première cellule qui suit immédiatement la dernière cellule remplie de la colonne contenant ta liste et que tu fais Ctrl+flèche bas, tu obtiens la liste de tous ce que tu as encodé sans les doublons et triée par ordre croissant.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  7. #7
    Expert éminent
    Avatar de Oliv-
    Homme Profil pro
    solution provider
    Inscrit en
    Mars 2006
    Messages
    4 087
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : solution provider

    Informations forums :
    Inscription : Mars 2006
    Messages : 4 087
    Points : 7 168
    Points
    7 168
    Billets dans le blog
    20
    Par défaut
    Salut,
    Voici une solution que je viens de coder et tester :

    à partir de XL2007 !!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub RangeSansDoublon1()
        Dim ListeAvecDoublons As Range
        Dim ValeurUnique As Range
        Set ListeAvecDoublons = ActiveSheet.Range("$C$1:$C$5")
        ListeAvecDoublons.RemoveDuplicates
        'exemple je copie cette liste en E1
        Range("E1").Resize(ListeAvecDoublons.SpecialCells(xlCellTypeConstants).Rows.Count).Value = ListeAvecDoublons.SpecialCells(xlCellTypeConstants).Value
        'j'utilise ce range pour créer des feuilles
        For Each ValeurUnique In ListeAvecDoublons.SpecialCells(xlCellTypeConstants)
            Worksheets.Add
            ActiveSheet.Name = ValeurUnique.Value
        
        Next ValeurUnique
    End Sub

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/05/2012, 19h15
  2. [XL-2003] valeurs différentes dans une colonne
    Par psoret dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 20/04/2010, 18h16
  3. Réponses: 3
    Dernier message: 29/01/2010, 14h28
  4. extraire les valeurs différentes d'une colonne
    Par mementox dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 01/12/2007, 16h06
  5. Nombre de valeurs différentes dans une colonne
    Par KrusK dans le forum Langage SQL
    Réponses: 4
    Dernier message: 24/08/2005, 14h18

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