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

  1. #101
    Invité
    Invité(e)

    Par défaut

    je regarde mais sache que les dictionnaires permettent de vérifié l’existence d'un item et pas les collections!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if Dico.Exists("Clé") then
      0  1

  2. #102
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    avril 2016
    Messages
    7 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : avril 2016
    Messages : 7 501
    Points : 13 040
    Points
    13 040

    Par défaut

    Bonjour Robert
    sache que les dictionnaires permettent de vérifié l’existence d'un item et pas les collections
    Oui et non : une simple gestion d'erreur en tentant d'ajouter permet de le déterminer.
    - Les collections présentent un avantage : rapidité et surtout légèreté et indépendance vis-à-vis de VBS (délibérément inhibé sur certaines machines, dont la mienne). Et deux inconvénients :
    ---- deviennent plus lentes au-delà d'un certain nombre d'items
    ---- sont moins souples (pas de tris, etc ..)
    - Les dictionnaires présentent des avantages (fonctionnalités ajoutées, dont le tri) et leurs inconvénients (dépendance à VBS - plus lents que les collections pour un nombre habituel d'items - plus gourmands en mémoire)
    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" ...
    Les raisons réelles de délaissements ne sont pas toujours celles que l'on pense avoir déterminées.
      1  0

  3. #103
    Membre du Club Avatar de touche_a_tout
    Profil pro
    Inscrit en
    août 2006
    Messages
    387
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : août 2006
    Messages : 387
    Points : 42
    Points
    42

    Par défaut Forêt d'arborescences en VBA/Excel

    Bonjour aux experts,
    Dans mon idée, j'utilise les properties collection pour stocker, pour chaque musiciens, sa collection de maitres (entre 2 et 10 maximum j'imagine), d'élèves (entre 2 et 20 je suppose) et de pairs (mêmes ordres de grandeur). Par contre, pour stocker mes 475 compositeurs j'opterai pour le dictionnaire. Etes-vous d'accord ?
    Cordialement
    Pierre
    There is always an easy solution to every human problem - neat, plausible. And wrong.
      0  1

  4. #104
    Invité
    Invité(e)

    Par défaut

    Bonjour,

    Jaques, à mon corps défendant, je suis obligé de te donné raison!

    pour ce qui concerne le module de classe de pierre!

    ton code est truffé de petites aberrations, bien compréhensible à ton niveau de compétence dans un domaine qu'il faut bien dire ésotérique!


    il faut voir le choses comme une fiche d'état civil?

    ma fiche contient Dysorthographie Robert né en 1959 etc...

    la notion de couple ne ce fait pas sur la question Mr Mme mais en en faisant figurer Mme sur ma fiche d'état civile dans le statu non de épou(se).

    en d'autres termes Artiste("Dysorthographie").Epouse="Agate"

    nombre_eleves pas besoin de renseigner le nombre d’élèves vue qu'il s'agit d'une collection List_eleves.count

    nom_complet = Sheets("couples").Cells(ligne, 2).Value & "_" & Cells(ligne, 3).Value tu mélange des données purement Excel à ton module de classe (Base de données,traitement métier) alors que nom_complet = "Dysorthographie_Robert" même si les données en amont proviennent d'Excel!
    Dernière modification par LittleWhite ; 15/04/2018 à 21h16. Motif: Balise code
      0  0

  5. #105
    Membre du Club Avatar de touche_a_tout
    Profil pro
    Inscrit en
    août 2006
    Messages
    387
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : août 2006
    Messages : 387
    Points : 42
    Points
    42

    Par défaut Forêt d'arborescences en VBA/Excel

    Oui mais attends, Robert, je jette le trouble avec ma terminologie.
    Avec mes couples, je ne parle pas d'un Monsieur et d'une Dame, mais d'un prof et d'un élève. Il vaudrait mieux que je parte de ma feuille sheets("eleves"), ça éviterait les malentendus.*** Quant aux aberrations de mon code, il est de toute manière exécrable, je le sais ! J'ai d'ailleurs fait pire: j'ai mis dans le module de classe des lignes de code qui vont dans un module standard et vice-versa. Je suis entrain de remettre de l'ordre. J'aimerais juste savoir si, pour nommer mes instances, je peux passer par une variable (comme eleve_nom_complet) et comment, ou si je devrai saisir mes 475 compositeurs au clavier, misère de misère !
    ***Cependant l'avantage de la table des associations maitre-eleve (que j'appelle bêtement couples) est qu'une fois un index numérique repéré, je peux ajouter un maître à l'élève correspondant et ajouter un élève au maître correspondant, puisque je les ai sur la même ligne d'une feuille XL. Je me demande si je suis clair, là !
    Bien à toi
    Pierre
    There is always an easy solution to every human problem - neat, plausible. And wrong.
      0  1

  6. #106
    Invité
    Invité(e)

    Par défaut

    dans ma réponse précédente,j’essayai de trouvé un exemple de la vie courante à mon propos! je sais bien qu'il ne s'agit pas de Mr Mme!

    quand aux "aberrations" elles sont inévitablement et on ne peut que t'absoudre de les commettre j'en est fais moi même et je ne désespère pas d'en faire d'autres!

    prenon la notion de couple par exemple!

    Artiste("Dysorthographie").Epouse=Artiste("Agate") je me conjoint pour épouse (exemple de la vie courante) la fiche d'état civile de Agate et donc son affiliation, et pour le coup Epoux de sa fiche c'est moi!

    Ps ne le dis pas à ma femme Agate elle ne sait pas qui c'est!

    je te revoie au Poste #7 ou je donne un exemple de cette méthode![/COLOR]
    Dernière modification par LittleWhite ; 20/05/2018 à 16h23. Motif: Balise code
      0  0

  7. #107
    Membre du Club Avatar de touche_a_tout
    Profil pro
    Inscrit en
    août 2006
    Messages
    387
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : août 2006
    Messages : 387
    Points : 42
    Points
    42

    Par défaut Forêt d'arborescences en VBA/Excel

    Je vois. Je serai muet comme la tombe.
    Pour mon compte, je ne sais toujours pas comment faire à propos de ceci:
    J'aimerais juste savoir si, pour nommer mes instances, je peux passer par une variable (comme eleve_nom_complet) et comment, ou si je devrai saisir mes 475 compositeurs au clavier, misère de misère !
    .
    Ce serait déjà moins ésotérique !
    Merci d'avance.
    Cordialement et bon appétit
    Pierre
    There is always an easy solution to every human problem - neat, plausible. And wrong.
      0  1

  8. #108
    Invité
    Invité(e)

    Par défaut

    fais un test avec la touche [F8]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Nom_ As String, pNom_ As String
    Public Property Let Nom(Value As String)
    Nom_ = Value
    End Property
    Public Property Let Prénom(Value As String)
    pNom_ = Value
    End Property
    Public Property Get NomComple() As String
    NomComple = Nom_ & "_" & pNom_
    End Property
    Sub test()
    Nom = "Dysorthographie": Prénom = "Robert"
    MsgBox NomComple
    End Sub
    il faut multiplier de petites propriétés et méthodes pour que le code soit efficace et maintenable!
    Édite: Poste #7 relize
    Code module de classe : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Public Maitre As Object, Eleve As Object, Nom As String
    Private ColCouple As New Collection
    Public Property Let Couple(ByVal Nom As String, ByRef Value As Object)
    On Error Resume Next
    ColCouple.Add Value, Nom
    On Error GoTo 0
    End Property
    Public Property Get CoupleCount()
    CoupleCount = ColCouple.Count
    End Property
    Code module standard : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Debug.Print Artiste("Francis").CoupleCount
    Artiste("Francis").Couple("Jean") = Artiste("Jean")
    Debug.Print Artiste("Francis").CoupleCount
    Dernière modification par Invité ; 21/03/2018 à 15h20.
      0  0

  9. #109
    Membre du Club Avatar de touche_a_tout
    Profil pro
    Inscrit en
    août 2006
    Messages
    387
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : août 2006
    Messages : 387
    Points : 42
    Points
    42

    Par défaut Forêt d'arborescences en VBA/Excel

    Bonsoir,
    Très bizarre le cheminement dans ce code !
    De mon côté, j'ai enfin trouvé par hasard (je cherchais autre chose) un modèle de scripting.dictionary chez Microsoft et je l'ai adapté à mon essai d'appli (avec 52 compositeurs-bidons). Ca marche super (je veux dire: j'arrive à nommer mes compositeurs par leur nom et à les stocker dans le dictionnaire) et ça devrait marcher pareil avec 475 compositeurs mais je n'ai pas vu comment on pouvait sauvegarder le dictionnaire et ainsi conserver les 52 instances de ma classe "musiciens". Est-ce possible ? Faut-il au contraire tout refaire à chaque session ?
    Merci d'avance.
    Cordialement
    Pierre alias t_a_t
    There is always an easy solution to every human problem - neat, plausible. And wrong.
      0  1

  10. #110
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    avril 2016
    Messages
    7 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : avril 2016
    Messages : 7 501
    Points : 13 040
    Points
    13 040

    Par défaut

    Bonjour touche-a-tout

    J'ai parlé plus haut des avantages et inconvénients comparés d'une collection et d'un objet dictionnary.
    J'ai à ce propos précisé que VBS étant délibérément inhibé sur ma machine, je n'avais pas le choix (et donc : collection uniquement).

    Comment est-ce que je procède lorsque je souhaite profiter des avantages tri, récupération en bloc, etc ...) d'un dictionnaire sans l'avoir ? --->>
    Lorsque ce que je veux traiter n'est pas constitué d'objets (et c'est ton cas), je lui substitue tout simplement une feuille ad-hoc dont, du coup, je peux utiliser plus de deux colonnes.
    Cela me permet :
    - de trier en tant que de besoin
    - d'éviter les doublons (par utilisation de countif)
    - de conserver en mémoire (à la sauvegarde du classeur)
    - etc ...
    (le plus gros avantage est ce que j'ai mis en rouge plus haut)
    Pour tout dire : je considère que Excel est déjà, en soi, une espèce de dictionnaire.
    Et que ferais-tu, d'ailleurs, pour sauvegarder, toi, le contenu de ton objet dictionary ? Ben --->> tu n'aurais justement pas d'autre choix que celui de le mettre dans une plage de cellules (plus simple) ou dans un fichier texte.
    Alors ... tremplin pour tremplin, autant tout faire en tremplin.

    J'ignore totalement si la communication de cette méthode peut te servir. Je te la communique toutefois (sait-on jamais ...)
    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" ...
    Les raisons réelles de délaissements ne sont pas toujours celles que l'on pense avoir déterminées.
      0  1

  11. #111
    Invité
    Invité(e)

    Par défaut

    Bonjour

    Oui il arrive qu'un client impose des contraintes qui rendent plus difficile et parfois impossible la réalisation du projet!

    Mais là la question ne ce pose pas il fait le choix ou pas!

    C'est un projet personnel.

    Ps en dot.net l'objet collection n'existe pas le dico oui!

    Marc m'a démontré que dir était plus compétif qu'fso mais j'utilise fso!

    Édit:

    Ceci dit Pierre,toujours au poste #7 je fourni un exemple et un fichier excel avec module de classe et dictionnaire avec rendu dans une feuille Excel!
    Dernière modification par Invité ; 22/03/2018 à 08h36.
      1  1

  12. #112
    Membre du Club Avatar de touche_a_tout
    Profil pro
    Inscrit en
    août 2006
    Messages
    387
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : août 2006
    Messages : 387
    Points : 42
    Points
    42

    Par défaut Forêt d'arborescences en VBA/Excel

    Dysorthographie et unparia, bonjour,
    A unparia: quand tu écris qu'il ne s'agit pas d'objets, je te suis mal car mon dictionary est destiné à contenir des instances ma classe "musiciens", donc des objets. Enfin, le vieux débutant que je suis a ce sentiment. Pour la sauvegarde, j'ai cherché du côté de Save et SaveAs mais ça ne marche que pour des objets Workbooks. Peut-on sauvegarder mes objets personnalisés dans un fichier texte ? Aucune idée mais ça me paraît coton.
    Concernant le post #7, Robert, que tu as déjà mentionné hier, il y a erreur de numéro car c'est un msg de menhir à propos des diagrammes de Gantt.
    Dans Excel, on a un système d'objets emboîtés comme des poupées russes. Ne peut-on pas inclure mes objets personnalisés dans un objet d'un niveau plus élevé qui les englobe tous et qui serait, lui, sauvegardable ? C'est étonnant qu'une entité produite par Excel ne puisse pas rester incorporée à Excel ou l'un de ses sous-objets. Enfin, l'important est que ça marche, et ça marche, sauf qu'il faut maintenant
    a) recommencer avec les vrais compositeurs, qui sont 475, à saisir à la main
    b) affecter des valeurs à la série (une douzaine) de propriétés dont ils sont dotés: 475 x 12 = 5700. T'es fada touche_a_tout !
    Bonne Journée
    P.
    There is always an easy solution to every human problem - neat, plausible. And wrong.
      0  1

  13. #113
    Invité
    Invité(e)

    Par défaut

    Oui il ce trouve que j'aurais un amis qui supprime mes messages comme il va supprimer celui ci!

    Parano sens doute!

    Mais qu'a cela tienne regarde au poste #34 pendant qu'il est encore tant!

    J'y faisais allusion au poste #13!
    Dernière modification par Invité ; 22/03/2018 à 10h39.
      0  1

  14. #114
    Responsable
    Office & Excel

    Avatar de Pierre Fauconnier
    Homme Profil pro
    Formateur et développeur informatique indépendant
    Inscrit en
    novembre 2003
    Messages
    13 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur informatique indépendant
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2003
    Messages : 13 864
    Points : 37 168
    Points
    37 168
    Billets dans le blog
    41

    Par défaut

    Salut Robert

    Citation Envoyé par dysorthographie Voir le message
    [...]

    Ps en dot.net l'objet collection n'existe pas le dico oui![...]
    Si la collection existe, c'est l'objet List...

    PS: Il n'y a aucun message supprimé dans cette discussion, à ma connaissance.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Vous souhaitez rédiger pour DVP? Contactez-moi
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------
      0  0

  15. #115
    Invité
    Invité(e)

    Par défaut

    Bonjour Pierre,

    Oui tu as raison on peut utiliser les listes mais moi je ne les utilises pas!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    m_Dictionary=New Dictionary(Of TKey,TValue)
    Ps: Je te pris donc de m'excuser je suis parano!
      0  1

  16. #116
    Responsable
    Office & Excel

    Avatar de Pierre Fauconnier
    Homme Profil pro
    Formateur et développeur informatique indépendant
    Inscrit en
    novembre 2003
    Messages
    13 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur informatique indépendant
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2003
    Messages : 13 864
    Points : 37 168
    Points
    37 168
    Billets dans le blog
    41

    Par défaut

    Citation Envoyé par dysorthographie Voir le message
    Bonjour Pierre,

    Oui tu as raison on peut utiliser les listes mais moi je ne les utilises pas!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ****m_Dictionary*=*New*Dictionary(Of*TKey,*TValue)
    **
    Oui, mais alors il ne faut pas dire que ça n'existe pas


    PS: Les points d'exclamation sont souvent vécus comme agressifs...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Vous souhaitez rédiger pour DVP? Contactez-moi
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------
      0  0

  17. #117
    Invité
    Invité(e)

    Par défaut

    L'objet collection n'existe pas

    D'accord pour les points d'exclamations.
    dim c as new collection
      0  1

  18. #118
    Responsable
    Office & Excel

    Avatar de Pierre Fauconnier
    Homme Profil pro
    Formateur et développeur informatique indépendant
    Inscrit en
    novembre 2003
    Messages
    13 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur informatique indépendant
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2003
    Messages : 13 864
    Points : 37 168
    Points
    37 168
    Billets dans le blog
    41

    Par défaut

    Si ça n'existe pas simplement parce que ça change de noms...

    J'abandonne devant autant de mauvaise foi.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Une fois pour toutes, je donne mon avis. Je ne vais pas le répéter à chaque message...
    Si je propose une solution générique sur votre solution spécifique, c'est parce que, fainéant de nature, je privilégie le réutilisable...
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Vous souhaitez rédiger pour DVP? Contactez-moi
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------
      0  0

  19. #119
    Invité
    Invité(e)

    Par défaut

    Oui mais quand Jaques compare les collections au dictionnaire il faut bien admettre que c'est justement les objets qu'il proscrit qui sont exclusivement utiliser en .net.

    Vraisemblablement optimisé je te l'accordes.

    Ce que je voulais exprimer c'est qu'il appartient au donneur d'ordre de choisir.

    Quand un site internet utilise le kookies je les accepte ou je n'utilise pas le site.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim salmons As New List(Of String)
    *
    m_Dictionary=New Dictionary(Of TKey,TValue)
    Dernière modification par Invité ; 22/03/2018 à 11h24.
      0  1

  20. #120
    Expert éminent sénior
    Homme Profil pro
    aucune
    Inscrit en
    avril 2016
    Messages
    7 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : avril 2016
    Messages : 7 501
    Points : 13 040
    Points
    13 040

    Par défaut

    Bon
    Je vais donc prendre un raccourci "éclairant" :
    La question était :
    comment on pouvait sauvegarder le dictionnaire et ainsi conserver les 52 instances de ma classe "musiciens".
    Et je vois mal comment le faire sans sauvegarder les propriétés elles-mêmes, sans utiliser une plage de cellules ou un fichier texte
    Je reviens alors à ce que j'ai dit plus haut : "tremplin pour tremplin ...", en rappelant que j'ai mis l'accent sur un fait :
    "je lui substitue tout simplement une feuille ad-hoc dont, du coup, je peux utiliser plus de deux colonnes"
    Le mécanisme est toujours le même -->>
    objet ? --->> ses propriétés
    autre ? --->> sa valeur.
    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" ...
    Les raisons réelles de délaissements ne sont pas toujours celles que l'on pense avoir déterminées.
      0  0

Discussions similaires

  1. [XL-2007] Création arborescence dossiers et création de fichiers
    Par raneelbe dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 25/01/2019, 17h44
  2. [XL-2010] Arborescence VBA Excel
    Par Xiirf dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 22/05/2017, 23h21
  3. Réponses: 0
    Dernier message: 13/06/2014, 21h05
  4. [VBA EXCEL] Réduire/Agrandir UserForms
    Par Fench dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/11/2003, 16h02
  5. [VBA Excel] Effacer rapidement une feuille
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/10/2002, 13h12

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