VBA, Afficher tt combinaisons depuis listes?

Résolu
Bonjour,
J'aurais besoin d'une liste reprennant toutes les combinaisons possibles afin de pouvoir effectuer des calculs dessus par apres. Voici la sitation.

J'ai 3 listes d'éléments constituants un mur:
5 types de parements extérieurs (PE)
10 types de matériaux porteurs (MP)
15 types d'isolants. (I)

J'aimerais qu'une macro m'affiche toutes les possibilités de combinaisons :

A B C
PE1 MP1 I1
PE1 MP1 I2
---
PE1 MP1 I15

PE1 MP2 I1
Et ainsi de suite. (750 possibilités si je me trompe pas)

Auriez-vous une idée du code qui pourrait réaliser cette liste?

Cordialement,

Tartino

5 réponses

  1. re,

    Voila le code à coller dans une macro; à adapter si le nom des feuilles ne correspond pas:

    Dim i As Integer, j As Integer, k As Integer, z As Integer 
    z = 0 
    For i = 1 To 5 
        For j = 1 To 10 
            For k = 1 To 15 
            z = z + 1 
            Worksheets("feuil2").Cells(z, 1) = Worksheets("feuil1").Cells(2 + i, 2) 
            Worksheets("feuil2").Cells(z, 2) = Worksheets("feuil1").Cells(7 + j, 2) 
            Worksheets("feuil2").Cells(z, 3) = Worksheets("feuil1").Cells(17 + k, 2) 
            Next k 
        Next j 
    Next i


    Cordialement
    1
    1. Bonjour

      les éléments sont au départ dans quelles cellules? (s'il s'agit d'Excel) et le résultat doit s'afficher où?
      sinon pas de difficultés!

      A+
      0
      1. J'ai une page excel avec la liste des matériaux ainsi que certaines caractéristiques.
        1ere colonne : Nom global (PE, SP, I)
        2eme : Nom matériau
        suivantes : caractéristiques

        Le résultat attendu serait 3 colonnes dans la page 2 du classeur
        1ere colonne : le parement
        2eme : la structure
        3eme : l'isolant

        chaque ligne représentant une combinaison des 3.

        Tartino
        0
        1. j'ai bien compris le résultat à obtenir.

          Mais pour afficher en feuille 2, il faut savoir ou sont les données que l'on va combiner
          par exemple
          les parements sont en feuille 1 de A1 à A5
          les structures de de B1 à B10
          ...
          0
      2. Pour le moment j'ai
        les Parements en B3:B7
        les Structures B8:B17
        les Isolants B18:B33

        Dans un premier temps peux-tu me proposer une solution en partant de ce cellules fixes.

        Cepandant ces listes pouraient changer par la suite. Serait-il possible de faire executer la macro à partir du nom des listes (insertion/name/define)

        merci.
        0
        1. Merci beaucoup ca marche (en tout cas dans un nouveau classeur. Je vais l'intégrer dans ma macro déjà existante.)

          Une dernière question, si je veux ajouter un calcul pour chaque ligne il faut bien que je l'ajoute avant le "nextk" n'est ce pas?

          Bien-à-toi et avec mes remerciement,

          Tartino.
          0
          1. Si tu as une action à faire pour chaque ligne de résultat, c'est effectivement entre for k... et next k
            Bon courage!
            0
          2. Merci pour ton temps et ton aide précieuse.
            0
          3. Je planche pour utiliser les nom de liste, pas fini mais possible!
            0
          4. Ok, ma macro le donne exactement ce qu'il me faut grace à ton aide. Mais j'aimerais que grace a une listbox multi la liste des materiaux élegibles a la macro soit modifiable directement.

            Mais bon ne te casse pas les dents dessus non plus j'ai quelques idée pour la suite je verrai bien.

            bonne semaine a toi.
            0