Bonjour à tous,
Je voudrais partager la solution que j'ai utilisée pour résoudre un problème de fonctionnement sur le décalage d'une plage multi zones comportant des cellules fusionnées avec l'instruction Offset.
En voulant faire un décalage d'une plage multi zones comportant 2 colonnes et plusieurs lignes isolées, j'ai été confronté à un comportement pour le moins étrange.
Le décalage de la plage une ligne au dessus ne posait aucun problème,
.
En revanche, un décalage de cette même plage une ligne en dessous ne produisait pas le même effet.
J'avais par endroit des écarts d'une ligne supplémentaire !
Après un gros arrachage de cheveux, j'ai enfin réalisé que la plage comportait des cellules fusionnées ce qui occasionnait ces décalages supplémentaires.
En fait, on pourrait penser qu'Excel effectue un décalage de tout le bloc de cellules constituant la plage, mais en réalité il opère un décalage de la plage cellule par cellule. Résultat, à chaque cellule fusionnée, excel ne faisait qu'un seul décalage pour la ligne fusionnée et renvoyait la cellule fusionnée suivante sur la ligne suivante, et donc au final un vilain foutoir dans mon fichier.
Pourquoi ça marche vers le haut et pas vers le bas ? Mystère. Je me suis bien dit que ce comportement était absurde, mais qu'il fallait trouver une solution.
Si le décalage vers le haut fonctionnait correctement, je pouvais sans doute partir de ce décalage pour créer le décalage vers le bas.
Voici le code avec double décalage qui m'a permis de résoudre le problème :
Je reconnais que cette ligne de code est assez bizarre en soit, mais elle fonctionne et c'est bien là l'essentiel.
Et si ça peut aider quelqu'un qui rencontrerait ce problème, c'est très bien.
Mais peut-être existe t'il une manière plus élégante de procéder...
P.S. Je n'ai pas essayé sur une plage simple de plusieurs lignes, mais il est possible que le problème soit identique.
Je voudrais partager la solution que j'ai utilisée pour résoudre un problème de fonctionnement sur le décalage d'une plage multi zones comportant des cellules fusionnées avec l'instruction Offset.
En voulant faire un décalage d'une plage multi zones comportant 2 colonnes et plusieurs lignes isolées, j'ai été confronté à un comportement pour le moins étrange.
Le décalage de la plage une ligne au dessus ne posait aucun problème,
Code:
[MaPlage].Offset(-1, 0).....
En revanche, un décalage de cette même plage une ligne en dessous ne produisait pas le même effet.
Code:
[MaPlage].Offset(1, 0).....
Après un gros arrachage de cheveux, j'ai enfin réalisé que la plage comportait des cellules fusionnées ce qui occasionnait ces décalages supplémentaires.
En fait, on pourrait penser qu'Excel effectue un décalage de tout le bloc de cellules constituant la plage, mais en réalité il opère un décalage de la plage cellule par cellule. Résultat, à chaque cellule fusionnée, excel ne faisait qu'un seul décalage pour la ligne fusionnée et renvoyait la cellule fusionnée suivante sur la ligne suivante, et donc au final un vilain foutoir dans mon fichier.
Pourquoi ça marche vers le haut et pas vers le bas ? Mystère. Je me suis bien dit que ce comportement était absurde, mais qu'il fallait trouver une solution.
Si le décalage vers le haut fonctionnait correctement, je pouvais sans doute partir de ce décalage pour créer le décalage vers le bas.
Voici le code avec double décalage qui m'a permis de résoudre le problème :
Code:
[MaPlage].Offset(-1, 0).Offset(2, 0).......
Je reconnais que cette ligne de code est assez bizarre en soit, mais elle fonctionne et c'est bien là l'essentiel.
Et si ça peut aider quelqu'un qui rencontrerait ce problème, c'est très bien.
Mais peut-être existe t'il une manière plus élégante de procéder...
P.S. Je n'ai pas essayé sur une plage simple de plusieurs lignes, mais il est possible que le problème soit identique.
Dernière édition: