[Résolu] Amélioration de lignes de Code VBA (sélection pour effacement-reset)

Webperegrino

XLDnaute Impliqué
Supporter XLD
Le Forum,
Rebonjour,
J'ai composé une ligne pour vidanger des valeurs de plusieurs zones de cellules.
J'ai été amené à envisager une extension des zones (en nombre de lignes à vider).

Vous trouverez ci-dessous mon cheminement de conception de la codification.
Je souhaite bénéficier de vos connaissances pour obtenir, si possible, la conception d'une phase n° 3 encore plus réduite que ce que j'ai appliqué et qui fonctionne déjà bien.

Phase 1 :
VB:
…
Range("C7:E44,H7:J44,M7:O44,R7:T44,W7:Y44,AB7:AD44,AG7:AI44,AL7:AN44,AQ7:AS44,AV7:AX44"). ClearContents
…

Phase 2, pour étendre la zone à traiter :
VB:
…
dl = Sheets("SAISIE").Cells(Application.Rows.Count, 2).End(xlUp).Row
Range("C7:E" & dl).ClearContents
Range("H7:J" & dl).ClearContents
Range("M7:O" & dl).ClearContents
Range("R7:T" & dl).ClearContents
Range("W7:Y" & dl).ClearContents
Range("AB7:AD" & dl).ClearContents
Range("AG7:AI" & dl).ClearContents
Range("AL7:AN" & dl).ClearContents
Range("AQ7:AS" & dl).ClearContents
Range("AV7:AX" & dl).ClearContents
…

Merci à l’avance pour votre partage de connaissance,
Webperegrino
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : Amélioration de lignes de Code VBA (sélection pour effacement-reset)

Bonjour

Tu as au moins deux solutions différentes:
VB:
With Sheets("SAISIE")
    dl = .Cells(.Rows.Count, 2).End(xlUp).Row
    For i = 3 To 48 Step 5
        .Range(.Cells(7, i), .Cells(dl, i + 3)).ClearContents
    Next i
End With
ou

VB:
Sheets("SAISIE").Range("C7:E" & dl & ",H7:J" & dl & ",M7:O" & dl & ",R7:T" & dl & ",W7:Y" & dl & ",AB7:AD" & dl & ",AG7:AI" & dl & ",AL7:AN" & dl & ",AQ7:AS" & dl & ",AV7:AX" & dl & "").ClearContents

Cordialement
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Amélioration de lignes de Code VBA (sélection pour effacement-reset)

Le Forum,
Bonjour Efgé,
C'est justement sur la deuxième composition que je bloquais.
Merci beaucoup pour ta proposition que j'applique immédiatement. Ça fonctionne avec ce qui suit.
Juste une précision pour les autres lecteurs : dl est calculée sur la Feuille SAISIE.
Dans la feuille où je purge on retire tout simplement l'expression "Sheets("SAISIE")." dans la ligne Sheets("SAISIE").Range("C7:E" & dl & ",H7... ... ).ClearContents
Cela donne donc Range("C7:E" & dl & ",H7... ... ).ClearContents
Merci encore,
Webperegrino
 

Statistiques des forums

Discussions
311 725
Messages
2 081 947
Membres
101 849
dernier inscrit
florentMIG