Macro Excel - Copier Insérer cellule pointée
Résolu
_gfv
Messages postés
14
Statut
Membre
-
_gfv Messages postés 14 Statut Membre -
_gfv Messages postés 14 Statut Membre -
Bonjour à tous,
Voilà, je débute en VBA Excel et me heurte à un petit soucis de code.
Je souhaite, dans un "tableau" de calcul :
- copier les lignes 8 à 16 par (exemple),
- les insérer là où j'ai pointé ma souris, donc la cellule "active",
- recopier les formules de 8 cellules, 13 lignes en dessous ma cellule pointée et à partir de 9 cellule sur la droite, car l'insertion décale la référence des formules...
Nota : les lignes à insérer contiennent des formules dans certaines cellules.
Je ne sais pas si j'ai été suffisamment clair et concis, n'hésitez pas à me harceler de questions :)
gfv
Voilà, je débute en VBA Excel et me heurte à un petit soucis de code.
Je souhaite, dans un "tableau" de calcul :
- copier les lignes 8 à 16 par (exemple),
- les insérer là où j'ai pointé ma souris, donc la cellule "active",
- recopier les formules de 8 cellules, 13 lignes en dessous ma cellule pointée et à partir de 9 cellule sur la droite, car l'insertion décale la référence des formules...
Nota : les lignes à insérer contiennent des formules dans certaines cellules.
Je ne sais pas si j'ai été suffisamment clair et concis, n'hésitez pas à me harceler de questions :)
gfv
A voir également:
- Insérer les cellules copiées excel
- Insérer liste déroulante excel - Guide
- Insérer video powerpoint - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Verrouiller cellules excel - Guide
- Insérer signature word - Guide
7 réponses
bonjour
quelque chose comme ça?
bonne suite
quelque chose comme ça?
plage = "A1:B3" Range(plage).Copy Selection.Offset(13, 9).Select ActiveSheet.Paste
bonne suite
re
désolé, j'ai mal compris l'énoncé ...
une autre solution, un peu différente de celle de Mike-31
bonne suite
désolé, j'ai mal compris l'énoncé ...
une autre solution, un peu différente de celle de Mike-31
Const plage = "A1:B3"
Dim li As Long, nbli As Long
nbli = Range(plage).Rows.Count
Selection.Offset(1, 0).Select
For li = 1 To nbli
ActiveCell.EntireRow.Insert
Next li
Range(plage).Copy
ActiveSheet.Paste
bonne suite
bonjour ccm81,
dans ce gout là en effet, sauf que ta macro colle et n'insert pas, elle "écrase" donc les cellules.
aurais-tu le code pour l'insertion de ces linges ainsi qu'un autre pour la recopie de formule par rapport à la cellule active lors de l'insertion ?
gfv
dans ce gout là en effet, sauf que ta macro colle et n'insert pas, elle "écrase" donc les cellules.
aurais-tu le code pour l'insertion de ces linges ainsi qu'un autre pour la recopie de formule par rapport à la cellule active lors de l'insertion ?
gfv
Salut,
je ne vois pas très bien ou tu veux en venir, ce code insère 9 lignes (équivalence ligne 8 à 16), à partir de la cellule active dans lesquelles sont copié les lignes 8 à 16.
Si ce n'est pas ce que tu cherches, explique différemment tes attentes
Sub Macro1()
ActiveCell.Resize(9).EntireRow.Insert
Rows("8:16").Copy
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub
je ne vois pas très bien ou tu veux en venir, ce code insère 9 lignes (équivalence ligne 8 à 16), à partir de la cellule active dans lesquelles sont copié les lignes 8 à 16.
Si ce n'est pas ce que tu cherches, explique différemment tes attentes
Sub Macro1()
ActiveCell.Resize(9).EntireRow.Insert
Rows("8:16").Copy
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bonjour Mike-31,
en fait la macro deccm81, colle mais n'insert pas. ce que je souhaite, c'est insérer les cellules copiées.
J'ai refait ce code :
plage = "A1:BB3" ' sélection de la plage à insérer
Range(plage).Copy ' copie de la plage
Selection.Offset(13, 9).Select ' cellule active et décalage du point d'insertion
Selection.Insert Shift:=xlDown ' insertion de la sélection
Application.CutCopyMode = False
qui fonctionne pour l'insertion bien qu'il faille que je mette l'Offset à (0,0) pour insérer depuis la cellule pointée par la souris. Je pense que ce code correspond à peu près au tiens.
Maintenant mon objectif est de coller des formules à partir de la cellule pointée et je crois pouvoir y arriver avec le code de ccm81.
Je vous tiens au courant de mon avancée, mais si quelqu'un possède un code tout près moins moche que celui réalisé avec l'enregistreur excel, je suis preneur, car ce code est à refaire 20 fois.
gfv
en fait la macro deccm81, colle mais n'insert pas. ce que je souhaite, c'est insérer les cellules copiées.
J'ai refait ce code :
plage = "A1:BB3" ' sélection de la plage à insérer
Range(plage).Copy ' copie de la plage
Selection.Offset(13, 9).Select ' cellule active et décalage du point d'insertion
Selection.Insert Shift:=xlDown ' insertion de la sélection
Application.CutCopyMode = False
qui fonctionne pour l'insertion bien qu'il faille que je mette l'Offset à (0,0) pour insérer depuis la cellule pointée par la souris. Je pense que ce code correspond à peu près au tiens.
Maintenant mon objectif est de coller des formules à partir de la cellule pointée et je crois pouvoir y arriver avec le code de ccm81.
Je vous tiens au courant de mon avancée, mais si quelqu'un possède un code tout près moins moche que celui réalisé avec l'enregistreur excel, je suis preneur, car ce code est à refaire 20 fois.
gfv
Bonjour tout le monde,
Tu peux peut être essayer ceci :
Tu peux peut être essayer ceci :
plage = "A1:BB3" ' sélection de la plage à insérer Range(plage).Copy ' copie de la plage ActiveCell.Insert Shift:=xlDown 'insère les cellules copiées ActiveCell.PasteSpecial Paste:=xlPasteFormulasAndNumberFormats 'dans la même plage colle les formules et formats de nombre
bonjour pijaku,
ta macro m'a l'air bien, mais les formules à insérer ne sont pas dans la même plage, voici un exemple concret :
Sub Macro3()
ActiveCell.Resize(9).EntireRow.Insert
Rows("8:16").Copy
ActiveSheet.Paste
Application.CutCopyMode = False
plage = "J12:Q12"
Range(plage).Copy
Selection.Offset(13, 9).Select
ActiveSheet.Paste
End Sub
j'ai donc collé ces 2 codes en 1 seuls. Les 2 fonctionnent séparément, mais en 1 macro, VBA me donne une erreur à la ligne
Selection.Offset(13, 9).Select
Après l'insertion des lignes 8 à 16 sous ma cellule pointée, je cherche à coller les formules le la ligne J12 à Q12 13 à partir de 13 cellule plus bas pour 9 cellules à gauche... mais les 2 codes compilés ne fonctionnent pas, si l'un de vous a une petite idée... et encore merci pour vos réponses, cela ne doit pas être toujours facile de comprendre l'attente de quelqu'un :)
gfv
ta macro m'a l'air bien, mais les formules à insérer ne sont pas dans la même plage, voici un exemple concret :
Sub Macro3()
ActiveCell.Resize(9).EntireRow.Insert
Rows("8:16").Copy
ActiveSheet.Paste
Application.CutCopyMode = False
plage = "J12:Q12"
Range(plage).Copy
Selection.Offset(13, 9).Select
ActiveSheet.Paste
End Sub
j'ai donc collé ces 2 codes en 1 seuls. Les 2 fonctionnent séparément, mais en 1 macro, VBA me donne une erreur à la ligne
Selection.Offset(13, 9).Select
Après l'insertion des lignes 8 à 16 sous ma cellule pointée, je cherche à coller les formules le la ligne J12 à Q12 13 à partir de 13 cellule plus bas pour 9 cellules à gauche... mais les 2 codes compilés ne fonctionnent pas, si l'un de vous a une petite idée... et encore merci pour vos réponses, cela ne doit pas être toujours facile de comprendre l'attente de quelqu'un :)
gfv
re tout le monde,
J'ai compilé la 2nd macro de ccm81 (qui est plus classe à l'action que l'autre !) avec la première de ccm81 ce qui me donne (dans mon appli) ceci :
Sub Macro4()
Const plage = "A8:BC16"
Dim li As Long, nbli As Long
nbli = Range(plage).Rows.Count
Selection.Offset(0, 0).Select
For li = 1 To nbli
ActiveCell.EntireRow.Insert
Next li
Range(plage).Copy
ActiveSheet.Paste
plage2 = "J12:U12"
Range(plage2).Copy
Selection.Offset(13, 9).Select
ActiveSheet.Paste
End Sub
à priori cela fonctionne bien, je la recopie dans mon userForm et je vous tiens au courant du fonctionnement :)
Edit : je confirme, cela fonctionne bien. Mais il me reste encore 2 petites choses afin de finaliser :
- insérer une condition du type s'il y a "XXX" dans la cellule (même ligne que la cellule pointée) de la colonne AK, il ne faut pas que la macro fonctionne,
- quel serait le code pour la suppression du même nombre de ligne insérées (avec un décalage vers le haut soit la fonction inverse de l'insertion) ?
_gfv
J'ai compilé la 2nd macro de ccm81 (qui est plus classe à l'action que l'autre !) avec la première de ccm81 ce qui me donne (dans mon appli) ceci :
Sub Macro4()
Const plage = "A8:BC16"
Dim li As Long, nbli As Long
nbli = Range(plage).Rows.Count
Selection.Offset(0, 0).Select
For li = 1 To nbli
ActiveCell.EntireRow.Insert
Next li
Range(plage).Copy
ActiveSheet.Paste
plage2 = "J12:U12"
Range(plage2).Copy
Selection.Offset(13, 9).Select
ActiveSheet.Paste
End Sub
à priori cela fonctionne bien, je la recopie dans mon userForm et je vous tiens au courant du fonctionnement :)
Edit : je confirme, cela fonctionne bien. Mais il me reste encore 2 petites choses afin de finaliser :
- insérer une condition du type s'il y a "XXX" dans la cellule (même ligne que la cellule pointée) de la colonne AK, il ne faut pas que la macro fonctionne,
- quel serait le code pour la suppression du même nombre de ligne insérées (avec un décalage vers le haut soit la fonction inverse de l'insertion) ?
_gfv