VBA - Simplification "copier/coller" Excel
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
J'ai une macro VBA qui est assez longue, je cherche à réduire son temps de traitement en réécrivant mon programme en un language simplifié.
Voici un morceau de la base:
J'ai cherché à partir sur une autre base telle que :
Je pense ne pas être loin mais ma seconde ligne doit être débogé...
Pouvez-vous m'aider ?
Cordialement,
Ano
J'ai une macro VBA qui est assez longue, je cherche à réduire son temps de traitement en réécrivant mon programme en un language simplifié.
Voici un morceau de la base:
L = 5
For I = 5 To 700
If [Conditions...] Then
Sheets("arrivée").Cells(L, 5) = Sheets("départ").Cells(I, 5)
Sheets("arrivée").Cells(L, 7) = Sheets("départ").Cells(I, 7)
Sheets("arrivée").Cells(L, 8) = Sheets("départ").Cells(I, 8)
Sheets("arrivée").Cells(L, 9) = Sheets("départ").Cells(I, 9)
Sheets("arrivée").Cells(L, 10) = Sheets("départ").Cells(I, 10)
Sheets("arrivée").Cells(L, 11) = Sheets("départ").Cells(I, 11)
Sheets("arrivée").Cells(L, 13) = Sheets("départ").Cells(I, 13)
Sheets("arrivée").Cells(L, 14) = Sheets("départ").Cells(I, 14)
Sheets("arrivée").Cells(L, 15) = Sheets("départ").Cells(I, 15)
Sheets("arrivée").Cells(L, 16) = Sheets("départ").Cells(I, 16)
Sheets("arrivée").Cells(L, 17) = Sheets("départ").Cells(I, 17)
Sheets("arrivée").Cells(L, 18) = Sheets("départ").Cells(I, 18)
Sheets("arrivée").Cells(L, 19) = Sheets("départ").Cells(I, 19)
L = L + 1
End If
Next I
J'ai cherché à partir sur une autre base telle que :
L = 5
For I = 5 To 700
If [Conditions...] Then
Sheets("départ").Range(Cells(I, 5), Cells(I, 19)).Copy
Sheets("arrivée").Range(Cells(L, 5), Cells(L, 19)).Paste
L = L + 1
End If
Next I
Je pense ne pas être loin mais ma seconde ligne doit être débogé...
Pouvez-vous m'aider ?
Cordialement,
Ano
3 réponses
-
Bonjour
pour aller vite
Application.ScreenUpdating = False If [Conditions...] Then With Sheets("arrivée") .Range("E5:S700") = Sheets("départ").Range("E5:S700").Value .Columns("F").ClearContents .Columns("L").ClearContents End With End If
Michel-
-
Ah oui, OK t'as raison....je reprend ma copie
alors en me basant sur ton code
Application.ScreenUpdating = False L = 5 For I = 5 To 700 If [Condition] Then Sheets("arrivée").Range(Cells(L, 5), Cells(L, 19))=Sheets("départ").Range(Cells(I, 5), Cells(I, 19)) L = L + 1 End If Next I
merci et bonne soirée -
-
-
J'ai une autre question, comment faire pour que seulement les valeurs soient copiées et non le format ?
Je me doute qu'un ".Values" doit trainer quelque part mais où et comment ?!! -
bonjour
quelque chose comme ça
Const limax = 700 Const Condition = True Public Sub Kopi() Application.ScreenUpdating = False L = 5 For I = 5 To limax If Condition Then Sheets("départ").Range(Cells(I, 5), Cells(I, 19)).Copy Sheets("arrivée").Cells(L, 5) L = L + 1 End If Next I Application.ScreenUpdating = True End Sub
bonne suite