Bonjour,
Je suis nouveau sur le forum et débutant en VBA. Depuis quelque temps je cherche à résoudre une problématique "pas à pas" en dénichant des solutions de part et d'autre, mais premièrement je ne suis pas convaincu d'aller dans la bonne direction pour avoir un code optimal, et deuxièmement à chacune des ces étapes (potentiellement inutile) je me heurte à des erreurs que je ne comprends pas. Voici ma question :
Je voudrais intégrer dans un classeur Excel 2 tableaux dans 2 feuilles séparées, puis dans une troisième feuille éditer un tableau dont les valeurs dépendent des 2 premiers (avec dans chaque cellule du 3e tableau le ratio des cellules correspondantes des 2 premiers tableaux). Il existe des solutions sans VBA, mais lorsque je veux faire ce 3e tableau je ne connais pas forcément le nombre de lignes et de colonnes des 2 premiers tableaux. Et comme je dois faire cette édition régulièrement ce serait plus simple de lancer la macro plutôt que de reporter les formules de lignes en ligne et de colonne en colonne en changeant à chaque fois le 3e argument de la fonction "vlookup"...
Je suis quand même parti sur la fonction vlookup dans le code VBA qui me permettrait de retrouver en fonction de mes étiquettes de lignes les valeurs à comparer. Pour l'utilise il faut donc que j'y inclue les champs où elle va piocher les données dans les 2 premiers tableaux, or ces champs ont un nombre de lignes/colonnes inconnu. Voici mon début de code qui ne fonctionne malheureusement pas (et qui doit paraître horrible pour les yeux de visualbaseurs aguerris) :
Merci de me dire ce que vous en pensez, ce que je pourrais corriger, si je suis très loin d'une solution beaucoup plus efficace et si vous avez des pistes de tutos à me conseiller (et donc merci mille fois!)
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 sub edition_matricecomparee () Dim Table1 as Range, Table2 as Range Dim derlig1 as long, dercol1 as long, derlig2 as long, dercol2 as long derlig1 = sheets("1").cell.find("*", , , , xlByRow, xlPrevious).Row dercol1 = sheets("1").cell.find("*", , , , xlByRow, xlPrevious).Column derlig2 = sheets("2").cell.find("*", , , , xlByRow, xlPrevious).Row dercol2 = sheets("2").cell.find("*", , , , xlByRow, xlPrevious).Column 'normalement derlig1=derlig2 et dercol1=dercol2 Set table1= worksheets("1").range(cells(1,1), cells(derlig1,dercol1)) Set table2= worksheets("2").range(cells(1,1), cells(derlig2,dercol2)) 'là j'ai un pb quand je rentre cette deuxième ligne "set", alors que la première toute seule a l'air d'être correcte For n = 2 to derlig1 'numéro de ligne For i =2 to dercol1 'numéro de colonne worksheets("3").cells(n,i) = Application.function.vlookup(cells(n,1),table1,i,false)/Application.function.vlookup(cells(n,1),table2,i,false) end End sub
Partager