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. #61
    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
    Points : 1 435
    Points
    1 435
    Par défaut
    re,
    pour lancer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    '----- appel codage
        LargeurCode = 4
        NombreDeLigne = 5
        LigneTab = 0
        ColLig1 = 1
        ReDim TabResult(0)
        Call Codage("Code2", 1)
    @+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

  2. #62
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonsoir tout le monde,

    Hello Jacques, l'informatique n'est absolument pas ma profession (je suis artisan dans le bâtiment) et je n'ai donc pas ta logique informatique d'où la sortie des rames
    Je vais attendre que tu postes ton code et l'éplucher afin de mieux saisir ce que tu me dis !
    Amitiés et bonne soirée

  3. #63
    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 unparia Voir le message
    Ce serait là faire en vba une partie du mécanisme Javascript "piqué" sur la toile par le fiston du demandeur
    Ah non ! je m'insurge, c'est son oeuvre, il est développeur. Je cherchais une logique, il m'a donné la sienne.

    Quant à moi, j'ai d'autres occupations et je ne peux travailler à plein temps dessus. Excusez-moi donc si je mets du temps à vous montrer mon code.

    Blaise

  4. #64
    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
    Points : 1 435
    Points
    1 435
    Par défaut
    bonjour,
    Nom : Animation (1).gif
