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 :

Question sur objet Dictionary


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 71
    Points : 27
    Points
    27
    Par défaut Question sur objet Dictionary
    Bonjour!

    J'ai lu cette discussion.
    Je suis débutant en VBA et j'aimerais savoir est-ce qu'avec la formule de Michel_M les valeurs différentes sont stockées dans l'objet "dico" c'est bien ça?
    Et il y a deux choses que je ne comprends pas:

    1- par quoi il faut remplacer "plage" pour spécifier un colonne par exemple la colonne L?
    2-est-ce qu'on peut aussi obtenir la valeur de chaque cellule différente (et pas le nombre total de valeurs différentes)
    Merci pour votre aide!!

  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 767
    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 767
    Points : 28 626
    Points
    28 626
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pour compter le nombre de valeurs distinctes dans une plage de cellules il existe une formule toute simple en Excel traduisible bien évidemment en VBA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMMEPROD(1/NB.SI(A2:A100;A2:A100))
    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
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 71
    Points : 27
    Points
    27
    Par défaut
    Bonjour Philippe Tulliez,

    Non en fait je demandais est-ce qu'on peut connaître la "valeurs des différentes valeurs". C-à-d si on a (4445555566111) alors le résultats serait : (4561) ??
    Et stocker chacun des différents chiffres ou mots dans une variable par exemple, et pouvoir les utiliser?

  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 767
    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 767
    Points : 28 626
    Points
    28 626
    Billets dans le blog
    53
    Par défaut
    Bonjour Maroonx,
    Bonjour Philippe Tulliez,
    Non en fait je demandais est-ce qu'on peut connaître la "valeurs des différentes valeurs". C-à-d si on a (4445555566111) alors le résultats serait : (4561) ??
    Et stocker chacun des différents chiffres ou mots dans une variable par exemple, et pouvoir les utiliser?
    Ma réponse n'était pas pour toi mais par rapport à la question initiale de cette discussion dont le titre est " compter le nombre de valeurs distinctes dans une colonne"
    Ouvre une nouvelle discussion pour ta question quitte à faire référence à celle-ci mais j'avoue ne pas avoir bien compris ton exemple.
    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
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 71
    Points : 27
    Points
    27
    Par défaut
    Salut!

    D'accord pour le post mais je pensais que ma question allait dans le même sens... Dans mon exemple si dans la colonne "A" on a les valeurs 4 4 4 5 5 5 5 5 6 6 1 1 1 alors le résultat sera : 4 5 6 1 plutôt que 4 (c'est-à-dire le nombre de valeurs différentes). Et de pouvoir utiliser ces valeurs par la suite.

    Comment faire pour stocker les 4 variables différentes (4 5 6 et 1)?

    C'était just une précision mais s'il le faut je vais créer un autre post!
    Merci!

  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 767
    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 767
    Points : 28 626
    Points
    28 626
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Maintenant, c'est plus clair.
    Je n'ai pas le temps maintenant de répondre mais si personne ne t'apporte une réponse d'ici demain après-midi, je déposerai une fonction qui renvoie une table avec les valeurs uniques contenues dans une plage.
    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
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 71
    Points : 27
    Points
    27
    Par défaut
    D'accord en attendant je vais essayer de trouver la solution!
    Merci!

  8. #8
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Tu te noies vraiment dans un verre d'eau.
    Regarde (j'ai délibérément évité, pour rester au niveau débutant, l'utilisation d'un dictionnaire ou d'une collection) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    toto = Columns(1).SpecialCells(xlConstants) ' j'affecte toutes les données de la colonne A à un tableau (plus rapide à l'exécution)
    titi = "/" ' je vais me servir de cette variable en remplacement d'un dico ou d'une collection
    ou = 1
    For i = 1 To UBound(toto, 1) ' je parcours tous les articles de la colonne 1 de mon tableau toto
      If InStr(titi, "/" & toto(i, 1) & "/") = 0 Then ' si pas déjà traité, j'ajoute à la colonne B
        Range("B" & ou) = toto(i, 1)
        titi = titi & toto(i, 1) & "/" ' et j'ajoute également à titi
        ou = ou + 1
      End If
    Next
    Mets tout ce que tu veux, dans l'ordre ou non en colonne A et regarde le résultat en colonne B


    Suis-je bête : Et même sans titi (ni dico, ni collection) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    toto = Columns(1).SpecialCells(xlConstants)
    ou = 1
    For i = 1 To UBound(toto, 1)
      If WorksheetFunction.CountIf(Columns(2), toto(i, 1)) = 0 Then
        Range("B" & ou) = toto(i, 1)
        ou = ou + 1
      End If
    Next
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 71
    Points : 27
    Points
    27
    Par défaut
    !!c'est exactement ça!! Merci!
    Tu as raison je rame bcp mais un jour ça va changer! Surtout grâce la communauté du forum!
    Je vais étudier ce morceau de code! Mais je comprends pas le signe "/", c'est pas la première fois que je vois...

  10. #10
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Ce signe n'est jamais qu'un séparateur. Si tu en préfères un autre, tu peux (que préfères-tu ? @ ?, | ? , # ?, & ? etc ... tout ce que tu veux qui ne soit pas utilisé dans ce que tu as en colonne A)
    Mais regarde le second jus. Même pas besoin de cette variable titi ...
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2015
    Messages : 71
    Points : 27
    Points
    27
    Par défaut
    Oui il marche et je le comprends facilement! j'avais pas pensé à utiliser la fonction countif comme ça!

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

Discussions similaires

  1. [PEAR] Objet : Question sur le passage de variable
    Par Norabfr dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 07/01/2006, 01h07
  2. question sur les objets
    Par afrikha dans le forum Langage
    Réponses: 14
    Dernier message: 07/12/2005, 15h21
  3. [FLASH 8] Question sur la portée des objets.
    Par i_shinji dans le forum Flash
    Réponses: 1
    Dernier message: 02/11/2005, 17h18
  4. Questions sur la programmation objet en Delphi
    Par Manopower dans le forum Débuter
    Réponses: 20
    Dernier message: 15/06/2005, 15h39
  5. Réponses: 2
    Dernier message: 17/03/2004, 13h58

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