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

  1. #81
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Vu mon temps non extensible, je donne la priorité au bien formulé;
    si j'ai plus d'une question à poser alors je passe directement à la discussion suivante !

    Et quand il y en a un qui n'a toujours pas compris, on le balade un peu
    comme dans la discussion Arrangement aléatoire d'items 2 à 2, la solution étant déjà présente dans le forum …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  2. #82
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    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

  3. #83
    Membre régulier
    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
    Points : 90
    Points
    90
    Par défaut
    Bonsoir à tous,

    Mon intitulé est clair et il me semble qu'au moins JP et unparia l'ont compris.

    Il est cependant nécessaire de rappeler qu'une combinaison, donnée dans l'ordre ou le désordre, est la même. Sinon, il s'agit d'une permutation. D'ailleurs Excel possède deux fonctions Combin et Permut permettant de calculer le nombre de possibilités dans un tableau

    Je vous invite à regarder cet excellent fichier illustrant la différence entre les deux : http://www.cjoint.com/c/GKomb78IuZS


    Patrick, le tableau en JS que tu as modifié présente en fait 7 lignes. Tu en as mis certaines côte-à-côte. Il répond bien à mon énoncé.

    Nom : Ecran 2017-12-07 20.48.59.png
Affichages : 195
Taille : 12,8 Ko

    Cordialement,
    Blaise

  4. #84
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 073
    Points
    12 073
    Billets dans le blog
    8
    Par défaut re
    re
    en JS
    const data = [
    'E','X',
    'HB',
    'AFC',
    'G',
    'D','Z'
    ]
    est pareil que
    const data = [ 'E','X', 'HB', 'AFC', 'G', 'D','Z']
    ou meme
    const data = [
    'E','
    X',
    'HB',
    'AFC',
    'G',
    'D',
    'Z'
    ]
    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

  5. #85
    Membre régulier
    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
    Points : 90
    Points
    90
    Par défaut
    Citation Envoyé par pijaku Voir le message
    si le demandeur pouvait poster une copie d'écran réelle des données initiales ca serait profitable à tous.
    Ryu : avec un module de classe, tu es sur la meilleure voie.
    Bonsoir pijaku.

    J'aurais cru que le lien vers le script JS https://jsfiddle.net/ob5jzLLf/3/ suffisait, mais c'est vrai que c'est mieux avec la copie d'écran. Au temps pour moi.

    Nom : Ecran 2017-12-07 22.27.37.png
