Bonjour à tous,

Je sollicite votre aide pour m'aider à comprendre comment je dois attaquer ma macro, je m'explique.

J'ai un doc Excel dans lequel on retrouve toujours un bloc de 4 cellule (ex : D10 à D13). On retrouve dans ce bloc, dans la première cellule toujours une image, les 3 autres contiennent du texte.
Il s'agit de mettre en place une gamme imagée, c'est à dire une liste d'instruction que doit executer une personne.
Dans l'exemple que je mets en pièce jointe, j'ai plusieurs bloc.
Je souhaite pouvoir de facon automatique inserer un bloc et par conséquent de décaler les blocs existant mais aussi supprimer un bloc et que tous les autres blocs remontent d'un niveau.

Je ne sais pas comment attaquer cette macro. J'ai commence à nommer mes premiers blocs (zone nomée "zone1", "Zone2...) et je me dis qu'il faudrait dans un premier temps pouvoir lister toutes les zones nommées (je ne sais pas comment faire) puis créer un userform qui permettrait d'inserer un "new block" et qui décalerait tous les autres...

Un bloc est composé de plusieurs cellules, par exemple le premier bloc va de D11 à L14.
Je dispose toujours de la même structure, c'est à dire 3 blocs par ligne. Le premier bloc commence toujours à la même ligne.
En gros les positions de chaques blocs sont fixes (c'est vraiment mon fichier standard)
Les blocs s'alimentent via d autres macros présentent dans le fichier (insertion d'image, de numéro) mais il y a également du texte à ajouter manuellement.
Puisque tous mes fichiers sont basés sur le même modèle, j'ai créé une petite macro pour nommer les zones :
Code:

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
Sub Creation_zones()
'
' Creation automatique de zones nommées
' Macro enregistrée le 08/01/2008 par u207926
'
 
    Range("D11:L14").Select
    'Range("D14").Activate
    ActiveWorkbook.Names.Add Name:="zone1", RefersToR1C1:="=GTI!R11C4:R14C12"
    Range("N11:V14").Select
    'Range("N14").Activate
    ActiveWorkbook.Names.Add Name:="zone2", RefersToR1C1:="=GTI!R11C14:R14C22"
    Range("X11:AF14").Select
    'Range("X14").Activate
    ActiveWorkbook.Names.Add Name:="Zone3",

Voici l'url de mon fichier pour mieux comprendre.

http://cjoint.com/?blqNpUYwfG


Pour résumer, j'aimerai pouvoir
- inverser un bloc par un autre
- inserer un bloc vide et que tous les autres se décalent automatiquement
- supprimer un bloc et que tous les autres blocs remontent d'un niveau

Merci encore pour votre aide précieuse
Merci d'avance pour vos idées.