Remplir les cellules vides avec des 0

Résolu
Bonjour,

J'aimerais remplir les cellules vides d'une colonne avec des 0. Et je veux que ceci s'applique seulement jusqu'à la dernière ligne de données. Pour cela, j'utilise la colonne A qui détermine la dernière ligne de données.

Est-ce que quelqu'un pourrait me dire ce que je dois changer dans ma Macro pour que ça fontionne? Pour l'instant, la Macro semble faire le tour de ma colonne L puis s'arrête à la cellule O2. Mais les cellules vides demeurent vides :-( C'est clair que ma syntaxe est incorrect. J'ai aucune idée comment l'écrire.

Sub MettreLesZero()
'
' MettreLesZero Macro
' Met les 0 dans les cellules vide de %MLO et %WEL
'

'
Dim cellule As Range
derlig = Columns("A").Find("*", , , , , xlPrevious).Row
For Each cellule In Range("L:L")
If cellule.Value = """" Then
cellule.Value = 0
End If
Next cellule
Range("O2").Select
End Sub



--
eLise

5 réponses

  1. Contributeur
    Bonjour à tous

    tout simplement :o)

    derlig = Columns("A").Find("*", , , , , xlPrevious).Row
              If Application.CountIf(Range("L1:L" & derlig), "") > 0 Then
                   Range("L1:L" & derlig).SpecialCells(xlCellTypeBlanks) = 0
              End If


    Edit modifié le code
    Michel
    1
    1. Michel,

      Merci, ça fonctionne. Désolée pour avant, je crois que j'ai perdu le fil des réponses. J'ai manqué la tienne totalement.

      Merci encore :-)

      Voici ma version adaptée à mes besoins:

      derlig = Columns("A").Find("*", , , , , xlPrevious).Row
      If Application.CountIf(Range("L1:L" & derlig), "") > 0 Then
      Range("L1:L" & derlig).SpecialCells(xlCellTypeBlanks) = 0
      End If
      derlig = Columns("A").Find("*", , , , , xlPrevious).Row
      If Application.CountIf(Range("O1:O" & derlig), "") > 0 Then
      Range("O1:O" & derlig).SpecialCells(xlCellTypeBlanks) = 0
      End If
      0
  2. Contributeur
    bonjour,

    N'aurais-tu pas décoché l'affichage des zéros ?

    Tu n'as pas besoin de doubler les guillemets :

    If cellule.Value = "" Then 
    0
    1. Pas certaine de savoir où j'aurais décoché l'affichage des zéros. Par contre, sesont des cellules vides, sans formule à l'intérieur.

      J'ai enlevé les doubles guillemets mais ma fonction n'est toujours pas à point. Cette fois, elle a mis des zéros dans quelques cellules puis elle n'a jamais complété. En fait, j'ai dû l'arrêter car elle ne semblait pas finir :-/

      Le End If est maintenant surligné en jaune dans Visual Basic. Qu'est-ce qui ne va pas?

      Sub MettreLesZero()
      '
      ' MettreLesZero Macro
      ' Met les 0 dans les cellules vide de %MLO et %WEL
      '

      '
      Dim cellule As Range
      derlig = Columns("A").Find("*", , , , , xlPrevious).Row
      For Each cellule In Range("L:L")
      If cellule.Value = "" Then
      cellule.Value = 0
      End If
      Next cellule
      Range("O2").Select
      End Sub
      0
    2. Correction, ma formule met des zéro dans toutes les cellules vide de la colonne L. Je voulais qu'elle arrête à la dernière ligne de données déterminé par la colonne A. C'est pour ça qu'elle prenait si longtemps à terminer.
      0
  3. Salut,

    regarde comme cela, pour surveiller la plage A1 à L dernière ligne de A non vide

    Dim cellule As Range
    derlig = Columns("A").Find("*", , , , , xlPrevious).Row
    For Each cellule In Range([A1], [A65536].End(xlUp).Offset(0, 11))
    If cellule.Value = "" Then
    cellule.Value = 0
    End If
    Next cellule
    Range("O2").Select

    A+
    Mike-31

    Une période d'échec est un moment rêvé pour semer les graines du savoir.
    0
    1. Bonjour Mike,

      Ta formule fonctionne en partie. Elle a ajouté des zéros non seulement dans les cellules vides de la colonne L mais aussi dans les cellules vides des colonnes avant L :-(

      Que faut-il changer pour s'en tenir à la colonne L ?
      0
  4. Re,

    quelle plage veux tu surveiller de A1 à L équivalent à la dernière ligne non vide de A ou simplement la colonne L de L1 à L dernière ligne non vide de A exemple L20
    0
    1. Ouff.... la colonne L de L1 à L dernière ligne non vide de A
      0
  5. Re,

    alors voila

    Dim cellule As Range
    derlig = Columns("A").Find("*", , , , , xlPrevious).Row
    For Each cellule In Range([L1], [A65536].End(xlUp).Offset(0, 11))
    If cellule.Value = "" Then
    cellule.Value = 0
    End If
    Next cellule
    Range("O2").Select

    0
    1. Mike,

      Ça fonctionne très bien. Merci

      Peux-tu m'expliquer pourquoi tu mets ceci: [A65536] ? Est-ce une limite de ligne aléatoire?
      0
    2. Mike,

      J'essais d'appliquer la même syntaxe pour la colonne O. Voici ce que j'ai écrit.

      Dim cellule As Range
      derlig = Columns("A").Find("*", , , , , xlPrevious).Row
      For Each cellule In Range([L1], [A65536].End(xlUp).Offset(0, 11))
      If cellule.Value = "" Then
      cellule.Value = 0
      End If
      Next cellule
      Range("O2").Select
      Dim cellule As Range
      derlig = Columns("A").Find("*", , , , , xlPrevious).Row
      For Each cellule In Range([O1], [A65536].End(xlUp).Offset(0, 14))
      If cellule.Value = "" Then
      cellule.Value = 0
      End If
      Next cellule
      Range("I2").Select

      Mais ça ne fonctionnne pas. Je reçois ce message: "Erreur de compilation. Déclaration existante dans la portée en cours." Je ne comprends pas ce que ça veut dire. Peux-tu m'aider?

      Merci :-)
      0
    3. Contributeur
      bon, bin excuse moi d'avoir essayé de de t'aider avec une macro toute simple : 3 ou 4 lignes, sans boucle, instantanée, mais, c'est toi qui décide!
      pourquoi faire simple quand on peut faire compliqué... surtout qu'avec l'enregistreur de macro, la procédure est faite à 90%...
      0
    4. Mike,

      Le message de michel_m, est-ce que ça concerne mon problème de Macro? Je ne comprends son intervention.
      0
    5. Contributeur
      Bonsoir à tous,

      La proposition de michel est remontée tout en haut à cause du +1.
      Tu peux te passer de la boucle en faisant en vba l'équivalent de 'edition / atteindre... / cellules.. / cellules vides'
      Teste...

      eric
      0