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

VB 6 et antérieur Discussion :

combinaison de lettres


Sujet :

VB 6 et antérieur

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 38
    Points : 44
    Points
    44
    Par défaut combinaison de lettres
    bonjour à tous,
    je souhaite faire apparaitre dans une chaine, la combinaison de plusieurs lettres, ex: ABC donne les combinaisons suivantes, AB, AC, ABC.., comment convertir en VB cette appli
    merci d'avance

    Tous mes remerciements à tous et particulièrement à UCfoutu qui a donné beaucoup de son temps pour résoudre mon problème, il a bien mérité de se servir un coup avec se satané cocktail, en tout cas je vais le faire à sa santé. Encore merci et amusez-vous bien avec son code qui peut servir à toute combinaison.
    le papou

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Bonjour,

    Il s'agit là non seulement de toutes les permutations n à n, mais également de toutes les combinaisons intermédiaires (sur une partie de l'ensemble)...
    Sur combien de lettres maximum comptes-tu "travailler" ? (car tu riques fort d'arriver très vite à un nombre à ce point élevé de toutes ces combinaisons que tu n'auras plus de place pour les stocker

    Commence à préparer ton algorithme et tu comprendras vite ce que je veux dire...

  3. #3
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 955
    Points
    55 955
    Billets dans le blog
    131
    Par défaut
    Bonjour

    Cela ressemble fort à un exercice de cours...

    Déjà, il faudrait préciser ce que tu souhaites obtenir, car le mot "combinaison" employé ici ne correspond pas à ce qu'on en entend habituellement.

    De plus, avant de coder, il faut trouver l'algorithme, quel que soit le langage (ou presque). Après, traduire cela en VB, c'est uniquement traduire la logique dans une langue précise et, si l'algo est bien écrit, ce n'est rien de bien compliqué...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 38
    Points : 44
    Points
    44
    Par défaut combinaison de lettres suite
    le nombre de combinaisons à trouver est égal à 2 à la puissance du nombre de lettres à trouver moins 1, exemple le nombre de combinaison pour la chaine
    ABCD = 2puis4-1 soit 16-1 soit 15 possibilités.
    Je souhaite faire un algo sur 5 positions soit 31 combinaisons. Il est bien évident que l'on peut remplacer les lettres ABCDE par chaine1,chaine2..., pour les associer. Peux importe le langage effectivement.
    Merci encore pour votre participation
    @+

  5. #5
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 955
    Points
    55 955
    Billets dans le blog
    131
    Par défaut
    Citation Envoyé par papoulouis Voir le message
    ...le nombre de combinaison pour la chaine
    ABCD = 2puis4-1 soit 16-1 soit 15 possibilités. ...
    C'est inexact, quelle que soit l'interprétation que l'on puisse avoir de l'exemple que tu donnes dans ton premier message...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    ouais,

    moi je compte lamentablement à cette heure-ci et à mon âge...
    Mais, vite fait ... :
    pour n éléments en permutation (des n éléments), déjà : n! (factorielle n)
    ensuite : pour chacune des extractions de n-1, n-2, n-3, etc... éléments possibles parmi n éléments :
    (n-1)!, (n-2)!, (n-3)! etc...
    si l'on tient maintenant compte du fait que le nombre de x extractions (avec x variable de 1 à n-1) parmi n éléments est lui même grand (cherche la formule)...
    Cela va te faire "beaucoup de monde" à stocker ...

    EDIT : Avec 5 éléments seulement ça reste largement jouable, toutefois ...
    allez : fais ton algo ...

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 38
    Points : 44
    Points
    44
    Par défaut combinaison de lettres suite2
    si, si, mon approche est bonne ! en effet, il ne faut utiliser deux fois la même chaîne et mon but étant de connaitre les associations de "fruits et légumes", à savoir : si nous avons des POMMES, POIRES, PECHES, ABRICOT, BANANE, on peut faire une combinaison de pommes et poires, de pommes-poires-pêches, pommes-poires-pêches-abricot, pommes-peches.... mais jamais deux fois le même fruit ! et ce qui est valable pour les fruits, peut l'être pour les fruits et les agrumes voir les deux mélangés. Je n'ai pas commencé mon algo et si quelqu'un peut me mettre sur une piste, il est le bienvenue. Merci d'avance

  8. #8
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Ceci est bien plus facile, alors

    Tu veux "une piste" ?
    La voilà

    prendre tour à tour un seul élément de ta liste de n éléments et le suppromer de la liste
    pour chaque élément pris et jusqu'ai nombre R d'éléments restant :
    lui adjoindre 1 seul élément parmi les autres, puis 2, puis 3 ... puis R

  9. #9
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Ayé ?

    Petite illustration :
    Une Form
    1 listbox List1
    Une listbox List2
    1 bouton de commande Command1

    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
    Option Explicit
    
    Private Sub Form_Activate()
     List1.AddItem "pommes"
     List1.AddItem "poires"
     List1.AddItem "pêches"
     List1.AddItem "abricots"
     List1.AddItem "cerises"
    End Sub
    
    Private Sub Command1_Click()
     Dim toto As String, i As Integer, titi As String, j As Integer
     While List1.ListCount > 0  ' CORRECTION ICI
       toto = List1.List(0)
       List2.AddItem toto
       List1.RemoveItem 0
       For i = 0 To List1.ListCount - 1
         titi = toto
         For j = i To List1.ListCount - 1
           titi = titi & "-" & List1.List(j)
           List2.AddItem titi
         Next
       Next
     Wend
    End Sub

  10. #10
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    T'es sur de toi ?
    L'UC est foutue ?
    Petite indication, le nombre total de combinaisons c'est 31 (1 +5+10+10+5) - cherche le bug

  11. #11
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Bonjour, DarkVader,

    Je ne suis sûr de rien...
    Mais tu peux me dire quels sontt les "cocktails" absents ?

    Il semble par contre qu'une correction que j'avais faite a disparu !!!
    (un oubli de valider la modif, sûrement )
    C'est > 0 et pas > 1 ...
    Je recorrige...

  12. #12
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Pommes-Poires-Abricot-Cerise par exemple

  13. #13
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Ouaip ...
    Tu as raison...
    je m'y mets donc à nouveau

  14. #14
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 955
    Points
    55 955
    Billets dans le blog
    131
    Par défaut
    Uc... Ta correction y est toujours, ou je n'ai plus les yeux en face des trous...

    N'y aurait-il pas une solution avec une récursive?
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  15. #15
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Bonjour, Pierre,

    regarde bien :
    Dernière modification par ucfoutu Aujourd'hui à 18h56.


    Oui, je vais en effet rechercher (mais demain) en utilisant la récursivité...

  16. #16
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    38
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 38
    Points : 44
    Points
    44
    Par défaut bravo pour le cocktail UCfoutu
    tout d'abord tous mes encouragements pour la suite (c'est déjà pas mal) mais en plus maintenant je dois donner une valeur à chaque combinaison et le chiffre obtenu ne doit jamais être présent plus d'une fois, j'ai trouvé les valeurs suivantes mais sans vraiment de règle mathématique,
    à savoir : 3 / 7 / 11 / 17 / 23
    exemple : pommes = 3, poires=7, pêches=11, abricots=17 et cerises=23
    et si on additionne ces valeurs à chaque combinaison on ne trouve jamais 2 fois la même valeur, mais comment faire pour obtenir ces valeurs et surtout si j'ajoute un élément quel doit-être sa valeur ?
    encore merci pour votre attention à tous
    le papou

  17. #17
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 067
    Points : 17 155
    Points
    17 155
    Par défaut
    exemple : pommes = 3, poires=7, pêches=11, abricots=17 et cerises=23
    exemple : pommes = 1, poires = 2, pêches = 4, abricots = 8 cerises = 16, bannanes = 32, raisins = 64, ananas = 128, ......= 256, ..... 512, .... 10??
    Cette suite me rappel quelque chose
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  18. #18
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Bonsoir,



    Edit : si j'ai bien compris, la question dont devrait faire l'objet ta 2ème discussion serait du genre :
    "comment établir la suite la plus "économique" de nombres tels qu'en aucune manière l'addition de certains d'entre eux ne puisse conduire à un résultat identique à celle d'un nombre égal ou non d'autres nombres de cette suite."

  19. #19
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Bonjour,

    Bon...

    Ras-le-bol et les yeux qui en ont marre de voltiger entre les variables...

    J'ai fini par décider de prendre le problème à "rebrousse-poil", ainsi :

    Un bouton de commande Command1 et une listbox nommée reslst :

    code :

    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
    Option Explicit
    Dim nb As Integer
    Private Sub Command4_Click()
     Dim choses
     choses = Array("pommes", "poires", "pêches", "abricots", "cerises")
     Dim i As Integer, debut As Integer, fin As Integer, j As Integer, toto As String
     reslst.Clear
     reslst.Visible = False
     nb = UBound(choses) + 1
     For i = 1 To nb
         reslst.AddItem i
       Next
     debut = 0
     fin = reslst.ListCount - 1
     Do
       For i = debut To fin
         For j = Val(reslst.List(i)) + 1 To nb
           toto = j & "-" & reslst.List(i)
           If Right(toto, 1) <> "-" Then
             reslst.AddItem toto
           Else
             Exit Do
           End If
         Next
       Next
       debut = fin + 1
       fin = reslst.ListCount
     Loop
     retablissons choses, reslst
     reslst.Visible = True
     MsgBox reslst.ListCount & " cocktails"
    End Sub
    Private Sub retablissons(c As Variant, r As Control)
      Dim t, i As Integer, j As Integer
      For i = 0 To r.ListCount - 1
        t = Split(r.List(i), "-")
        For j = 0 To UBound(t)
          r.List(i) = Replace(r.List(i), t(j), c(Val(t(j) - 1)))
        Next
      Next
    End Sub
    J'ai maintenant le tournis et n'ai plus envie de "fouiller" dans les résultats pour contrôler...
    Quelqu'un pour le faire ?
    Bonne journée.

    EDIT :
    Une explication succincte, quand-même :
    En reprenant la dernière liste intermédiaire "précédente", à chaque fois, je constitue une nouvelle liste intermédiaire par concaténation "en avant" des valeurs supérieures à la valeur de l'article. Comme je constitue cette liste sous forme de rangs (numériques, donc), il m'est alors facile de savoir où j'en suis (puisque Val("3-2"), par exemple, = 3).
    Lorsque tout est terminé de cette manière, j'éclate chaque ligne avec un split sur "-" et remplace chaque rang par sa traduction en fruit).
    Cette méthode est assez "hussarde", mais j'en avais marre, d'une part, et, d'autre part, elle s'avère très rapide.

    Pour les puristes (je me jette en avant pour ne pas avoir à y revenir) : on notera que j'emploie 2 "variant" (par exemple Dim t pour mon split). Il vous sera (à vous) possible de typer plus purement si vous le souhaitez avec VB6. Moi, je travaille avec VB5 (donc avec mon propre Split) et il ne m'est pas possible de faire autrement ...

  20. #20
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    C'est mieux

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/02/2013, 14h03
  2. combinaison de lettres
    Par memedplay dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 10/12/2012, 21h11
  3. [RegEx] combinaison de lettre.
    Par lequebecois79 dans le forum Langage
    Réponses: 3
    Dernier message: 02/02/2012, 00h39
  4. Algorithme de combinaison de lettres
    Par Puma24 dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 26/01/2009, 19h55
  5. [Tableaux] toute combinaison de lettres possible
    Par olkabil dans le forum Langage
    Réponses: 5
    Dernier message: 10/06/2008, 17h50

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