Macro Excel ajout de ligne fin de tableau [Fermé]

Signaler
Messages postés
4
Date d'inscription
mercredi 19 mars 2008
Statut
Membre
Dernière intervention
19 mars 2008
-
 Anonymous -
Bonjour,
J'ai créé un bouton pour ajouter une ligne à mon tableau. J'ai associé une macro qui recopie les formules de la ligne précédente. Le problème est que je ne sais pas comment indiquer qu'il faut insérer la ligne dans la première cellule vide de la colonne et ce quelle que soit ma position au moment du clic sur le bouton. Je ne sais pas non plus comment indiquer qu'il faut recopier la formule de la dernière ligne. Je ne sais que donner les références de la cellule (macro enregistrée) comme suit :

Range("A115").Select
Selection.EntireRow.Insert
Range("E114").Select
Selection.Copy
Range("E125").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

Pouvez-vous m'aider SVP ?
Merci beaucoup.
Sequefege

7 réponses

Messages postés
1717
Date d'inscription
vendredi 4 janvier 2008
Statut
Membre
Dernière intervention
16 janvier 2020
508
Ca donnerait ça:

Sub Macro8()
'Aller en A1
Range("A1").Select

'Aller à la dernière remplie (Merci Eriiic)
[A65536].End(xlUp).Select

'Insérer une ligne vide
Selection.EntireRow.Insert

'Remonter d'une ligne
ActiveCell.Offset(-1, 0).Select

'Quand la dernière valeur du tableau est trouvée, sélectionner le nombre de colonnes concernées (J'ai fait de A à O, au pif - à adapter, donc)
ActiveCell.Range("A1:O1").Select

'Recopier le contenu sur une ligne vers le bas
Selection.AutoFill Destination:=ActiveCell.Range("A1:O2"), Type:=xlFillDefault
End Sub

En espérant que "Total" ne soit pas écrit en colonne A, mais son suppose que non, sinon tu ne chercherais pas la première vide???
8
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 57161 internautes nous ont dit merci ce mois-ci

Messages postés
4
Date d'inscription
mercredi 19 mars 2008
Statut
Membre
Dernière intervention
19 mars 2008

C'est très gentil de prendre du temps pour me répondre. Malheureusement, ça ne fonctionne pas. La ligne n'est pas rajoutée en dernier mais 2 ou 3 lignes avant la dernière. De plus ce ne sont pas les formules qui sont recopiées mais la ligne entière et par conséquent les données de la ligne précédente, incrémentées de plus.

Voici plus bas la macro que j'avais enregistrée initialement.

Sub ajout_ligne()
'
' ajout_ligne Macro
' Macro enregistrée le 16/03/2008 par UTILISATEUR
''
Range("A113").Select
Selection.EntireRow.Insert
Range("A112:E112").Select
Selection.Copy
Range("A113:E113").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("E112").Select
Application.CutCopyMode = False
Selection.Copy
Range("E113").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

Range("A114").Select
Application.CutCopyMode = False

End Sub

Encore merci
Sequefege
Messages postés
23420
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
8 août 2020
6 284
Bonsoir,

Pour atteindre la dernière cellule remplie de la colonne A on peut aussi faire :
[A65536].End(xlUp).Select

eric
Messages postés
23420
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
8 août 2020
6 284
c'est l"équivalent de Ctrl fleche-haut sur une feuille.
Messages postés
1717
Date d'inscription
vendredi 4 janvier 2008
Statut
Membre
Dernière intervention
16 janvier 2020
508
Je ne comprends pas pourquoi la nouvelle ligne ne se met pas à la fin, mais par contre, que tu fasses une copie comme la mienne ou un collage spécial, les données sont recopiées aussi!!!!
Messages postés
4
Date d'inscription
mercredi 19 mars 2008
Statut
Membre
Dernière intervention
19 mars 2008

Dans ma recopie, je fais un copier/collage spécial formules et je n'ai que la formule qui se recopie, pas les données. Pour l'insertion de ligne, je ne vois pas pourquoi ça ne marche pas non plus.
Sequefege
Pour pouvoir insérer une ligne au dessus d'une cellule prédéfini, il faut donner un nom à celle-ci (Formules -> Gestionnaire de Noms) et après avoir enregistré la macro avec l'insertion de ligne en fonction de cette cellule prédéfini, il faut modifier la maccro et remplacer les numéro de cellule par le noms défini. Exemple :

PASSER DE :

Sub NouvelEquipement()
Range("B$5$:B$6$").Select
Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
End Sub

A :

Sub NouvelEquipement()
Range("MACROEQUIP").Select
Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
End Sub

PS : "MACROEQUIP" est le nom de la cellule qui a été défini
PS2: Pour cette méthode, il faut insérer une ligne à partir de la cellule en question, cad clique droit -> Insérer -> Ligne entière
Messages postés
1717
Date d'inscription
vendredi 4 janvier 2008
Statut
Membre
Dernière intervention
16 janvier 2020
508
Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 19/03/2008 par LatelyGeek

'Aller en A1
Range("A1").Select

'Tester si la cellule de dessous est vide, si non descendre d'une ligne
While ActiveCell.Offset(1, 0).Value <> ""
ActiveCell.Offset(1, 0).Select
Wend

'Quand la dernière valeur du tableau est trouvée, sélectionner le nombre de colonnes concernées (J'ai fait de A à O, au pif - à adapter, donc)
ActiveCell.Range("A1:O1").Select

'Recopier le contenu sur une ligne vers le bas
Selection.AutoFill Destination:=ActiveCell.Range("A1:O2"), Type:= xlFillDefault
End Sub
Messages postés
4
Date d'inscription
mercredi 19 mars 2008
Statut
Membre
Dernière intervention
19 mars 2008

Merci pour ta réponse.
Je viens d'essayer mais ce n'est pas tout à fait ce que je voudrais faire. Je crois que la première partie est OK, je peux retrouver la dernière ligne saisie.par contre après, je veux insérer une ligne car mon tableau est "fermé" (total à la fin) puis recopier sur la ligne insérée les formules de la dernière ligne saisie (avant le total).
Si tu peux m'aider sur ce problème ça me rendrait bien service.
Merci.
Sequefege
Messages postés
1717
Date d'inscription
vendredi 4 janvier 2008
Statut
Membre
Dernière intervention
16 janvier 2020
508
Je connaissais pas!!!!!