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 :

Collection Item et Valeur [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut Collection Item et Valeur
    Bonjour à tous,

    Toujours dans la suite de mon apprentissage, comment récupérer et exploiter dans une collection les valeurs?

    Je m'explique
    Nom : collection.jpg
Affichages : 1102
Taille : 99,7 Ko
    Dans l'image ci-dessus, j'ai plusieurs items en face d'eux, dans la colonne "Valeur", on aperçoit plusieurs fois la même valeur.

    Comment faire pour compter le nombre de fois qu'est présent, ici, "Chantilly", "Dax", "Vichy"?
    A savoir, que ces valeurs sont spot, elles changent tous le jours selon mes requêtes.

    De même le fait de savoir le nombre de fois est présent une valeur, me permettra par la suite de récupérer des infos sur le web.
    Par ex:

    Si "Vichy" est présent 8x, alors je lancerai 8 requêtes
    si "Dax", 9X alors etc......

    Merci d'avance
    Seb

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    une idée par Array : mets ta collection de String dans un Tableau et ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub occur()
    Dim Occurence As String, Tablo
     
    Tablo = Array("a", "a", "b", "a")
    Occurence = "a"
    MsgBox UBound(Tablo) + 1 - Len(Replace(Join(Tablo, ""), Occurence, ""))
     
    End Sub

  3. #3
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Set Dico = CreateObject("Scripting.dictionary")
    If dico.exists("toto") = false then dico("toto")=0
    For i =1 to 10
    Dico("toto")=dico("toto") +1
    Next
    Début.print dico("toto")

  4. #4
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    Bonjour à vous deux les ,

    @Joe:
    voici mon bout de code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Set Col = CreateObject("scripting.dictionary")
     
        Lmax = IEdoc.Links.Length
            For Each O In IEdoc.Links
                L = L + 1
                Application.StatusBar = "Patientez... " & L * 100 \ Lmax & " %"
                If O.href Like vURL & "*" Then
                    T = Mid(O.href, 45)
                    T = Left(T, InStr(T, "-") - 1)
                    If Col.Exists(O.href) = False Then Col.Add O.href, O.href 'Collection lien course sans doublon
                    Collect.Add T 'Collection lieu réunion avec doublon
                End If
            Next O
    Comme tu peux le voir, deux collections sont formées ensemble, une "Col" qui récupère des liens et l'autre dont je manipule la chaine de chaque lien afin d'en extraire des lieux.

    Avec ton code cela oblige à connaître les lieux avant et de les rentrer manuellement dans le code
    A moins comme tu le dis que je mette mes Strings dans un Array mais dans ce cas comment faire?

    @Rudupt:

    J'aime bien le dico vba....
    Mais dans ton code, "Toto" est fixe, hors c justement cela qui doit évolué
    Dans l'image, plus haut, je récupère au minimum 4 x 8 valeurs

    Ici: "Chantilly", "Dax", et "Vichy" pour aujourd'hui, mais demain cela peut-être "Longchamp", "Paris" et "Le Havre"....

    Seb

  5. #5
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    je visualise mal ce qu'il se passe

    c'est T qui contient le string ?

    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 Occur()
    Dim Collect  As New Dictionary
    Dim TabloExemple()
     
    TabloExemple = Array("PARIS", "LYON", "LILLE", "LYON", "LYON", "BORDEAUX")
    For i = LBound(TabloExemple) + 1 To UBound(TabloExemple) + 1
        Cells(i, 1) = TabloExemple(i - 1)
    Next i
     
    For i = 1 To UBound(TabloExemple) + 1
        T = Cells(i, 1).Value
        If Collect.Exists(T) Then
            Collect(T) = Collect(T) + 1
        Else
            Collect.Add T, 1
        End If
    Next i
     
    For Each elt In Collect.Keys
       Debug.Print elt & " : " & Collect(elt)
    Next elt
    End Sub

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Oui effectivement toto est fixe dans mon exemple! Mais l'idée est de te montrer l'utilisation du dico.

    Tu peux remplacer ta collection par un dico dans ton code comme le montre Joe

  7. #7
    Membre éclairé
    Homme Profil pro
    Constructeur ossature bois
    Inscrit en
    Mars 2014
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Constructeur ossature bois
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Mars 2014
    Messages : 897
    Par défaut
    Bonjour a vous,

    Rdurupt, c vrai, les choses les plus simples nous passent souvent sous le nez....

    JE regarde et viens vous dire quoi

    Bonne journée

    Seb

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

Discussions similaires

  1. La collection Items doit être vide..
    Par jacquesprogram dans le forum Windows Presentation Foundation
    Réponses: 3
    Dernier message: 01/08/2011, 12h54
  2. Réponses: 2
    Dernier message: 24/03/2010, 16h40
  3. [JSTL] connaitre taille de la collection items du forEach
    Par makohsarah dans le forum Struts 1
    Réponses: 3
    Dernier message: 24/05/2008, 16h58
  4. Réponses: 5
    Dernier message: 08/12/2006, 17h04

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