VBA, Afficher tt combinaisons depuis listes?

Résolu
tartino Messages postés 8 Statut Membre -  
tartino Messages postés 8 Statut Membre -
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. Paf
     
    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
  2. Paf
     
    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
  3. tartino Messages postés 8 Statut Membre
     
    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. Paf
       
      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
  4. tartino Messages postés 8 Statut Membre
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. tartino Messages postés 8 Statut Membre
     
    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. Paf
       
      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. tartino Messages postés 8 Statut Membre
       
      Merci pour ton temps et ton aide précieuse.
      0
    3. Paf
       
      Je planche pour utiliser les nom de liste, pas fini mais possible!
      0
    4. tartino Messages postés 8 Statut Membre
       
      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