Remplir les cellules vides avec des 0

Résolu
BILLING Messages postés 162 Date d'inscription   Statut Membre Dernière intervention   -  
BILLING Messages postés 162 Date d'inscription   Statut Membre Dernière intervention   -
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



5 réponses

michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 315
 
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
BILLING Messages postés 162 Date d'inscription   Statut Membre Dernière intervention   48
 
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
gbinforme Messages postés 14946 Date d'inscription   Statut Contributeur Dernière intervention   4 725
 
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
BILLING Messages postés 162 Date d'inscription   Statut Membre Dernière intervention   48
 
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
BILLING Messages postés 162 Date d'inscription   Statut Membre Dernière intervention   48
 
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
Mike-31 Messages postés 18407 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
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
BILLING Messages postés 162 Date d'inscription   Statut Membre Dernière intervention   48
 
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
Mike-31 Messages postés 18407 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
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
BILLING Messages postés 162 Date d'inscription   Statut Membre Dernière intervention   48
 
Ouff.... la colonne L de L1 à L dernière ligne non vide de A
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mike-31 Messages postés 18407 Date d'inscription   Statut Contributeur Dernière intervention   5 135
 
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
BILLING Messages postés 162 Date d'inscription   Statut Membre Dernière intervention   48
 
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
BILLING Messages postés 162 Date d'inscription   Statut Membre Dernière intervention   48
 
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
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 315
 
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
BILLING Messages postés 162 Date d'inscription   Statut Membre Dernière intervention   48
 
Mike,

Le message de michel_m, est-ce que ça concerne mon problème de Macro? Je ne comprends son intervention.
0
eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
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