XL 2013 remplir les vides par des 0

manulemalin13000

XLDnaute Occasionnel
Bonjour le forum et meilleurs voeux.

Dans le fichier attaché j'ai des valeurs (le nombre de valeurs varie à chaque fichier)
Le but c'est de mettre des "0" sur les cases vides MAIS QUE pour un block de 8)

Exemple:Dans le fichier joint je dois mettre des 0 uniquement a coté de C4jusqu'a H4.

Donc il y a quelquechose a faire avec la formule 8 - Mod 8 soit six "0" à ajouter.

Pourriez vous m'aider à coder cela ?
Merci
Manu
 

Pièces jointes

  • test.xlsm
    23.8 KB · Affichages: 34

JHA

XLDnaute Barbatruc
Bonjour à tous,

Un second essai de formule si tu ne veux pas afficher les données en "C31" & "C32"
Edit: modif fichier problème de plage fonction decaler

JHA
 

Pièces jointes

  • test rev 1.xlsm
    28.5 KB · Affichages: 25
Dernière édition:

Calvus

XLDnaute Barbatruc
Bonjour manumalin, Jha :), le forum,

Voici un code pour ta demande.

Bonne journée.
VB:
Sub Vide()
Dim i As Integer,j As Integer
Dim ref, myadresse As String
For i = 7 To Range("B" & Rows.Count).End(xlUp).Row 'Step 8
    If Cells(i, 3) = "" Then
    For j = 7 To 1 Step -1
        Set ref = Cells(i - 1, 3).Offset(-j, -1).Find("A*")
        If Not ref Is Nothing Then GoTo suite
    Next j
    End If
Next i
suite:
myadresse = ref.Address
For i = 1 To 8
If Range(myadresse).Offset(i - 1, 1) = "" Then
Range(myadresse).Offset(i - 1, 1) = 0
End If
Next i
End Sub
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir à tous,

Un autre essai ? :
VB:
Sub Zeros()
Dim derligne&, i&, nb&, k&

   Application.ScreenUpdating = False
   With Sheets("Raw Data Form")
      derligne = .Cells(.Rows.Count, 3).End(xlUp).Row
      If derligne < 7 Then Exit Sub
      For i = 7 To derligne Step 8
         nb = Application.WorksheetFunction.Count(.Cells(i, 3).Resize(8))
         If nb > 0 And nb < 8 Then
            For k = i To i + 7
               If .Cells(k, 3) = "" Then .Cells(k, 3) = 0
            Next k
         End If
      Next i
   End With
End Sub
 

Pièces jointes

  • manulemalin13000- vides par zéros- v1.xlsm
    24.7 KB · Affichages: 26

mapomme

XLDnaute Barbatruc
Supporter XLD
Salut Staple1600 :)
Re

Et là, j'ai bon? ;)

On va dire oui selon moi.

Mais rien que pour t'énerver, le cas où la première cellule non vide du bloc ne serait pas la première du bloc n'est pas couvert. Tu n’est pas énervé ? Alors j'ai le fameux cas où "la cellule vide n'est pas vide" qui n'est pas couvert non plus.
Maintenant, c'est certain, tu es énervé, non ? :p:D

rem : sinon joli code très concis :)
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re

Si la cellule vide n'est pas vide, c'est qu'elle est pleine.
Et si elle est pleine, elle enfantera le néant.
Et du néant émergera le chaos.
Et du chaos, le hasard surgira
Et si par hasard, le vide remplit la cellule alors j'y perds mon latin ;)

Tu auras remarqué la beauté du titre de ma précédente macro.

Maintenant que ce message est plein de circonvolutions plus ou moins vides, je suis fatigué.
Je suis vidé quoi ;)
 

Staple1600

XLDnaute Barbatruc
Re

@mapomme (je suis jamais énervé après 22h, surtout quand j'ai bu ma verveine)
Et là, j'ai bon et bon ? ;)
VB:
Sub b()
Dim i&, j&
On Error Resume Next
For i = 7 To 102 Step 8: For j = 1 To 7
If Len(Cells(i + j, 3)) > 0 Then
Cells(i, 3).Resize(8).SpecialCells(4) = 0
End If
Next j: Next
End Sub
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Tu auras remarqué la beauté du titre de ma précédente macro.

Oui, je l'avais remarqué :)

Et là, j'ai bon et bon ;)
Ton code :
VB:
Sub b()
Dim j&
On Error Resume Next
For i = 7 To 102 Step 8: For j = 1 To 7
If Len(Cells(i + j, 3)) > 0 Then
Cells(i, 3).Resize(8).SpecialCells(4) = 0
End If
Next j: Next
End Sub

J'aurais écrit For j= 0 to 7 (sinon le cas où la seule cellule non vide est la première du bloc n'est pas couvert)
 

Discussions similaires

Statistiques des forums

Discussions
312 614
Messages
2 090 242
Membres
104 464
dernier inscrit
alzerco