Copier coller VBA fluide

bonjour à tous ,

j'aimerais trouver une macro qui me permettrait de copier coller une ligne en appuyant sur un bouton de commande vba. Cependant il y a 3 contraintes:

  1. Le bouton de commande vba n'est pas dans la même feuille que la ligne qui sera copié collé
  2. La ligne qui est copié est une ligne avec des formules a chaque cellule et je veu la coller avec seulement la valeur qui sera dans les cellules plutôt que la formule
  3. La ligne qui sera copié est discontinue, c'est a dire que sur cette ligne il y a des espaces de vide
  4. La modification doit être fluide. Je m'explique: Je sais que pour certaines macros lorsque l'on clique sur le bouton de commande qui modifie des cellules dans une autre feuille (donc différentes de la feuille où est présent le bouton de commande), il y a un temps de latence ou alors je suis projeté dans la feuille où la modification est faite. Moi je veu que quand je clique sur le bouton de commande, je reste dans la même feuille et la modification s'effectue tout de suite. Cela doit pouvoir me permettre de spammer ce bouton à volonté.

merci d'avance

Bonjour,

La difficulté en général est de déterminer la plage à copier et celle qui reçoit. Sinon, ça tient sur une ligne :

Sub MainProc()
sheets(1).rows(1).value = sheets(2).rows(2).value
'Destination = Src
end sub

Cdlt,

Bonjour à nouveau, cela ne fonctionne pas, je vous joint le fichier afin que vous puissiez le visualiser correctement.

Lorsque je clique sur "Copier-Coller Valeur" présent dans "Centre de contrôle", je veut que toute les cellules avec une valeur sur la ligne 5 dans la feuille "Tableau" soit copié en ligne 9 (en gardant que la valeur ducoup, pas la formule) .

Sinon peut-être existe-t-il un moyen plus simple, comme par exemple, écrire un =qlqchose pour que les cellules d'en dessous prennent immédiatement la valeur de celles au-dessus?

4test.xlsm (183.40 Ko)

Merci d'avance

Bonjour à tous,

un essai....

Sub CCV()
 Dim dl%, col, i%
  With Sheets("Tableau")

   col = Array(3, 4, 5, 8, 9, 10, 13, 14, 15, 18, 19, 20, 23, 24, 25, 28, 29, 30, 33, _
   34, 35, 36, 39, 40, 41, 42, 45, 46, 47, 48, 51, 52, 53, 54, 55, 58, 59, 60, 61, 62, _
   63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83)

      With .ListObjects(1).ListColumns(2).DataBodyRange
       On Error Resume Next
        Set Rng = .SpecialCells(xlCellTypeBlanks)
        On Error GoTo 0
         If Not Rng Is Nothing Then dl = Rng.Row
      End With

    For i = 0 To UBound(col)
     .Cells(dl, col(i)).Value = .Cells(9, col(i)).Value
    Next i
  End With
  MsgBox "Opération effectuée"
End Sub

[EDIT] : correctif suite remarque sur ce fil: https://forum.excel-pratique.com/s/goto/1075360

Cordialement,

Rechercher des sujets similaires à "copier coller vba fluide"