Compléter les cellules vides d'un tableau (VBA)

FAB80170

XLDnaute Junior
Bonsoir,

je souhaiterais compléter les cellules vides d'une plage de données (en VBA) > (voir fichier pour exemple)

Si cellule vide, prendre la valeur de la cellule de gauche, ainsi si la macro respecte l'ordre des colonnes,
la cellule vide trouvera toujours une valeur sur sa gauche dans la plage sélectionnée.

??? eum, eum ...

Par avance merci.
 

Pièces jointes

  • remplir cellules vides.xlsx
    13.6 KB · Affichages: 57

Hieu

XLDnaute Impliqué
Salut,

Une solution :
VB:
Sub mlkj()
For j = 1 To 22
    For i = 0 To 59
        If IsEmpty(Range("a1").Offset(i, j)) Then Range("a1").Offset(i, j) = Range("a1").Offset(i, j - 1)
    Next i
Next j
End Sub
 

Pièces jointes

  • remplir cellules vides_v0.xlsm
    18.8 KB · Affichages: 42

Lone-wolf

XLDnaute Barbatruc
Bonjour à tous,

d'après l'exemple de Hieu, à adapter.

VB:
Option Explicit
Sub Test()
Dim lig As Long, j As Long, i As Long

With Feuil1
lig = .Range("a" & Rows.Count).End(xlUp).Row
For j = 1 To 22
    For i = 2 To lig
        If IsEmpty(.Range("a" & i).Offset(0, j)) Then  _
.Range("a" & i).Offset(0, j) = .Range("a" & i).Offset(0, j - 1)
    Next i
Next j
End With
End Sub
 
Dernière édition:

Lone-wolf

XLDnaute Barbatruc
Bonjour J(enais) M(arre) :D :D :D

Oui, mais faudrais ajouter le nombre de colonnes (22).

VB:
Option Explicit
Sub a()
Dim lig As Long, i As Long, col As Long
Application.ScreenUpdating = False
On Error Resume Next
With Feuil1
lig = .Cells(Rows.Count, 1).End(xlUp).Row
For col = 2 To 22
For i = 2 To lig
.Rows(i).SpecialCells(xlCellTypeBlanks) = "=RC[-1]"
Next i
Next col
End With
With ActiveSheet.UsedRange: .Value = .Value: End With
End Sub
 
Dernière édition:

FAB80170

XLDnaute Junior
Bonjour à tous,
la macro proposé par Hieu me convenait d'avantage que celle de Staple1600 car elle renvoyé des valeur absolues et non des calculs.
Je vous envoi une partie de mon fichier source; avec une plage modifiée et cette fois-ci un décalage à gauche de 3 cellules;
à savoir, pour exemple, si 1P_S1HT (N37), je dois aller chercher 1p_BENCHHT (K37) > renvoi la cellule située à gauche avec un décalage 3 ... soit la valeur de 66.33 €
Est-ce que ces explications sont compréhensibles ?

Par avance MERCI.
 

Pièces jointes

  • remplir cellules vides source.xlsx
    2.8 MB · Affichages: 29

pierrejean

XLDnaute Barbatruc
Bonjour à tous

Arf pas vu la modif d'enoncé !!!!

A tester
Code:
Sub remplir()
tablo = Range("A1").CurrentRegion
For n = LBound(tablo, 1) To UBound(tablo, 1)
  For m = LBound(tablo, 2) + 1 To UBound(tablo, 2)
     If tablo(n, m) = "" Then
        tablo(n, m) = tablo(n, m - 1)
     End If
  Next
Next
Range("A1").Resize(UBound(tablo, 1), UBound(tablo, 2)) = tablo
End Sub
 

Statistiques des forums

Discussions
312 198
Messages
2 086 145
Membres
103 130
dernier inscrit
FRCRUNGR