[Résolu] VBA - Copier/coller une ligne avec active cell

ginteo

XLDnaute Nouveau
Bonjour,

J'essaie de faire une macro pour :
  1. copier une ligne (de la colonne A à V) en fonction d'une variable qui est le numéro de ligne de la cellule sélectionner.
  2. puis insérer une ligne en dessous de la cellule sélectionnée
    ce code doit marcher (Selection.EntireRow.Insert Shift:=xlDown)
  3. Coller la sélection du 1) sur la ligne insérée en supprimant les valeurs des colonnes R à V

Je n'arrive pas à faire le code pour le 1)
Une idée ?

Merci et meilleurs voeux
 

D.D.

XLDnaute Impliqué
Hello,

Comme ca ?
Sub Yo_Man()
Yo = ActiveCell.Row
Selection.Offset(1, 0).EntireRow.Insert Shift:=xlDown
Range("A" & Yo & ":Q" & Yo).Copy Destination:=Range("A" & Yo + 1)
End Sub
 

Pièces jointes

  • Classeur1.xlsm
    13.6 KB · Affichages: 64

ginteo

XLDnaute Nouveau
ça fonctionne bien je crois :)

Yo c'est quoi, un nombre il me semble, le numéro de la ligne.
Mais j'ai du mal à comprendre le code Range("A" & Yo & ":Q" & Yo)

J'utilisais le code suivant .Range(.Cells(ligne, "a"), .Cells(ligne, "q")) mais ça marchait pas
 

D.D.

XLDnaute Impliqué
Yo est effectivement le numero de la ligne de la cellule active.
Si Yo = 3
alors
Range("A" & Yo & ":Q" & Yo)
=
Range("A" & 3 & ":Q" & 3) = Range("A3:Q3")
Que l'on copie dans
Range("A" & Yo + 1)
= Range("A" & 3 + 1) = Range("A" & 4) = Range("A4")
 

ginteo

XLDnaute Nouveau
Je comprend mieux mais difficile de connaitre toutes les subtilité car le code .Range(.Cells(ligne, "a"), .Cells(ligne, "q")) marchait avec Set plage = Union (.Range(.Cells(i, "A"), .Cells(i, "e")), .Range("g" & i), .Range(.Cells(i, "r"), .Cells(i, "v")))
 

Discussions similaires

Statistiques des forums

Discussions
312 083
Messages
2 085 188
Membres
102 809
dernier inscrit
Sandrine83