Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Remplacer les 0 par la case précédente

  • Initiateur de la discussion Pika
  • Date de début
P

Pika

Guest
Bonjour à vous.
Malgré mes recherches sur le forum, je n'ai pas trouvé (et pas su adapté) ce que je voulais.
Ne pouvant pas poster de fichier, je vais ecrire mon code.

Je voudrais donc remplacer tout les zeros d'une plage de données ( B7:S10086) par la valeur de la case précédente ( étant donné que ce ne sera pas un zero vu que la macro aura deja remplacé la valeur ).

Sub supprimer_zero()
Range('B7').Select
For j = 1 To 18
Columns(j).Select
Cells(7, j).Select
For i = 1 To Cells(10086, j).End(xlUp).Row
If ActiveCell.Value = '0' Then
Range(i, j).Value = Range(i - 1, j).Value
Else
Selection.Offset(1, 0).Select
End If
Next i
Next j
End Sub

A noter aussi que je n'ai pas encore créé la vérification pour la premiere ligne, car au dessus (ligne6) il y a des noms et il faudra donc copier la valeur suivante si ce n'est pas un zero ... mais ca je devrais pouvoir le faire une fois que j'aurais la syntaxe .

Pettite précision : Je n'ai jamais fait de VBA, et je suis sous Excel 2002.

Merci de votre aide.
 

2passage

XLDnaute Impliqué
Bonjour,

ce code devrait convenir a ton besoin :

Code:
Private Sub supprime_zero()
Application.ScreenUpdating = False
For j = 1 To 18
    For i = 7 To 10086
        Cells(i, j).Select
        If ActiveCell.Value = 0 Then
            ActiveCell.Value = ActiveCell.Offset(-1, 0).Value
        End If
    Next i
Next j
Application.ScreenUpdating = True
End Sub

On te laisse chercher pour la ligne 6 ou tu veux le code ?

A+

Edit : départ depuis la ligne 7
Edit 2 : héhé .. doublé Robert, mais bon... c'est lui qui a raison : son code est commenté...

Message édité par: 2passage, à: 28/06/2005 11:41
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Pika,

Le code ci-dessous conviendra mieux si j'ai bien saisi ton problème :


Édition

Bonjour 2passage on était synchro... mais t'es passé devant...


Message édité par: Robert, à: 28/06/2005 11:38
 

mutzik

XLDnaute Barbatruc
Bonjour Pika,

ton code est tout à fait correct sauf :

If ActiveCell.Value = '0' Then

cette ligne ne va pas rechercher la VALEUR 0 mais le TEXTE 0 puisque tu le mets entre ''

enleves les '' et cela devrait fct ok

et zut, pas raffraichi , comme d'hab

bonjour à tous et bonne journée

Message édité par: mutzik, à: 28/06/2005 11:40
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour le fil, le forum,

Juste pour embêter Mutzik !
tu es sûr que Range(i, j).Value = Range(i - 1, j).Value ça marche...

Je profite de cette petite pique pour te féliciter en live pour le Chef-d'œuvre de ta 100ème. À mon humble avis on a rien fait de mieux...


Édition

M... C'est mon 400ème et j'ai rien préparé... Quel naze !

Message édité par: Robert, à: 28/06/2005 11:51
 
P

Pika

Guest
Je vous remercie pour vos réponses .
Effectivement, j'ai fait beaucoup d'erreurs que j aurais du corriger moi meme ( comme le texte...) mais on dira queje suis fatigué .

Pour ce qui est de la vérification, je préfère chercher un peu , je reviendrai cet apres midi si je n'y suis pas arrivé.

Encore merci à vous tous.

Pika
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…