Constitution d'une feuille comparative

Bonjour,

Je dois créer sur une feuille un tableau comparatif regroupant des données venant d'autres feuilles qu'on appellera FeuilDonnées.

Pour l'instant il n'y a que 3 FeuilDonnées mais à terme il y en aura plusieurs.

Chaque FeuilDonnées à un nom qui est spécifié en A1 de chaque FeuilDonnées.

La première colonne de mon tableau comparatif sur la Feuille 1 est une liste des noms de ces Feuilles données.

Je connais déjà la fonction Array mais comme ceux qui utiliseront ce fichier pourront ajouter d'autre FeuilDonnées cela me complique la tache. Voici le code que j'ai commencé à mettre en place mais qui ne fonctionne pas :

Sub ActualiserListeFeuilDonnées()

Dim i As Integer

Dim NomFeuilDonnées(i) As Variant

With ThisWorkbook

For i = 0 To 2 'pour l'instant 3 FeuilDonnées mais apres nombre possible illimité

NomFeuilDonnées(i) = Array(Sheets(i + 2).Range("A1")) 'déclaration des valeur de la variable NomFeuilDonnées

With Sheets("Comparatif")

Sheets("Comparatif").Cells(i + 2, 1) = NomFeuilDonnées(i) 'mise en place de ces nom en liste à partir de la cellule B2

End With

Next i

End With

End Sub

Pouvez-vous m'aider svp ?

Bonjour,

Essaye le code suivant :

Sub ActualiserListeFeuilDonnées()
    Dim i As Integer
        For i = 2 To Sheets.Count
            Sheets("Comparatif").Cells(i, 1) = Sheets(i).Range("A1")
        Next i
End Sub

parfait cela marche à la perfection ! merci beaucoup à toi

juste par curiosité si il y a un nombre illimité de nouvelles feuilles de données cela marche aussi ?

Re,

Oui grâce à cette méthode qui compte le nombre total des feuilles présentes :

For i = 2 To Sheets.Count

Ok merci sheet.count va bien me servir.

Quand je compare le nombre de lignes de ta solution et de mon code avant ton aide je rigole !

Sur la feuille du tableau comparatif je doit comparer chaque FeuilDonnées en fonction de 5 critères qui seront importé de la même manière que le NomFeuilDonnées dans les colonnes B,C,D,E et F. Donc pour ça pas de problèmes.

Mais là ou cela se corse c'est que le but de ce tableau est d'effectuer un classement de chaque FeuilDonnées en fonction de ces 5 critères et donc il pourra effectuer un classement des ces 5 critères en fonction de leur importance à ses yeux (via un formulaire surement mais ça je sais faire) et la liste des FeuilDonnées dans le tableau va bouger selon le choix du degrés d'importance de ces critères. (en ligne 2 la FeuilDonnées ayant la meilleure composition possible des 5 critères, en ligne 3 la FeuilDonnées ayant la 2ème meilleure composition etc...).

Mais là ou c'est encore plus difficile c'est que si, par exemple :

Le critère n°2 est le plus important, que le critère n°1 est le deuxième plus important, le n°3 le troisième, le n°4 le quatrième, le n°5 le cinquième.

La FeuilDonnées1 ne doit pas être classée première juste parce qu'elle est la première sur le critère n°2 (le plus important). Par exemple si la FeuilDonnées2 et moins bien classée sur le critère n°2 (le plus important) mais mieux classée sur le critère n°1(le deuxième plus important) et à égalité sur les 3 derniers critères, alors cette la FeuilDonnées2 méritera peut-être d’être devant la FeuilDonnées1 dans le classement.

Malheureusement cela dépasse mes capacité actuelle en VBA et je n'ai pour l'instant aucune idée pour aborder ce problème. Peut être mettre en place une pondération des critères modifiable par l'utilisateur mais alors là je ne sais pas comment faire.

Auriez-vous svp une idée de code pour gérer ça ? ou auquel cas une piste à explorer ?

A oui et j'oubliai aussi que les colones correspondant aux critères (B à F) du tableau comparatif doivent bouger en fonction de leur degrés d'importance : colonne B le plus important à colonne F le moins important

help please

Re,

C'est normal, t'est un junior. .

Ceci dit moi je ne compte pas le nombre de lignes dans un programme.

La qualité d'un programme réside avant tout :

  • au résultat attendu qu'il donne
  • si possible évolutif
  • moins de maintenance possible
  • un minimum voire zéro (utopic dirait-on) de bugs

Dans ton programme, :

1 - Tu fais référence à "ThisWorkbook". Je ne le référence pas car j'y suis. ça m'enlève 2 lignes avec With et End With

2 - Tu crées une variable de type tableau pour mémoriser les feuilles, je ne les mémorise pas, car je les ai sous la main

Accessoirement, une variable ça consomme de la mémoire même si ici ce n'est pas grand chose.

3 - Tu fais référence à "Sheets("comparatif")". Je ne le référence pas car je le connais d'avance. ça m'enlève 2 lignes de plus avec With et End With

Edit : Attends voir, t'es parti sur autre chose maintenant.

merci de l'explication ça va me permettre d'alléger mon code maintenant.

Désolé j'aurai peut-être du en parler dès le début...

Rechercher des sujets similaires à "constitution feuille comparative"