Besoin d'une boucle qui n'exerce la même formule que pour la colonne suivante

Comme vous pouvez le voir, je le répète à chaque fois que je vais à la valeur suivante … Y a-t-il un moyen plus facile de le faire?

J'ai essayé la fonction de boucle, mais je ne sais pas comment cela fonctionne, de sorte qu'il s'exécute à la prochaine colonne chaque fois pour la même ligne.

Sub rebuild() If D28 > 2600000 Then Range("E$110:I$120").Select Selection.Copy Range("E18:Il28").Select ActiveSheet.Paste End If If E28 > 2600000 Then Range("E$110:I$120").Select Selection.Copy Range("F18:Jl28").Select ActiveSheet.Paste End If If F28 > 2600000 Then Range("E$110:I$120").Select Selection.Copy Range("G18:Kl28").Select ActiveSheet.Paste End If If G28 > 2600000 Then Range("E$110:I$120").Select Selection.Copy Range("H18:Ll28").Select ActiveSheet.Paste End If End sub 

C'est vraiment très simple. J'ai commenté le code.

Aussi, vous n'avez pas besoin de sélectionner une plage à copyr / coller. Vous voudrez peut-être voir CE

 Sub rebuild() With Sheet1 '~~> Change this to the relevant sheet For i = 4 To 6 '<~~ Col 4 (D) to Col 6 (F) If .Cells(28, i).Value > 2600000 Then '~~> Increment the range wgere you want to paste .Range("E$110:I$120").Copy .Range(.Cells(18, i + 1), .Cells(128, i + 5)) End If Next i End With End Sub 

Une solution pourrait être de mettre vos variables dans un tableau, puis de créer une boucle simple.

 Dim MyArray(4, 2) as Variant MyArray(0,0) = D28 MyArray(0,1) = Range("E18:Il28") MyArray(1,0) = E28 MyArray(1,1) = Range("F18:Jl28") MyArray(2,0) = F28 MyArray(2,1) = Range("G18:Kl28") MyArray(3,0) = G28 MyArray(3,1) = Range("H18:Ll28") For i = LBound(MyArray) to UBound(MyArray) If MyArray(i,0) > 2600000 then Range("E$110:I$120").Copy MyArray(i,1).Paste End If Next