Macro Excel - Copier Insérer cellule pointée [Résolu/Fermé]

Signaler
Messages postés
14
Date d'inscription
lundi 10 janvier 2011
Statut
Membre
Dernière intervention
24 mars 2011
-
Messages postés
14
Date d'inscription
lundi 10 janvier 2011
Statut
Membre
Dernière intervention
24 mars 2011
-
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

7 réponses

Messages postés
9973
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
23 juillet 2021
2 161
bonjour

quelque chose comme ça?

plage = "A1:B3" 
Range(plage).Copy 
Selection.Offset(13, 9).Select 
ActiveSheet.Paste


bonne suite
1
Merci

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

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
9973
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
23 juillet 2021
2 161
re
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
1
Merci

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

CCM 65492 internautes nous ont dit merci ce mois-ci

Messages postés
14
Date d'inscription
lundi 10 janvier 2011
Statut
Membre
Dernière intervention
24 mars 2011

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
Messages postés
17408
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
21 juillet 2021
4 668
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
Messages postés
14
Date d'inscription
lundi 10 janvier 2011
Statut
Membre
Dernière intervention
24 mars 2011

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
Messages postés
12251
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2021
2 625
Bonjour tout le monde,
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
Messages postés
14
Date d'inscription
lundi 10 janvier 2011
Statut
Membre
Dernière intervention
24 mars 2011

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
Messages postés
14
Date d'inscription
lundi 10 janvier 2011
Statut
Membre
Dernière intervention
24 mars 2011

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