Insérer tableau en dessous d'une plage nommée extensible

Salut les amis

J'ai un pitit problème que je n'explique pas : dans le code qui suit je demande que mon tableau1 soit inséré à la suite de la "plage_nommée1" mais ça me l'insère au dessus. C'est bizar quand même...

Sub Nouvelle_plage_nommée1()
 Sheets("Donnée_vierge").Range("tableau1").Copy
 ActiveSheet.Range("Plage_nommée1").EntireRow.Insert Shift:=xlDown  'ligne insertion    
 Application.Goto Range("a" & Lg), Scroll:=True
End sub

Je ne peut pas utiliser une ligne fixe en repère du genre

ActiveSheet.Rows(Lg + XXX).Insert Shift:=xlDown

car j'ai des plage nommée2 qui vont s'insérer dans la plage_nommée1 et donc tout décaler...

Voyez un peu mon pbm illustré dans le fichier joint.

Merci à tous,

ToM

35test.xlsm (52.81 Ko)

Bonjour

A voir

Re,

Salut Banzaï, merci pour ton code, c'est presque le bon, mais il reste un petit problème : la "plage_nommée1" ne s'étend pas au fur et à mesure des ajouts de "tableau1", ce qui fait qu'à partir du second clic, les insertions ne se font plus à la suite comme voulu.

Il faudrait donc trouver le moyen de faire l'insertion entre la ligne 11 et la ligne 12 de la "plage_nommée1" (nouveau fichier joint), afin que celle-ci inclue les nouveaux "tableau1" insérés. Comme la ligne d'insertion va être variable il nous fois un genre de repère "Lg-2" avec Lg étant la dernière ligne de ma "plage_nommée1".. c'est dur à suivre j'avoue

C'est faisable comme requête ?

Merci, à bientôt

P.S : je précise que je ne dois pas utiliser le repère suivant :

Lg = Range("o65536").End(xlUp).Row

Bonjour

Mes neurones sont en vacances je ne comprends pas

Joins un fichier dans lequel tu as simulé 2 ou 3 insertions (change de couleur à chaque fois et numérote les pour suivre)

RideR'On'The'SToRM' a écrit :

l'insertion entre la ligne 11 et la ligne 12

Sur mon 2003 il n'existe pas de ligne entre la 11 et 12

A te lire

Hello,

Sorry

Voilou le nouveau fichier explicatif, j'espère que ce sera plus clair que précédemment.

Merci pour ton temps en tout cas et n'hésite pas à me redemander des précisions si toujours flou

Bonne aprem

ToM

Bonjour

Si j'ai compris

Divergence entre tes explications et tes simulations

L'insertion 4 est juste après la ligne 11 alors que d'après tes explications elle devrait être en denier

Mais bon j'ai peut-être encore mal compris

A tester

Re,

Caramba ! c'est pas encore ça, mais c'est bien d'en passer par là, car ça illustre le problème

Si l'on insère des "tableau2" avant les "tableaux1", la ligne d'insertion définie à partir du bouton ne va plus car des lignes se sont rajoutés. Le même problème se poserait en prenant comme repère une ligne du bas de page.

C'est pourquoi je cherche à utiliser un repère sur l'avant dernière ligne de la "plage_nommée1", afin qu'elle s'étende au fur et à mesure des ajouts de "tableau2"

Ton premier code était proche de ce que je recherche :

With Sheets("Donnée_vierge").Range("tableau1").Copy

ActiveSheet.Range("Plage_nommée1").Cells(Range("Plage_nommée1").Rows.Count + 1, 1).EntireRow.Insert Shift:=xlDown 'ligne insertion

End With

Sauf qu'à la place d'insérer après la dernière ligne de la plage, il faudrait insérer après l'avant dernière... Ceci est important car comme cela notre repère reste "plage_nommée1", et les inserttion de "tableau1" se feront dans l'ordre.

Divergence entre tes explications et tes simulations

L'insertion 4 est juste après la ligne 11 alors que d'après tes explications elle devrait être en denier

En fait, les chiffres indiqués sont l'ordre dans lequel ont été insérés les "tableaux1". Tu pourras observer qu'étant donné que la plage_nommée1 ne s'étend pas les derniers ajouts se font après la ligne 11... alors qu'ils devraient se faire en dernier.

J'ai conscience de n'être clair que pour moi, Sorry again

Si t'es toujours motivé, peut-être qu'il faudrait repartir du fichier commenté précédent ?

Merci,

ToM

Bonjour

Dans le vague de plus en plus

RideR'On'The'SToRM' a écrit :

Sauf qu'à la place d'insérer après la dernière ligne de la plage, il faudrait insérer après l'avant dernière.

Après l'avant dernière c'est la dernière ?

Modifies cette partie

With Sheets("Donnée_vierge").Range("tableau1").Copy

ActiveSheet.Range("Plage_nommée1").Cells(Range("Plage_nommée1").Rows.Count, 1).EntireRow.Insert Shift:=xlDown 'ligne insertion

End With

Salut,

Ca Yeahh

C'était plus simple que ce que je pensais; en faisant comme tu l'as indiqué j'obtiens ce que je voulais :

With Sheets("Donnée_vierge").Range("tableau1").Copy
ActiveSheet.Range("Plage_nommée1").Cells(Range("Plage_nommée1").Rows.Count, 1).EntireRow.Insert Shift:=xlDown 'ligne insertion
End With

En résumé, si ça peut aider d'autres personnes qui ont rencontré le même problème : on a pris comme repère pour l'insertion une plage nommée extensible... mais j'arrête là car je vais m'embarquer dans des explications brouillons

Merci banzai64,

Hippie - Pipe : BANZAI !!

Rechercher des sujets similaires à "inserer tableau dessous plage nommee extensible"