Affichages : 364
Taille : 1,70 Mo

    @+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. #65
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Je comprend tout à fait la notion de tableau de tableaux là où je bloque, c'est la concaténation des lettres, je pense qu'une fonction récursive est nécessaire afin d'éviter les multiples boucles que ça demande.
    Dans le code ci-dessous, j'utilise des types Utilisateur afin que les dimensions des tableaux soient des propriétés pour une plus simple compréhension.
    Je dois allez bosser, je regarderai plus tard pour l'assemblage si j'y arrive :
    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
     
    ype Enfants
        Ligne As Integer
        Colonne As Integer
        Valeur As String
    End Type
     
    Type Parents
        Ligne As Integer
        Colonne As Integer
        Valeur As String
        Enfant() As Enfants
    End Type
     
    Sub Test()
     
        Dim Famille() As Parents
        Dim Tbl() As String 'pour la récupération des concaténations
        Dim Plage As Range
        Dim I As Integer
        Dim J As Integer
        Dim K As Integer
        Dim L As Integer
        Dim T1 As Integer
        Dim T2 As Integer
     
        With Worksheets("Feuil1"): Set Plage = .Range(.Cells(1, 1), Cells(5, 3)): End With
     
        'parcours la plage par colonne
        For I = 1 To Plage.Columns.Count
     
            'et chaque colonne par ligne bien sûr !
            For J = 1 To Plage.Rows.Count
     
                If Plage(J, I).Value <> "" Then
     
                    'mémorise la position et valeur
                    T1 = T1 + 1
                    ReDim Preserve Famille(1 To T1)
                    Famille(T1).Colonne = I
                    Famille(T1).Ligne = J
                    Famille(T1).Valeur = Plage(J, I).Value
     
                    'idem...
                    For K = 1 To Plage.Columns.Count
     
                        For L = J + 1 To Plage.Rows.Count
     
                            If Plage(L, K).Value <> "" Then
     
                                'les frères/enfants
                                T2 = T2 + 1
                                ReDim Preserve Famille(T1).Enfant(1 To T2)
                                Famille(T1).Enfant(T2).Colonne = K
                                Famille(T1).Enfant(T2).Ligne = L
                                Famille(T1).Enfant(T2).Valeur = Plage(L, K).Value
     
                            End If
     
                        Next L
     
                    Next K
                    T2 = 0
                End If
     
            Next J
     
        Next I
     
        'ici, une fonction récursive afin d'éviter les multiples boucles nécessaires pour assembler les lettres !
        'le contrôle devant être fait sur la valeur de la Colonne afin d'éviter les niveaux parallèles
        '...
        '...
        '...
     
        'pour un test des valeurs dans les tableaux dans la fenêtre d'exécution :
        For I = 1 To UBound(Famille)
     
            Debug.Print Famille(I).Valeur
     
            If Not (Not Famille(I).Enfant) Then
     
                For J = 1 To UBound(Famille(I).Enfant)
     
                    Debug.Print " ---"; _
                        IIf(Famille(I).Enfant(J).Colonne = Famille(I).Colonne, "frères", _
                        IIf(Famille(I).Enfant(J).Colonne > Famille(I).Colonne, "enfants", "parent")); _
                        " de "; Famille(I).Valeur; " : "; Famille(I).Enfant(J).Valeur
     
                Next J
     
            End If
     
        Next I
     
    End Sub
    bonne journée à tout le monde et bonne cogitation !!!

  6. #66
    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 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re bonjour
    le soucis mjpmjp c'est que ton model démarre en ligne 1 de la plage et garde cet indice alors que tant que 3 caractères peuvent entre pris dans les lignes avant G et D doivent être pris en compte


    autrement dis EXEMPLE ICI

    E
    H B
    A C F
    Q P R
    G
    D
    LES CODES COMMENCERONT PAR E ou H ou B et même A

    SANS COMPTER QUE LE 3 ET 4 EME CARATERES PEUVENT ETRE G et D

    DONC SELON SA DEMANDE ET CES EXPLICATION EN IMAGES

    ici PAR EXEMPLE
    EHPG POUR LE DEPART EN LIGNE 1
    ICI PAR EXEMPLE
    BCQD POUR LE DEPART EN LIGNE 2
    EXEMPLE ICI
    ARGD POUR LE DEPART EN LIGNE 3 EN CONSIDERANT QUE G ET D SONT INCLUS

    c'est bien pour ca que j'ai dis qu'il fallait une sacrée mécanique

    ON EST DONC dans une boucle ligne englobant une seconde boucle ligne ayant pour indice de depart la iteration de la première
    puis la boucle sur colonne
    et cela pour 4

    il faut aussi prévoir une boucle sur 2 puisque G et D peuvent être ensemble dans un même code

    je le redis: vous êtes pas sortis l'auberge

    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

  7. #67
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Coucou à tous,

    Pour l'instant je ne vais pas vous présenter vraiment un code car je ne suis pas encore satisfait du résultat (même si je pense que la logique s'en approche, mais peu être que je me trompe).
    Pour moi il y a 2 grandes parties :
    - le décalage (que l'on pourrait programmerez façon automatique selon les paramètres choisis)
    - les combinaisons aidées par une récursivité

    PS : mon tableau principal commence à 1 les Arrays intérieurs commencent à l'indice 0.

    Bout de code de départ le reste n'ayant que peu d'importance puisque je n'ai toujours pas ma fonction récursive.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test7()
    Dim i&, h&, Coll As New Collection
        DL = Cells(Rows.Count, 1).End(xlUp).Row
        VA = Application.Transpose(Range("A1:A" & DL).Value)
        For i = LBound(VA) To UBound(VA)
            VA(i) = Split(VA(i), " ")
        Next
     
        For Decaler = 1 To UBound(VA) - (4 - 1)
            For TabArr = 0 + Decaler To 3 + Decaler
    La récursivité : je la vois un peu comme dans le Dir dans le sens que au lieu de le faire sur un dossier, je dois le faire sur un array intérieur (au tableau principal) à chaque fois que l'indice total est supérieur à 0, ce qui permettra de créer les combinaisons.
    C'est cette partie là qui est délicate car il faudra bien agencé le code de manière à prendre en compte l'ensemble des combinaisons. Le mieux est d'avoir une fonction.

    Une fois les combinaisons faites avec les lignes de 1 à 4, on décale de une ligne (de 2 à 5) et on recommence les combinaisons avec la récursivité pour les arrays intérieur dont l'indice total est supérieur à 0

    Voilà grosso modo je que je tente de faire (gymnastique de l'esprit rentre dans ma tête stp )
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  8. #68
    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 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    perso voila comment je vois la chose

    concaténer tout les caractère avant G et D
    ON A ainsi le nombre de code possible avec la puissance
    dans un do loop arrété par nombre
    prendre rnd*colonne de chaque ligne
    prendre que le left 3 EN 2 EXEMPLAIRES ajouter D ET G DANS L UN ET L AUTRE
    ATTENTION AUX DOUBLONS UN SIMPLE TEST AVANT D INTEGRER

    LE TOUT DANS UNE BOUCLE PRINCIPALE LIGNE BIEN ENTENDU


    une fois cela fini reprendre tous et ne garder que le left 2 des items EN 2 EXEMPLAIRES et ajouter G et D POUR LES COMBINAISON AVEC G ET D INCLUS

    EDIT/ je precise que l'utilation de le puissance n'est pas le bon mot ici

    pour obtenir le nombre de combi possible

    chaque ligne et x colonne doivent être multiplier par le nombre de colonne dans la ligne suivante :exepter G et D QUI NE DOIVENT PAS ETRE PRISE EN COMPTE POUR LE CALCUL

    EXEMPLE

    E
    H B4*2=2
    A C F *3=6

    etc.....

    edit
    @jacques
    non c'est pas aléatoire
    rnd avec randomize ne m'a jamais fait default
    il est vrai que cela peut variier d'une tentative a l'autre en terme de tour
    mais infini non


    après boucler par les index te contrains a sur et sou boucler e/ou de répéter soit en récursif soit en double exécution a cause des contraintes que j'ai cité précédemment
    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

  9. #69
    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
    Bonjour Patrick
    L'aléa étant un aléa et la loi des nombres étant la loi des nombres, la méthode que tu proposes-là pourrait fort bien aboutir dans certains cas (si pas de bol) à un traitement en boucle sans fin...

    (outre une autre faille de raisonnement, hein ...)
    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.

  10. #70
    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
    Points : 1 435
    Points
    1 435
    Par défaut
    bonjour,
    FINI la récursivité , vend des rétros satanas !!!!

    pour le même résultat , voila un code tout beau , tout propre

    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
     
    Dim TabResult() As String
    Dim TabCode() As String
    Dim TabTmp() As String
    Dim LargeurCode As Integer
    Dim NombreDeLigne As Integer
    Dim ColLig1 As Integer
    Dim ColLig2 As Integer
    Dim LigneTab As Integer
    Dim LigneSchema As Integer
    Dim FinCode As Boolean
    Dim FinDeCodage As Boolean
     
    Private Sub CommandButton1_Click()
        '----- appel codage
        ReDim TabResult(0)
        ReDim TabCode(0)
        ReDim TabTmp(1)
        TabTmp(1) = Cells(1, 1).Value
        LargeurCode = 4
        NombreDeLigne = 5
        ColLig1 = 1
        ColLig2 = 0
        LigneSchema = 2
        FinCode = False
        FinDeCodage = False
        Call Codage
    End Sub
    Private Sub Codage()
        Do
            ColLig2 = ColLig2 + 1
            If Cells(LigneSchema, ColLig2).Value <> "" Then
                ConstruireCode
            Else
                CopierCode
                TesterLargeurCode
                ChangerDeLigne
                If FinDeCodage Then Exit Do
            End If
        Loop
    End Sub
    Private Sub ConstruireCode()
        For n = 1 To UBound(TabTmp)
            ReDim Preserve TabCode(UBound(TabCode) + 1)
            TabCode(UBound(TabCode)) = TabTmp(n) & Cells(LigneSchema, ColLig2).Value
        Next n
    End Sub
    Private Sub CopierCode()
        If Not FinCode Then
            TabTmp = TabCode
            ReDim TabCode(0)
        End If
    End Sub
    Private Sub TesterLargeurCode()
        If LigneSchema = LargeurCode - 1 Then
            FinCode = True
        ElseIf LigneSchema >= LargeurCode Then
            AjouterNewCode
        End If
    End Sub
    Private Sub AjouterNewCode()
        FinTabResult = UBound(TabResult)
        ReDim Preserve TabResult(UBound(TabResult) + UBound(TabCode))
        For n = 1 To UBound(TabCode)
            TabResult(FinTabResult + n) = TabCode(n)
        Next n
        ReDim TabCode(0)
    End Sub
    Private Sub ChangerDeLigne()
        LigneSchema = LigneSchema + 1
        ColLig2 = 0
        If LigneSchema > NombreDeLigne Then FinDeCodage = True
    End Sub
    @+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

  11. #71
    Expert confirmé
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Points : 4 174
    Points
    4 174
    Par défaut
    Je n'achèterai pas tes rétros satanas, ni meme regarderai ton code (pour l'instant) pour avoir l'esprit libre de toute inspiration/création et me remettrai ce soir au travail (la trop de taf)
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre en n'oubliant pas d'indiquer qu'elle est la solution finale choisie

  12. #72
    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
    Salut Ryu
    pour avoir l'esprit libre de toute inspiration/création
    Ah !!! Que je suis content de lire de telles choses !
    Tu ne peux savoir à quel point cela me fait plaisir.
    Amitiés, Ryu.
    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.

  13. #73
    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
    Points : 1 435
    Points
    1 435
    Par défaut UNE petite PRESSION
    bonjour,
    non patricktoulon...pas cette pression

    Nom : Capture6.PNG
Affichages : 114
Taille : 10,2 Ko

    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
     
    Dim LargeurCode As Integer
    Dim NombreDeLigne As Integer
    Dim ColLig1 As Integer
    Dim ColLig2 As Integer
    Dim LigneDeb As Integer
    Dim LigneEnCours As Integer
    Dim LigneSchema As Integer
    Dim FinCode As Boolean
    Dim FinDeCodage As Boolean
    Dim TabResult() As String
    Dim TabCode() As String
    Dim TabTmp() As String
     
    Private Sub CommandButton1_Click()
        '----- appel codage
        LargeurCode = 4
        NombreDeLigne = 5
        ColLig1 = 1
        ColLig2 = 0
        LigneDeb = 1
        LigneEnCours = 2
        LigneSchema = LigneEnCours
        FinCode = False
        FinDeCodage = False
        '-----
        ReDim TabResult(0)
        ReDim TabCode(0)
        ReDim TabTmp(1)
        TabTmp(1) = Cells(LigneDeb, ColLig1).Value
        '-----
        Call Codage
    End Sub
    Private Sub Codage()
        Do
            ColLig2 = ColLig2 + 1
            If Cells(LigneSchema, ColLig2).Value <> "" Then
                ConstruireCode
            Else
                TesterLargeurCode
                CopierCode
                ChangerDeLigne
                If FinDeCodage Then Exit Do
            End If
        Loop
    End Sub
    Private Sub ConstruireCode()
        For n = 1 To UBound(TabTmp)
            ReDim Preserve TabCode(UBound(TabCode) + 1)
            TabCode(UBound(TabCode)) = TabTmp(n) & Cells(LigneSchema, ColLig2).Value
        Next n
    End Sub
    Private Sub CopierCode()
        If Not FinCode Then
            TabTmp = TabCode
            ReDim TabCode(0)
        End If
    End Sub
    Private Sub TesterLargeurCode()
        If UBound(TabCode) > 0 Then
            If Len(TabCode(1)) = LargeurCode Then
                FinCode = True
                AjouterNewCode
            End If
        End If
    End Sub
    Private Sub AjouterNewCode()
        FinTabResult = UBound(TabResult)
        ReDim Preserve TabResult(UBound(TabResult) + UBound(TabCode))
        For n = 1 To UBound(TabCode)
            TabResult(FinTabResult + n) = TabCode(n)
        Next n
        ReDim TabCode(0)
    End Sub
    Private Sub ChangerDeLigne()
        ColLig2 = 0
        ControlerStatutCode
    End Sub
    Private Sub ControlerStatutCode()
        If LigneSchema + 1 > NombreDeLigne Then
            If NombreDeLigne - LigneEnCours + 1 < LargeurCode Then
                'changement de LigneEnCours Impossible
                msg = "changement de LigneEnCours Impossible"
            Else
                LigneEnCours = LigneEnCours + 1
                LigneSchema = LigneEnCours
                ColLig2 = 0
                FinCode = False
                ReDim TabCode(0)
                ReDim TabTmp(1)
                TabTmp(1) = Cells(LigneDeb, ColLig1).Value
            End If
        Else
            LigneSchema = LigneSchema + 1
        End If
    End Sub
    on passe à la ligne 2 "H" et "B" ... le passage va se faire avec LigneDeb + 1

    @+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

  14. #74
    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
    Points : 1 435
    Points
    1 435
    Par défaut FINI : reste à contrôler avec un tableau plus grand
    bonjour,
    Nom : Capture7.PNG
Affichages : 116
Taille : 12,4 Ko

    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
     
    Dim LargeurCode As Integer
    Dim NombreDeLigne As Integer
    Dim ColLig1 As Integer
    Dim ColLig2 As Integer
    Dim LigneDeb As Integer
    Dim LigneEnCours As Integer
    Dim LigneSchema As Integer
    Dim FinCode As Boolean
    Dim FinDeCodage As Boolean
    Dim TabResult() As String
    Dim TabCode() As String
    Dim TabTmp() As String
     
    Private Sub CommandButton1_Click()
        '----- appel codage
        LargeurCode = 4
        NombreDeLigne = 5
        ColLig1 = 1
        ColLig2 = 0
        LigneDeb = 1
        LigneEnCours = 2
        LigneSchema = LigneEnCours
        FinCode = False
        FinDeCodage = False
        '-----
        ReDim TabResult(0)
        ReDim TabCode(0)
        ReDim TabTmp(1)
        TabTmp(1) = Cells(LigneDeb, ColLig1).Value
        '-----
        Call Codage
    End Sub
    Private Sub Codage()
        Do
            ColLig2 = ColLig2 + 1
            If Cells(LigneSchema, ColLig2).Value <> "" Then
                ConstruireCode
            Else
                TesterLargeurCode
                CopierCode
                ChangerDeLigne
                If FinDeCodage Then Exit Do
            End If
        Loop
    End Sub
    Private Sub ConstruireCode()
        For n = 1 To UBound(TabTmp)
            ReDim Preserve TabCode(UBound(TabCode) + 1)
            TabCode(UBound(TabCode)) = TabTmp(n) & Cells(LigneSchema, ColLig2).Value
        Next n
    End Sub
    Private Sub CopierCode()
        If Not FinCode Then
            TabTmp = TabCode
            ReDim TabCode(0)
        End If
    End Sub
    Private Sub TesterLargeurCode()
        If UBound(TabCode) > 0 Then
            If Len(TabCode(1)) = LargeurCode Then
                FinCode = True
                AjouterNewCode
            End If
        End If
    End Sub
    Private Sub AjouterNewCode()
        FinTabResult = UBound(TabResult)
        ReDim Preserve TabResult(UBound(TabResult) + UBound(TabCode))
        For n = 1 To UBound(TabCode)
            TabResult(FinTabResult + n) = TabCode(n)
        Next n
        ReDim TabCode(0)
    End Sub
    Private Sub ChangerDeLigne()
        ColLig2 = 0
        ControlerStatutCode
    End Sub
    Private Sub ControlerStatutCode()
        If LigneSchema + 1 > NombreDeLigne Then
            'test changement de LigneEnCours
            If NombreDeLigne - LigneEnCours + 1 < LargeurCode Then
                'changement de LigneEnCours Impossible
                msg = "changement de LigneEnCours Impossible , nombre de lignes restantes insufisant"
                'test changement de colonne dans ligneDeb ColLig1
                If Cells(LigneDeb, ColLig1 + 1).Value = "" Then
                    'changement de colonne impossible
                    msg = "changement de colonne Impossible , le cycle de LigneDeb est terminé"
                    'test changement de LigneDeb
                    LigneDeb = LigneDeb + 1
                    If LigneDeb > NombreDeLigne - (LargeurCode - 1) Then
                        FinDeCodage = True
                    Else
                        LigneEnCours = 3
                        LigneSchema = LigneEnCours
                        ColLig1 = 1
                        ColLig2 = 0
                        FinCode = False
                        ReDim TabCode(0)
                        ReDim TabTmp(1)
                        TabTmp(1) = Cells(LigneDeb, ColLig1).Value
                    End If
                Else
                    LigneEnCours = 2
                    LigneSchema = LigneEnCours
                    ColLig1 = ColLig1 + 1
                    ColLig2 = 0
                    FinCode = False
                    ReDim TabCode(0)
                    ReDim TabTmp(1)
                    TabTmp(1) = Cells(LigneDeb, ColLig1).Value
                End If
            Else
                LigneEnCours = LigneEnCours + 1
                LigneSchema = LigneEnCours
                ColLig2 = 0
                FinCode = False
                ReDim TabCode(0)
                ReDim TabTmp(1)
                TabTmp(1) = Cells(LigneDeb, ColLig1).Value
            End If
        Else
            LigneSchema = LigneSchema + 1
        End If
    End Sub
    je vais vérifier avec un tableau plus grand , et je reviens avec un schéma de variable

    @+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

  15. #75
    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
    Points : 1 435
    Points
    1 435
    Par défaut BUG
    bonjour,
    voila la nouvelle grille ( + 1ligne , + 1colonne)
    Nom : GT1.PNG
Affichages : 122
Taille : 8,3 Ko

    la ligne 1
    Nom : GTligne1.PNG
Affichages : 117
Taille : 25,1 Ko

    BUG ligne 2
    Nom : GTligne2.PNG
Affichages : 156
Taille : 20,4 Ko

    BUG ligne 3
    Nom : GTligne3.PNG
Affichages : 151
Taille : 35,2 Ko

    la colonne 1 des lignes 2 et 3 parait OK

    @+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

  16. #76
    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
    Points : 1 435
    Points
    1 435
    Par défaut
    re,
    ligne 1 : (manque)
    "EADZ" "XADZ"
    "EFDZ" "XFDZ"
    "ECDZ" "XCDZ"

    ligne 2 :colonne 1 =ok

    ligne 3 : seuls , les derniers codes sont ok
    "AGDZ" "FGDZ" "CGDZ"

    j'y retourne ...

    @+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

  17. #77
    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,

    Voilà, j'ai un peu de temps libre cette après-midi et je reviens vers vous.

    Je n'aurais jamais imaginé que cette discussion allait prendre cette ampleur !
    Je suis aussi désolé de ne pas avoir encore apporté une seule pierre à l'édifice, mais je n'en suis qu'à repotasser les modules de classe.

    pour info, le tableau de JP
    EX
    HB
    AFC
    G
    D
    Z
    Donne 91 combinaisons : https://jsfiddle.net/ob5jzLLf/10/

    À+, Blaise

  18. #78
    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 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    Bonjour blaise
    91 combinaisons avec 10 caracteres ,ca veux dire que j'ai raison depuis le debut il y a dans ces combinaisons les ordres et desordre

    si on ne devait prendre que les permutations, j'ai pas calculé mais il devrait y avoir environ 25 possibilités tout au plus
    comme ce point n'a toujhours pas été eclairci de ta part les autres galoppent

    edit:
    d'ailleurs je viens de tester ton JS
    et en fait il te sort 115 possibilités
    tu n'est pas sorti de l'auberge car au vu des resultat c'est meme un peu plus compliqué que ca (ordre et desordre oui mais avec degrevement progressif des item en lignes precedentes

    d'autant plus que quand on regarde ton tableau de base on a des plusieurs caracteres dans un meme item
    ce qui veux dire que des resultants final seront absents

    Nom : Capture.JPG
Affichages : 144
Taille : 125,1 Ko

    le mieux c'est que tu nous donne une base avec le resulat complet on comprendra mieux ton souhait je dis bien complet
    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

  19. #79
    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
    Bonjour !

    Citation Envoyé par patricktoulon Voir le message
    comme ce point n'a toujhours pas été eclairci de ta part les autres galoppent
    Ou ne perdent pas de temps à tenter de répondre, passent directement à la discussion suivante !  

    Problème de Nœuds …   au cerveau !

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Nigeria, New-York, Mogadicio, Barcelone, London, Manchester, Stockholm, Istanbul, Berlin, Nice, Bruxelles, Charlie, …
    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)

  20. #80
    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 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    ho!! tu sais marc perso ca fait rager un peu mais au fond ca nous fait un peu bosser sur des routines intéréssantes
    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

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