Jac demande:
Je génère des tableaux, même nombre de colonnes mais à chaque fois un nombre de lignes différent. Je peux déterminer sans problème la dernière ligne et la dernière colonne pour faire les calculs dont j'ai besoin dans une macro. Maintenant, le but est d'ajouter dans cette macro la possibilité de nommer la table (avec le même nom à chaque fois), mais dans la macro la plage de cellules associée à la feuille de calcul est R1C1: RxCy, je ne sais pas comment écrire la plage en utilisant les valeurs lastrow et lastcolumn (qui représentent la dernière colonne et ligne du tableau) avec le système RC (je ne sais même pas si c'est possible).
La plupart des programmeurs VBA utiliseraient la méthode suivante, qui utilise la méthode Names.Add.
Sub Method1() LastRow = Cells(65536, 1).end(xlUp).row LastCol = Cells(1, 255).End(xlToLeft).column MyArea = "='" & ActiveSheet.Name & "'!R1C1:R" & LastRow & "C" & LastCol ActiveWorkbook.Names.Add Name:="TheData", RefersToR1C1:=MyArea End Sub
Il existe une méthode plus simple pour attribuer un nom de plage. Les quatre déclarations suivantes sont toutes équivalentes. Les deux derniers sont beaucoup plus faciles:
ActiveWorkbook.Names.Add Name:="TheData", RefersToR1C1:="=Sheet1!R1C1:R10C5" ActiveWorkbook.Names.Add Name:="TheData", RefersTo:="=Sheet1!A1:E10" Range("A1:E10").Name = "TheData" Cells(1, 1).Resize(10, 5).Name = "TheData"
Jac - J'adapterais la dernière ligne pour utilisation:
Sub Method2() LastRow = Cells(65536, 1).end(xlUp).row LastCol = Cells(1, 255).End(xlToLeft).column Cells(1, 1).Resize(LastRow, LastCol).Name = "TheData" End Sub
J'ai appris ce raccourci pour attribuer des noms de plage à partir de la référence du programmeur VBA Excel 2002 de Bovey & Bullen. La version 2002 de ce livre tourne autour de la version 2000. Pour mon argent, tout programmeur Excel VBA a besoin de ce livre à sa droite. Ma copie est à oreilles de chien et jamais hors de portée.