Insertion nombre de ligne variable

bonjour à tous,

je souhaite savoir comment paramétrer une macro afin de pouvoir insérer un certain nombre de ligne.

Je m'explique, dans une cellule je vais avoir avoir une formule =nbval (exemple : 10) qui doit permettre à la macro de déterminer le nombre de ligne à insérer. (donc ici 10 lignes)

quelqu'un a une idée ?

Je vous remercie et vous souhaite de joyeuses fetes de fin d'année

Bonsoir

essaye cette macro :

Sub Insertion()
    For i = 1 To Range("A1")
        Rows("12:12").Insert Shift:=xlDown
    Next i
End Sub

Avec :

En A1, le nombre de lignes à insérer

12:12 : l'endroit où les lignes seront insérées (ce que tu ne dis pas dans ta demande...)

Amicalement

Dan

Salut le forum

Juste pour le fun, si on veux éliminer la boucle.

Ajouter 5 lignes depuis la cellule active

ActiveCell.EntireRow.Resize(rowsize:=5).Insert Shift:=xlDown

Ajouter 5 cellules depuis la cellule active

ActiveCell.Resize(rowsize:=5).Insert Shift:=xlDown

Joyeuses Fêtes à tous

Mytå

re,

Ah ben Myta c'est encore mieux comme cela ! comme tu dis on évite les boucles.

Bonne soirée

Dan

merci beaucoup nad dan et myta

j'ai compris le principe de la macro de nad dan qui consiste à ajouter une ligne jusqu'à atteindre le nombre défini dans une cellule.

en fait, mon fichier consiste à saisir des données sur une la feuille 1. (exemple 10 lignes de saisie)

Ensuite la validation consiste à aller sur la feuille 2, insérer 12 lignes (objet de ma question précédente) et coller les 12 lignes de la feuille 1 pour que la feuille 1 redevienne vierge.

Si je suis la même logique, si je veux juste copier les 12 lignes de la feuille 1, je dois faire une macro du style qui prendrait de la cellule A9 jusqu'à la E9+12.

Si je fais : range("A9:E9(+12)" ca ne marche pas.

Je suis désolé, je débute dans les macro donc je dois peut etre ecrire des abérences !!!

je voudrais bien vous envoyer le fichier mais il est trop gros.

je vous remercie

re,

Envoie nous une partie de ton fichier. Finalement on n'a besoin que de deux feuilles pour résoudre ton pb.

Dan

ci joint un extrait du fichier

https://www.excel-pratique.com/~files/doc/ZDN44Copie.xls

la macro s'execute à partir du bouton "cloturation mois" de la premiere page

j'ai annoté mes 2 questions dans la macro (prob d'impression et prob de copier coller)

merci beaucoup

Re,

Beau fichier !...

Dis moi quelles sont les données que tu veux sauver.

Si ce sont les lignes 21 à 24, on peut s'y prendre autrement.

Dans ta feuille Archives on crée à l'avance les titres. Soit dans ton cas, de A17 à G21; Ensuite à chaque validation on exporte uniquement les données de A22 à I24 (dans ton exemple) vers la feuilles "archive" et on vide les données de A22 à I24 dans la feuille "saisie de mois"

C'est bon cela ?

Dan

en fait, il faut que je recopie les données de A17 à i24 (pour l'exemple mais ca peut etre jusque i200 par exemple)

je les recopie sur ma feuille archives

ensuite sur ma feuille saisie du mois, j'efface toutes les lignes à partir de la ligne 22, je recommence à saisir

puis lorsqu'il y aura une nouvelle sauvegarde, je recopierai les lignes a17 à i.. sur ma feuille archives. Sur la feuille archives, je retrouverai donc mes 2 sauvegardes séparées de quelques lignes seulement

je te joins le fichier avec le résultat que je souhaiterais obtenir en archives

https://www.excel-pratique.com/~files/doc/Copie2.xls

re,

Pour définir ta zone d'impression prends ce code :

ActiveSheet.PageSetup.PrintArea = Range("A17:I" & Range("A65536").End(xlUp).Row).Address

Je regarde pour le reste

Dan

ca imprime impeccable nad dan, t'es vraiment trop fort !

tu es né avec des macros dans la tete ou quoi !!! comment fais tu pour connaitre l'existence de ces fonctions, t'as des livres à me recommander pour que je passe commande au pere noel ?

je te remercie pour tes recherches pour le reste

re,

voici le code

Sub archive()
'Macro par Dan pour Beuret - XL pratique le 24/12/08
'Fil : http://www.excel-pratique.com/forum/viewtopic.php?t=9070
Dim lig As Byte
With Sheets("Archives")
    lig = 12
    .Rows(lig & ":" & lig).Resize(rowsize:=3).Insert Shift:=xlDown
    Range("A17:I" & Range("A65536").End(xlUp).Row).Copy
    .Range("A" & lig).Insert Shift:=xlDown
End With
Range("A22:G" & Range("A65536").End(xlUp).Row).ClearContents
End Sub

Par défaut, la ligne de sauvegarde dans la feuille "Archives" sera la ligne 12. Tu peux la changer bien sûr pour définir les paramètres de départ. Une fois fait les données seront copiées en laissant 3 lignes entre chaque tableau.

La macro suppose être exécutée depuis la feuile "saisie de mois" où tu as mis ton bouton.

Ta macro Sub cloturation_mois() doit donc être réadaptée. Tu peux faire appel à cette macro archive depuis la Sub cloturation_mois() en mettant cette instruction --> CALL ARCHIVE.

Amicalement

Dan

edit Dan : pour ta demande sur VBA vois ce lien --> https://www.excel-pratique.com/forum/viewtopic.php?t=8069

je viens de tester, tout marche très bien

est ce que lrosqu'on appelle une macro, elle retourne ensuite terminer l'autre amcro en cours ou non ?

Je te remercie pour ton aide précise nad dan

re,

Bien sûr.

Exemple :

Sub beuret()
code 1
Call Dan
Code 2
end sub
Sub Dan()
.....
end sub

Tu exécutes La macro Beuret. Tu exécutes le code 1 puis tu fais appel à la macro Dan. ensuite la macro Beuret se poursuit avec le Code2

A noter que tu n'es pas obligé de mettre le CALL mais le fait de le voir permet une meilleure lisibilité du code.

Dan

je te remercie vraiment pour tous tes renseignements.

joyeux noel

Rechercher des sujets similaires à "insertion nombre ligne variable"