VBA_Besoin d'aide pour une macro_Copie & Inse
Eliette
-
ccm81 Messages postés 11033 Statut Membre -
ccm81 Messages postés 11033 Statut Membre -
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
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
bonjour
peut être comme ceci
bonne suite
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
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
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
"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
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
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.
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.
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.
On peut simplifier le code par
Sub Insert_Copie() ActiveCell.EntireRow.Offset(1).Insert Rows(ActiveCell.Row).Copy ActiveCell.Offset(1) End SubEn poussant encore un peu :)
Sub Insert_Copie() With ActiveCell .EntireRow.Offset(1).Insert Rows(.Row).Copy .Offset(1) End With End SubMytå