Remplir les cellules vides avec des 0

Résolu/Fermé
BILLING Messages postés 162 Date d'inscription vendredi 4 mai 2012 Statut Membre Dernière intervention 31 mars 2021 - 4 oct. 2012 à 17:12
BILLING Messages postés 162 Date d'inscription vendredi 4 mai 2012 Statut Membre Dernière intervention 31 mars 2021 - 5 oct. 2012 à 19:52
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



A voir également:

5 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 4/10/2012 à 18:58
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 vendredi 4 mai 2012 Statut Membre Dernière intervention 31 mars 2021 48
5 oct. 2012 à 19:52
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 lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
4 oct. 2012 à 17:16
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 vendredi 4 mai 2012 Statut Membre Dernière intervention 31 mars 2021 48
4 oct. 2012 à 17:31
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 vendredi 4 mai 2012 Statut Membre Dernière intervention 31 mars 2021 48
4 oct. 2012 à 17:40
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 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
Modifié par Mike-31 le 4/10/2012 à 17:52
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 vendredi 4 mai 2012 Statut Membre Dernière intervention 31 mars 2021 48
4 oct. 2012 à 18:04
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 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
4 oct. 2012 à 18:11
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 vendredi 4 mai 2012 Statut Membre Dernière intervention 31 mars 2021 48
4 oct. 2012 à 18:27
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 18313 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 21 avril 2024 5 073
4 oct. 2012 à 18:30
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 vendredi 4 mai 2012 Statut Membre Dernière intervention 31 mars 2021 48
4 oct. 2012 à 19:25
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 vendredi 4 mai 2012 Statut Membre Dernière intervention 31 mars 2021 48
4 oct. 2012 à 19:38
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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
4 oct. 2012 à 19:43
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 vendredi 4 mai 2012 Statut Membre Dernière intervention 31 mars 2021 48
4 oct. 2012 à 19:55
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 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
4 oct. 2012 à 23:54
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