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 :

Problème de Noeuds


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Touche à tout
    Inscrit en
    Mars 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Touche à tout

    Informations forums :
    Inscription : Mars 2009
    Messages : 120
    Par défaut Problème de Noeuds
    Bonjour à tous,

    J'ai un tableau de "signes" tous différents, variable en nombre de lignes - mais pas des masses (max 12~15) - et maximum 6 colonnes, pas toutes remplies, comme par exemple ceci :
    E
    H B
    A F C
    G
    D

    Je dois en tirer des combinaisons (de largeur variable) avec les permutations possibles quand il y a +sieurs colonnes sur une ligne (ici lignes 2 et 3).

    Nom : Ecran 2017-12-03 20.59.38.png
Affichages : 589
Taille : 5,0 Ko

    EHAG EHAD EHFG EHFD EHCG EHCD EHGD EBAG EBAD EBFG EBFD EBCG EBCD EBGD EAGD EFGD ECGD HAGD HFGD HCGD BAGD BFGD BCGD

    Notez que ce sont ici des lettres pour que ce soit plus clair, mais en pratique ce sont des nombres. Mine de rien, c'est un beau casse-tête.

    Une solution a été trouvée par mon fils en JavaScript https://jsfiddle.net/ob5jzLLf/3/

    Explications du concepteur : On considère chaque élément comme un nœud : chacun possède une valeur (la lettre), un niveau (le numéro de ligne), et des enfants.
    Tous les nœuds dont le niveau est inférieur au nœud actuel sont considérés comme ses enfants (la méthode setChildren())
    Comme ça, on peut descendre de façon récursive pour récupérer les enfants des enfants etc.
    Donc en récursif on remplit un tableau ("list") avec toutes les possibilités, quelle que soit leur longueur, et enfin filtré pour garder les éléments qui font 4 caractères.

    Ma question : est-il possible de faire cela en VBA (et si vous pouviez m'aider),

    Un grand merci d'avance et beau weekend !

  2. #2
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,
    j'ai pas compris ce qu'on fait avec

    E
    H B
    A F C
    G
    D

    comment on arrive à "EHAG" ?

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  3. #3
    Membre actif
    Homme Profil pro
    Touche à tout
    Inscrit en
    Mars 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Touche à tout

    Informations forums :
    Inscription : Mars 2009
    Messages : 120
    Par défaut
    Bonsoir JP,

    C'est comme le résultat d'un tirage du Loto, des combinaisons.
    EHAG
    E
    H B
    A F C
    G
    D

    EHAD
    E
    H B
    A F C
    G
    D

    EHFG au rang 3, il y a permutation
    E
    H B
    AF C
    G
    D


    Édit : en fait, j'ai de sérieux doutes pour la faisabilité en VBA : méthodes setChildren, flatten...

  4. #4
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    bonjour,
    dans ce cas, ta liste est loin d'être complète

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  5. #5
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    re,
    EHAG
    EHAD
    EHAB ?
    EHAF ?
    EHAC ?

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  6. #6
    Membre actif
    Homme Profil pro
    Touche à tout
    Inscrit en
    Mars 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Touche à tout

    Informations forums :
    Inscription : Mars 2009
    Messages : 120
    Par défaut
    Citation Envoyé par mjpmjp Voir le message
    re,
    EHAG
    EHAD
    EHAB ?
    EHAF ?
    EHAC ?

    @+JP
    EHAB A et B sont sur la même ligne et ne peuvent pas faire partie la combinaison. Comme EHAF et EHAC

    Un seul élément de la ligne doit apparaître dans la combinaison. C'est le principe. Sinon, pas la peine de faire ce type de tableau d'entrées puisqu'au final on mélangerait tout.

  7. #7
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    énoncé
    Bonjour à tous,

    J'ai un tableau de "signes" tous différents, variable en nombre de lignes - mais pas des masses (max 12~15) - et maximum 6 colonnes, pas toutes remplies, comme par exemple ceci :
    E
    H B
    A F C
    G
    D
    si je me fis a ce que tu dis mjpmjp
    alors
    1. concaténation de E +HB+AFC
    2. sortir toute les variantes de 3 caractères
    3. ajouter G ou D A LA FIN EN DEUX EXEMPLAIRES pour chaque variantes


    c'est encore plus simple
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  8. #8
    Membre actif
    Homme Profil pro
    Touche à tout
    Inscrit en
    Mars 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Touche à tout

    Informations forums :
    Inscription : Mars 2009
    Messages : 120
    Par défaut
    Un Paria,

    J'avoue avoir eu un moment de faiblesse intellectuelle.
    Pour ce qui est du développement, à chacun sa ou ses spécialités. Tu es certainement un crack en Excel et que tes clients t'ont loués. Les miens aussi.
    Je ne connais pas ton parcours. Le mien est fièrement autodidacte et ce depuis le début des années 80, Visicalc, MultiPlan, Profile, Dbase I, II, III et Cie...
    Il m'est arrivé de rêver, ou plutôt cauchemarder, de « sauter » à pieds-joints dans des cellules Excel.

    Lâche-moi les baskets, veux-tu ?

  9. #9
    Membre actif
    Homme Profil pro
    Touche à tout
    Inscrit en
    Mars 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Touche à tout

    Informations forums :
    Inscription : Mars 2009
    Messages : 120
    Par défaut
    Citation Envoyé par mjpmjp Voir le message
    re,

    voir le post #11 et EBAG et EBAD qui n'est pas expliqué

    @+JP
    Bonsoir JP,

    Il me semble que mon énoncé en #1 est pourtant clair.
    Toutefois, je l'ai édité en y ajoutant un dessin expliquant les 8 premiers résultats. EBAG est dedans.

    Bien cordialement,
    Blaise

  10. #10
    Membre actif
    Homme Profil pro
    Touche à tout
    Inscrit en
    Mars 2009
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Touche à tout

    Informations forums :
    Inscription : Mars 2009
    Messages : 120
    Par défaut
    Citation Envoyé par mjpmjp Voir le message
    bonjour,
    dans ce cas, ta liste est loin d'être complète

    @+JP
    Oui et non : elle est filtrée pour des longueurs de 4 caractères. La voici non filtrée https://jsfiddle.net/ob5jzLLf/4/
    Et une variante toute fraîche de ce matin où le filtre est placé dans la méthode flaten, ce qui raccourci (et accélère) le code en lui retirant une boucle https://jsfiddle.net/ob5jzLLf/7/
    Mais il y a bien 23 possibilités.

  11. #11
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Par défaut
    re,

    si je pose cette question c'est pour comprendre les "conditions" du codage

    donc EHAB , EHAF , EHAC , ... ?

    pourquoi ne sont ils pas pris en compte ?

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

Discussions similaires

  1. Réponses: 20
    Dernier message: 05/03/2009, 02h46
  2. [XSL]Problème affiche noeuds non traités
    Par tomsawyer dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 27/06/2006, 16h22
  3. [xml/xsl] Problème de noeuds et attributs
    Par Avallach dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 14/01/2006, 14h31
  4. [JAVA] Problème supression noeud d'un document XML
    Par vero59 dans le forum XML/XSL et SOAP
    Réponses: 10
    Dernier message: 16/08/2005, 16h12
  5. [XSL] Petit problème de selection d'un noeud
    Par Greg L. dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 25/04/2005, 09h39

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