Macro à optimiser copier-coller spécial

Fermé
Chaloine Messages postés 1 Date d'inscription lundi 9 décembre 2013 Statut Membre Dernière intervention 5 janvier 2014 - 5 janv. 2014 à 11:39
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 8 janv. 2014 à 08:41
Bonjour à toutes et à tous,

j'ai un souci avec une macro qui fait un couper coller de ligne d'une feuille à une autre, sous condition de statut; je souhaite qu'elle continue de faire le couper-coller mais avec un "special paste" car je ne veux que les valeurs (et non les formules)...et là je sèche !

Voici le code ci-dessous : (j'ai mis la ligne qui me pose problème en gras)

Sub Arch_auto()
'Déclaration des variables ----------------------------
Dim Lig_S As Long 'Ligne source
Dim Lig_D As Long 'ligne destination
Dim F_S As Worksheet 'Feuille source
Dim F_D As Worksheet 'Feuille Destination

'MEI (mise à l'état initial ---------------------------
Set F_S = Sheets("Dmdes actives") 'F1 est le nom de l'onglet source
Set F_D = Sheets("Dmdes_clôturées") 'F2 est le nom de l'onglet destination
Lig_D = F_D.Range("B65536").End(xlUp).Row + 1 'Ligne destination

' Traitement ------------------------------------------
For Lig_S = 1000 To 7 Step -1
'Pour les lignes de 1000 à 7 en décrémentant de 1
'comme on supprime des lignes, c'st plus simple
If F_S.Range("O" & Lig_S) = "Clôturée" Then
'si W est égale à "Clôturée"
F_S.Range(F_S.Range("A" & Lig_S), F_S.Range("O" & Lig_S)).Cut _
F_D.Range("A" & Lig_D)

'on coupe de A à O la ligne et on la copie directement
F_S.Rows(Lig_S).Delete
'On supprime la ligne qu'on vient de couper
Lig_D = Lig_D + 1
'On passe à la ligne de destination suivante
End If
Next Lig_S
End Sub

Un grand merci par avance de vos lumineuses connaissances,
Antoine.
A voir également:

1 réponse

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 302
Modifié par michel_m le 8/01/2014 à 08:49
Bonjour,

essaies
Dim tampon()
With F_S.Range(Cells(lig_s, "A"), Cells(lig_s, "O"))
tampon = .Value
.Rows(lig_s).Delete
End With
F_D.Cells(lig_D, "A").Resize(1, 15) = tampon



Nota
en début de ta rubrique "----traitement" écris cette ligne qui fige le défilement de l'écran: rapidité d'exécution, confort visuel
Application.screenupdating=False

Michel
0