Rendre dynamique la référence à des cellules dans VBA

Bonjour à tous,

Je me trouve souvent confronté à ce "petit" problème :

Lorsqu'on utilise des cellules dans les formules et qu'on supprime (ou insère) des lignes et des colonnes dans la feuille, les cellules sont adaptées à la nouvelle configuration.

Par contre, dans le code VBA les cellules ne sont pas modifiées, bien sûr.

Par exemple : Range("F7").Value = 0,

On supprime la colonne B, il faudrait donc avoir E7 à la place.

Quel code me conseilleriez-vous pour résoudre ce problème ?

Merci d'avance,

Michel

Bonjour

Par exemple, prendre le titre de la colonne correspondant et remplacer Range("F7").Value par

i = Application.WorksheetFunction.Match("MonTitre", Rows("1:1"), 0)
Cells(7, i).Select
ActiveCell.Value

Cordialelent

Bonsoir,

En nommant la colonne F comme "PLAGE" par exemple tu utilise le code suivant :

[PLAGE].Cells(7, 1) = 0

Ceci gardera la référence relative de la cellule.

Merci Amadeus, merci Raja,

J'ai bien sûr essayé de suite la solution de Raja, car la plus "courte", et cela fonctionne parfaitement.

Il me suffit d'affecter un nom aux quelques colonnes qui apparaissent dans mon VBA.

Par contre, pouvez-vous me dire comment étendre cette astuce aux suppressions (ou ajouts) de lignes.

Je viens de faire quelques essais, mais c'est un peu au hasard, et donc infructueux.

Merci d'avance,

Michel

Re,

Je ne comprends pas. Cela devrait marcher si tu nommes une colonne entière comme plage. Met-nous un fichier à notre disposition pour plus d'aide.

Bonjour,

si tu combines ajout/suppression de colonnes et de lignes ça risque d'être plus ou moins compliqué, tout dépend ce que tu veux.

Si c'est tableau complet, par exemple B7:J10 qui se déplace, tu nommes la cellule B7. Et tu as ses cellules en relatif avec [nom_de_B7].offset(ligne,colonne)

Si par contre tu as des ajouts/suppressions à l'intérieur de ton tableau il faut te rabattre sur la proposition d'amadeus et rechercher les en-têtes de lignes et de colonnes pour connaitre la position qui t'intéresse.

En général en vba on essaie d'éviter ça quand c'est possible. Inutile d'avoir une gestion supplémentaire pour rien.

eric

Bonjour à tous,

Effectivement, le fait de combiner la possibilité de suppression ou ajout de lignes ET de colonnes devient complexe.

Mon but était d'éviter de corriger mes macros pendant le développement de mon appli seulement.

Par contre, la solution d'Eric consistant à nommer les cellules est très simple, et pas très compliquée à mettre en oeuvre, car je n'ai qu'une trentaine de cellules concernées.

Je clôture donc le sujet, en vous remerciant de vos conseils, je conserve bien sûr ce que j'ai appris avec les solutions de Raja et Amadeus.

Michel

Rechercher des sujets similaires à "rendre dynamique reference vba"