Affichages : 224
Taille : 41,8 Ko

    Par ailleurs, oui, je crois aussi que le module de classe est la meilleure solution.



    Ben oui Patrick. Dès lors, je ne comprends pas ce que tu cherches à prouver qu'avec plus de données on aura plus de résultats ?

  6. #86
    Membre régulier
    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
    Points : 90
    Points
    90
    Par défaut
    pikaju, quelles données initiales ? celles du tableau à explorer ? Pas besoin :

    E
    H B
    A F C
    G
    D

  7. #87
    Membre régulier
    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
    Points : 90
    Points
    90
    Par défaut
    Non, unparia, rien compris, et cela ne fait pas avancer la chose.

    Tu oublies la Netiquette qui demande de ne pas relever les fautes d'orthographe des intervenants. Ici une coquille tapée à 4 h du matin.

    Et puis, je me suis emporté. Pourquoi tirer des combinaisons de 5 (il y en a bien 72) et chercher là-dedans celles de 4 ?
    Pourquoi pas directement celles de 4 ? (parce que c'est plus compliqué)

    Ton raisonnement a une faille : il va y avoir nécessairement un paquet de doublons. De ton exemple de datas, il y a 174 combinaisons de 4.

    Nom : Ecran 2017-12-08 08.20.30.png
Affichages : 179
Taille : 11,9 Ko

  8. #88
    Membre régulier
    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
    Points : 90
    Points
    90
    Par défaut
    Bonjour,

    Le 1er but étant d'avoir une méthode pour sortir ces combinaisons, il y a une chose dont je n'ai pas fait état pour ne pas alourdir le tout :
    Il faut exclure de la liste les combinaisons contenant certains duos, triplets ou plus.
    Par exemple, "EH' et "AGD" limitera la liste à EBAG EBAD EBFG EBFD EBCG EBCD EBGD EFGD ECGD HFGD HCGD BFGD BCGD

    Le filtrage a pour objectif de limiter la liste à quelques lignes.

    Malheureusement, le paradigme s'est compliqué depuis que j'ai ouvert la discussion : ce ne sera pas limité à 12 lignes mais 42 avec une largeur de sortie de 7 à 9 éléments.

    Dès lors, et étant donné l'énorme quantité de combinaisons qui peut être générée à partir un tableau de départ aussi conséquent, ce filtre doit être implémenté au moment de la génération, pas après. Ce qui est possible dans la méthode JS flatten

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        if (str.length === 4) {
        	list.push(str)
        }
    Ensuite, si le filtrage n'est pas suffisant et que cette liste dépasse la centaine de combinaisons, le processus doit être interrompu.

    Blaise

  9. #89
    Membre régulier
    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
    Points : 90
    Points
    90
    Par défaut
    Peu importe le temps que prendra l'exécution du programme.
    La préparation du tableau initial prend des jours au demandeur.

    Traiter plus d'un demi-million de combinaisons prendra le temps qu'il faut, mon demandeur mesurera l'étendue de son utopie ...

    En attendant, j'ai abandonné le module de classe et j'en suis revenu à une solution classique de boucles et de récursivité.

    Je l'ai, je la fignole et je vous la montre ce soir ou demain.

  10. #90
    Membre régulier
    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
    Points : 90
    Points
    90
    Par défaut
    Vois-tu unparia, je me suis inscrit en 2009 parce que j'avais besoin d'une aide dans mes projets Access.

    À cette époque, l'esprit était bien plus convivial et j'ai très modestement participé à d'autres discussions.
    Très modestement parce que j'avais d'autres chats à fouetter et clairement pas de temps à passer ici, d'autant plus que j'étais plutôt actif sur le NG news://microsoft.public.fr.access

    Mon ratio votes utiles/réponses sur ce forum est de 37,5 % alors qu'il n'est que de 0,02 % pour toi. Cela confirme mon impression.

    Quant à ceux qui prennent sans rien donner est le lot de ce type de forum, et je dirais que c'est même normal. Car c'est là que l'altruisme prend tout son sens : donner sans espérer de contrepartie.
    J'ai d'autres vies virtuelles où, très clairement, l'objectif est de donner sans absolument rien attendre en retour qu'un « merci, ça m'a aidé, ça fonctionne ! » L'aide ne s'y résume pas à un bout de code, mais à des conseils de type médical qui sauvent littéralement des vies, et à un soutien moral dans une tranche de vie très difficile.
    Et je mène aussi des actions purement altruistes en IRL. C'est même la clé du bonheur, car cela apporte une richesse humaine sans pareil.

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    Option Explicit
     
    Dim iLignes As Integer
    Dim iColonnes As Integer
    Dim iLongueur As Integer
    Dim vLargeurs() As Variant
     
    Const scSignes = "C7"
    Const scParam = "K2"
    Const scSortie = "K7"
     
    Sub Go()
     
        Dim vSignes() As Variant
        Dim i As Integer
        Dim j As Integer
        Dim lSol As Long
     
        'chargement des valeurs
        iLignes = Range(scParam).Value
        iColonnes = Range(scParam).Offset(1).Value
        iLongueur = Range(scParam).Offset(2).Value
        vSignes = Range(scSignes).Resize(iLignes, iColonnes).Value
        vLargeurs = Range(scSignes).Offset(0, -1).Resize(iLignes).Value
     
        ' préparation de la sortie : effacement éventuel.
        ActiveSheet.Unprotect
     
        If Range(scSortie).Cells.Count = 1 Then
            Range(scSortie, Range(scSortie).End(xlDown)).Clear
        End If
     
        ' génération des combinaisons
        Combine vSignes, lSol
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
     
    End Sub
     
    Sub Combine(vSignes, ByRef lSol, Optional nSol = 0, Optional N = 1, Optional Ni = 0, Optional S = "")
     
        Dim OldS As String
        Dim i As Integer
        Dim j As Integer
     
        OldS = S
     
        If Ni + (iLongueur - N) <= iLignes Then
            For i = Ni + 1 To iLignes
                For j = 1 To vLargeurs(i, 1)
                    S = S & vSignes(i, j)
                    If N < iLongueur Then
                        Combine vSignes, lSol, nSol, N + 1, i, S
                    Else
                        nSol = nSol + 1
                        Range(scSortie).Offset(nSol - 1).Value = S
                    End If
                    S = OldS
                Next j
            Next i
        End If
     
        Range(scParam).Offset(3).Value = nSol
     
    End Sub

  11. #91
    Membre régulier
    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
    Points : 90
    Points
    90

Discussions similaires

  1. Réponses: 20
    Dernier message: 05/03/2009, 03h46
  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, 17h22
  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, 15h31
  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, 17h12
  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, 10h39

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