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:
- Le bouton de commande vba n'est pas dans la même feuille que la ligne qui sera copié collé
- 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
- La ligne qui sera copié est discontinue, c'est a dire que sur cette ligne il y a des espaces de vide
- 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?
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,