VBA_Besoin d'aide pour une macro_Copie & Inse

Fermé
Eliette - 2 sept. 2011 à 11:23
ccm81 Messages postés 10907 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 janvier 2025 - 5 sept. 2011 à 20:25
Bonjour,

Je suis complètement novice en VBA.
J'ai enregistré la macro ci-dessous mais au lieu d'avoir une ligne spécifique, j'aimerais que ces actions se fassent à partir de la cellule sélectionnée, quelle qu'elle soit.

Rows("29:29").Select
Selection.Copy
Rows("30:30").Select
Selection.Insert Shift:=xlDown
Rows("30:30").Select
Application.CutCopyMode = False
Selection.AutoFill Destination:=Rows("30:31"), Type:=xlFillDefault
Rows("30:31").Select


Les actions se résument ainsi :
Copie d'une ligne X, insertion de cette ligne X juste en dessous (soit en X+1) et copie de la ligne X+1 sur la ligne X+2 (copie formules & mise en forme)

Merci par avance de votre aide,
Eliette

4 réponses

ccm81 Messages postés 10907 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 janvier 2025 2 429
2 sept. 2011 à 12:12
bonjour
peut être comme ceci

Dim li As Long, co As Long
li = Selection.Row
co = Selection.Column
Cells(li + 1, co).Insert Shift:=xlDown
Rows(li).Copy Cells(li + 1, co)

bonne suite
0
Merci mais ça ne fonctionne pas. Il y a une erreur d'exécution.

Non seulement, il n'y a que la cellule sélectionnée qui est insérée (et non la ligne, ce qui décale tout) et la formule n'est même pas copiée.
0
Mytå Messages postés 2973 Date d'inscription mardi 20 janvier 2009 Statut Contributeur Dernière intervention 20 décembre 2016 951
Modifié par Mytå le 2/09/2011 à 20:55
Salut le forum

On peut simplifier le code par
Sub Insert_Copie()  
    ActiveCell.EntireRow.Offset(1).Insert  
    Rows(ActiveCell.Row).Copy ActiveCell.Offset(1)  
End Sub  

En poussant encore un peu :)
Sub Insert_Copie() 
  With ActiveCell 
    .EntireRow.Offset(1).Insert 
    Rows(.Row).Copy .Offset(1) 
  End With 
End Sub 

Mytå
0
ccm81 Messages postés 10907 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 janvier 2025 2 429
Modifié par ccm81 le 2/09/2011 à 20:17
re

le code fonctionne voir sa mise en application sur cet exemple
https://www.cjoint.com/?0IcukN6XYIx
selectionner une cellule et Crtl+i pour activer la macro
bonne suite
0
antipolis a Messages postés 15609 Date d'inscription mercredi 5 novembre 2008 Statut Membre Dernière intervention 12 novembre 2014 2 859
Modifié par antipolis a le 3/09/2011 à 09:54
"Copie d'une ligne X, insertion de cette ligne X juste en dessous (soit en X+1) et copie de la ligne X+1 sur la ligne X+2 (copie formules & mise en forme)"

Mais cela revient à copier la ligne X sur les lignes x+1 et x+2. ! ! !

http://www.cijoint.fr/cjlink.php?file=cj201109/cijTN5K9en.xls
0
Euhh pas tout à fait, je me suis en fait un peu mal exprimé je pense.
Déjà, je souhaite insérer une ligne (et pas seulement copier) et je souhaite incrémenter (plutôt que copier) celle copiée sur la ligne au dessus de laquelle on vient de faire l'insertion.

J'ai besoin de cette incrémentation car en insérant la ligne, les formules de la ligne du dessous sont altérées.

En suivant ce lien (http://www.cijoint.fr/cjlink.php?file=cj201109/cij5M0PIFF.xlsm) un aperçu plus concret de ma demande.
0
ccm81 Messages postés 10907 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 24 janvier 2025 2 429
5 sept. 2011 à 20:25
re
peux tu envoyer ton fichier au format excel 2003?
0