Variabiliser l'adressage de cellules

Bonjour,

Je voudrais poser une question théorique aujourd'hui.

L'un de mes principaux soucis dans la création de tableaux customisés en VBA vient de la rigidité imposée par l'adressage des cellules.

En gros, je construis mes tableaux avec des Cells (1,2).value etc et donc si quelqu'un insère une ligne ou une colonne, c'est inutilisable.

Quelle est la meilleure façon selon vous de rendre dynamique les tableaux, afin qu'ils ne soient pas impactés par l'insertion de lignes/colonnes ?

Merci d'avance,

Alcibiade

Bonjour,

Il semblerait que tu veuilles parler de tableaux constitués par affectation d'une plage de cellules (ses valeurs) à une variable.

Soit une variable de type Variant (cas qu'on utilise assez fréquemment), soit une variable déclarée comme tableau dynamique (de type Variant aussi dans ce cas).

Logiquement lorsque l'on procède ainsi, c'est pour déconnecter la variable de sa source. Ce qui arrive à la plage après affectation n'a pas d'incidence sur le tableau. Et c'est bien pour cela que l'on procède ainsi plutôt que d'affecter la référence de plage à une variable objet de type Range. Une variable Range resterait liée à la plage, en opérant sur la variable on impacte directement la plage...

Cordialement.

Merci MFerrand,

Sans aller jusqu'à l'affectation de plages de cellules à une variable, encore que cela m’intéresse dans un second temps, je pensais à un cas plus simple pour commencer.

imaginons pour rester simple, que j'ai une valeur en B2, donc la cellule (2,2) et que je veuille pouvoir continuer à utiliser cette valeur dans mon code, même si quelqu'un insère une ligne ou une colonne en ligne 1 ou colonne 1.

suis-je obligé de tout variabliser et passer en cells (i,j) par exemple ?

quel est le moyen le plus simple et le plus efficace pour s'affranchir de ce genre de problème ?

Dans ce cas le plus simple est de nommer la cellule. Si elle se trouve déplacée le nom suit.

Pareil pour une plage de plusieurs cellules, elle suit les déplacements et les insertions ou suppressions à l'intérieur de la plage, (mais si on supprime une ligne ou colonne borne de la plage cela casse la référence.

Dans une cellule ou une plage nommée, tu opères facilement en adressage relatif : Nom.Cells(1, 1) , c'est la cellule (s'il y en a qu'une) ou la cellule supérieure gauche de la plage. A partir de là tu atteins toute cellule... Nom.Cells(2, 1) c'est la cellule en dessous, Nom.Cells(0, 1) c'est celle au dessus, Nom.Cells(1, 0) c'est celle à gauche, Nom.Cells(1, 2) c'est celle à droite...

Cordialement.

ha génial, c'est exactement ce que je cherchais, je vais tester cela.

Un grand merci à toi !

Alcibiade

Rechercher des sujets similaires à "variabiliser adressage"