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 :

classer des mots


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Par défaut classer des mots
    bonsoir

    je souhaiterais classer des mots dans un ordre quelconque via une fonction excel.

    pour exemple je prends les chiffre de 1 à 5 ( au lieu de mots ici)
    se trouvant respectivement dans les A1,A2... A5.
    je souhaiterais avoir toutes les combinaisons possibles de classement de ces chiffres :
    1er choix : le 2 dans A1,le 3 dans A5, le 1 dans A2, le 5 dans A4, le 4 dans A3
    2eme choix : le 2 dans A5,le 3 dans A4, le 1 dans A3, le 5 dans A2 le 4 dans A1
    et ainsi de suite jus'à avoir toutes les possibilités.

    savez vous comment faire cela si c'est possible ( sans le faire manuellement : l'idée est de le généraliser à n mots)?

    merci de votre aide et j'espère avoir été clair.

  2. #2
    Rédacteur/Modérateur


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

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonsoir.

    Si j'ai bien compris, tu souhaites obtenir la liste des permutations possibles des mots.

    Pour n mots, tu auras n! permutations possibles, ce qui devient vite énorme (pour 3 mots, tu as six permutations possibles, pour 6 mots, tu en as 720...).

    Les fonctions d'Excel ne permettent pas cela et tu dois donc t'orienter vers de la programmation en VBA...
    "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...
    ---------------

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Par défaut
    bonsoir,

    oui il est bien question de permutation ici
    et le faire en code vba c'est long et difficile?
    car j'avais commencé à intégrer les mots dans une variable variant et la parcourir mais cela ne amrche pas
    j'ai aussi essayé de d'incrementer une variable i a chaque fois pour prendre les mots mais je n'ai que quelques cas....
    merci de l'aide apportée

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    251
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 251
    Par défaut
    bonjour

    j'ai essayé un autre méthode qui est de considerer le nimero de ligne d'un mot et de l'incrementer de un à chaque fois et revenir a 1 si ce nombre dépasse le nombre total de mot mais cela ne marche pas bien car des mots sont oubliés ou effacés...

    quelqu'un aurait il une piste?

    merci

  5. #5
    Membre Expert
    Femme Profil pro
    Data engineer
    Inscrit en
    Juin 2007
    Messages
    673
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Data engineer
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2007
    Messages : 673
    Par défaut
    Bonjour,
    Un petit sujet sur le forum à propos du calcul de combinaisons :ici

  6. #6
    Membre émérite
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Par défaut
    Si tu as l'abitude à manipuler d'autres base que le decimal c'est pas trop compliqué...
    voici une petite exemple coté didactique adapte le selon tes besoins
    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
    Option Explicit
    Option Base 0
    Private Sub CommandButton1_Click()
    Dim Tokens
    Dim Sys As Long
    Dim Idx As Long
    Dim dg As Long
    Dim NDigit As Long
    Dim V As Long
    Dim Msg As String
     
    NDigit = 2 'nombre de chiffres
     
    'Tokens = Array("0", "1")'binnaire
    'Tokens = Array("0", "1", "2", "3","4","5","6","7")'octale
    'Tokens = Array("0", "1", "2", "3","4","5","6","7","8","9")'decimale
    'Tokens = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F") 'hexadecimal
    Tokens = Array("A", "B", "C", "D")
     
    Sys = UBound(Tokens) + 1
    For Idx = 0 To (Sys ^ NDigit) - 1
       V = Idx
       Msg = ""
       For dg = 1 To NDigit
          Msg = Tokens(V Mod Sys) & Msg
          V = V \ Sys
          'If V = 0 Then Exit For 'supprime les zéros devant les nombres positifs 00001
       Next
       MsgBox Msg & " valeur scalaire : " & Idx
    Next
     
    End Sub
    Regarde ici et ici

Discussions similaires

  1. Comment classer les mots clés des différents langages existants ?
    Par rambc dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 01/02/2010, 18h45
  2. Comment changer des mots dans un fichier?
    Par ptitbonum dans le forum Linux
    Réponses: 5
    Dernier message: 07/04/2004, 23h42
  3. Mettre la première lettre des mots en majuscule
    Par seb.49 dans le forum Langage
    Réponses: 8
    Dernier message: 23/05/2003, 14h26
  4. Au sujet des mots de passe
    Par FranT dans le forum Langage
    Réponses: 6
    Dernier message: 17/09/2002, 22h16

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