Insérer une ligne avec une macro

Bonjour à tous,

j'insère une ligne qui contient des formules, j'utilise un copier coller avec un bouton et ce code :

Range("listes!formules").Copy

Range("b28").Insert

Range("b28").Activate

Le problème est qu'elle s'insère en ligne 28 ; je souhaiterai qu'elle s'insère deux lignes avant celle qui contient la ligne du TOTAL. Au départ, la ligne qui contient TOTAL (cellule O30) est la numéro 30 mais après 5 clics sur le bouton Insertion, la macro continue d'insérer en ligne 28 alors que la ligne du TOTAL est la numéro 35.

Comment faire pour que la macro prenne toujours comme référence deux lignes avant la ligne qui contient TOTAL quelque soit son numéro.

Merci d'avance pour votre aide, passez de bonnes fêtes.

screen 3

Bonsoir le forum, faudouy

Pourriez-vous mettre un petit fichier exemple ?

Amicalement

Joseph

en pièce jointe, le fichier pour l'exemple.

Dans la feuille lundi, le bouton "Ajouter une ligne".

Merci encore...

588exemplesalva.zip (32.87 Ko)

Bonsoir le forum, faudouy

Voici ma modification de la procédure AjoutLigne

Sub AjoutLigne() 'en cliquant sur le jour colonne "A"

Dim LastRow As Long

Application.ScreenUpdating = False

'Détermination de la dernière ligne dans la feuille ("LUNDI")
 LastRow = Sheets("LUNDI").Range("O65536").End(xlUp).Row

        If ActiveSheet.Name = "LESCHAIS" Then
            Range("listes!formules_chais").Copy
           Else
            Range("listes!formules").Copy
        End If

            Range("B" & LastRow - 2).Insert
            Range("B" & LastRow - 2).Activate

End Sub

En espérant que cela fera l'affaire.

Amicalement

Joseph

-- 30 Déc 2009 20:34 --

Re,

Par contre je voudrais encore ajouter qu'il me semble que la macro de Claude devait déjà résoudre ce problème.

'DerLig = Cells.Find("*", , , , xlByRows, xlPrevious).Row - 1

Amicalement

Joseph

Merci Joseph,

cela fonctionne en effet pour la feuille de lundi, mais comment pourrai je faire pour automatiser cela à la feuille en cours, sachant que j'ai une feuille par semaine ??

Concernant le code de Claude, j'ai essayé de le mettre dans cette macro mais j'ai eu des soucis d'insertion, la ligne s'insérant n'importe ou... (en dehors de 2 à 29)

Merci d'avance

-- Jeu Déc 31, 2009 11:04 am --

Bonjour Joseph, le forum,

dans le code suivant, l'insertion de ligne fonctionne mais sur la feuille citée (Lundi), comment faire pour qu'il le fasse pour les autres feuilles dans lesquelles je définis le bouton sans faire une macro pour chaque feuille ??

Sub AjoutLigne()

Dim LastRow As Long

Application.ScreenUpdating = False

'Détermination de la dernière ligne dans la feuille ("LUNDI")
LastRow = Sheets("LUNDI").Range("O65536").End(xlUp).Row

        If ActiveSheet.Name = "LESCHAIS" Then
            Range("listes!formules_chais").Copy
           Else
            Range("listes!formules").Copy
        End If

            Range("B" & LastRow - 2).Insert
            Range("B" & LastRow - 2).Activate

End Sub

Merci d'avance pour vos contributions,

Bonjour le forum, faudouy,

dans le code suivant, l'insertion de ligne fonctionne mais sur la feuille citée (Lundi), comment faire pour qu'il le fasse pour les autres feuilles dans lesquelles je définis le bouton sans faire une macro pour chaque feuille ??

Si j'ai bien compris la question (j'ai testé en copiant la feuille et en la renommant MARDI), il suffit de remplacer

'Détermination de la dernière ligne dans la feuille ("LUNDI")
LastRow = Sheets("LUNDI").Range("O65536").End(xlUp).Row

par

'Détermination de la dernière ligne de la feuille active
LastRow = ActiveSheet.Range("O65536").End(xlUp).Row

Amicalement

Joseph

Bonjour,

je sais que le sujet date, mais je le même souci.

l'idée est d'insérer une ligne en copiant la formule incluse en colonne G.

Seulement quand je clique sur mon bouton, la ligne s'insère automatiquement en ligne 32 alors que je voudrais qu'elle s'insère au dessus de la dernière ligne contenant "LigneSupp" en colonne H.

j'ai bien saisi les explication au début, seulement, étant nouveau dans le monde des macros, je ne sais pas comment intégrer vos solution à la mienne.

merci de votre aide.

Steve

Bonjour à tous,

pas non plus un expert VB, mais LastRow permet dans le code de déterminer la dernière ligne de ta feuille active (activeSheet) et plus loin est écrit LastRow - 2 car c'est ce que je souhaite pour mon appli.

Comme ma feuille fait par défaut 30 lignes, elle s'insère la 1ere fois en ligne 28 et ainsi de suite ...

T'as pas envoyé d'exemple....

Bonne soirée

F. AUDOUY

oui désolé, j'ai un souci pour envoyer mon fichier.

j'ai désactivé les macros, mais en les réactivant, elles sont bien présentes!

en effet, elles sont désactivées, mais je ne les vois pas dans Visual Basic, dans aucun module ?

Rechercher des sujets similaires à "inserer ligne macro"