1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
Sub RemplirLesCellulesVides(ByVal FeuilleEnCours As Worksheet, ByVal LigneDeTitre As Long, ByVal LigneLimite As Long, ByVal ColonneEnCours As Long)
Dim DerniereLigne As Long, LigneEnCours As Long
Dim ValeurEnCours As Variant
With FeuilleEnCours
DerniereLigne = .UsedRange.SpecialCells(xlCellTypeLastCell).Row
If DerniereLigne < LigneLimite Then LigneLimite = DerniereLigne
' Initialisation de ValeurEnCours
Select Case .Cells(LigneDeTitre + 1, ColonneEnCours).Value
Case ""
ValeurEnCours = "Sans info"
.Cells(LigneDeTitre + 1, ColonneEnCours) = ValeurEnCours
Case 0, "0"
Case Else
ValeurEnCours = .Cells(LigneDeTitre + 1, ColonneEnCours)
End Select
' 1er balayage pour mettre à jour les valeurs "" avec ValeurEnCours
' les valeurs 0 ne sont pas prises en compte
For LigneEnCours = LigneDeTitre + 1 To LigneLimite
Select Case .Cells(LigneEnCours, ColonneEnCours)
Case ValeurEnCours
Case ""
.Cells(LigneEnCours, ColonneEnCours) = ValeurEnCours
Case Else
ValeurEnCours = .Cells(LigneEnCours, ColonneEnCours)
End Select
Next LigneEnCours
' 2ème balayage pour mettre à jour les valeurs 0
For LigneEnCours = LigneDeTitre + 1 To LigneLimite
Select Case .Cells(LigneEnCours, ColonneEnCours)
Case ""
.Cells(LigneEnCours, ColonneEnCours) = 0
End Select
Next LigneEnCours
End With
End Sub
Sub TestRemplirLesCellulesVides()
Dim MaLigneDeTitre As Long, MaLigneLimite As Long, MaColonneEnCours As Long
MaLigneDeTitre = 1
MaLigneLimite = 8000
' MaColonneEnCours = 7
For MaColonneEnCours = 1 To 7 ' A adapter
RemplirLesCellulesVides ActiveSheet, MaLigneDeTitre, MaLigneLimite, MaColonneEnCours
Next MaColonneEnCours
End Sub |
Partager