XL 2010 REMPLACER LES CELLULES VIDE PAR DES 0 SOUS CONDITION

br44

XLDnaute Impliqué
bonjour à toutes et a tous .
je reviens vers vous juste pour savoir si vous pouvez m'aider à résoudre se petit problème .

Dans la macro ci -dessous :
With WsDFC
.Range("B122").Copy
End With
With WsFC
If Not Rcell Is Nothing Then
WsFC.Select
Range("A" & Rcell.Row).Select
Range("A" & Rcell.Row).End(xlToRight).Offset(0, 1).PasteSpecial Paste:=xlPasteValues
End If
End With
With WsFC
If Me.CheckBox3.Value Then
Application.ScreenUpdating = False
'boucle sur l'ensemble des ligne du tableaui
For X = 7 To 44 'pour les lignes concernées

Cells(X, Rcell.Row).Select 'pour la première colonne vide
Selection.Replace What:=Cells(X, Rcell.Row).Value, Replacement:="0", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

Next
Application.ScreenUpdating = True
End If
End With


Comment puis insérer la fonction suivante :

Si la cellule I3 et = à "ok " 'CONDITION"
recherche toutes les cellules vides des la colonne en court et remplace ses en affichant des 0
une fois cette action faite efface la efface la cellules i3 .

je m'explique : je ne rentre qu'une parties des lignes allant de 7 à 44 ( de 10 à 30 en fonction des jours ) il reste donc des cellules vides se sont celle ci qui doivent affiche 0

exemple : si les cellules C7 , C9 et C15 sont remplie les cellules C8 et C10 à C14 sont vide alors affiche 0 a la place .

voilà j'espère êtres claire . n'hésiter pas ma poser tout les question qu'il vous serait utiles .

Amicalement Br44
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum

Et comme cela?
VB:
Private Sub CommandButton1_Click()
'Déclaration variable
Dim Col As Long
Application.ScreenUpdating = False
Col = Cells(8, 30).End(xlToLeft).Column
If Me.CheckBox1.Value Then
Range("I3").Value = "OK"
For X = 8 To 45 ' la boucle opére sur la colonne représentée par Col
If Len(Cells(X, Col)) = 0 Then
Cells(X, Col) = 0
End If
Next
Else
Range("I3") = vbNullString
End If
End Sub
 

br44

XLDnaute Impliqué
bonjour staple 1600

merci pour la rapidité de ta réponse . Bon après avoir testé je reviens vers toi pour t'annonce une bonne nouvelle tout marche bien . il y a juste une tout petit détail à régler c'est l'effacement de la cellule "I3" la fin de la procédure qui ne s'exécute pas, j'ai essayer de remplace par ceci :"Range("I3").ClearContents, " mais cela ne fonction pas non plus . Si tu as une idée n'hésite pas d'avance merci .

je te remercie pour tout et surtout de ta patience
je te dit a plus . Amicalement Br44
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum

Et comme ceci?
VB:
Private Sub CommandButton1_Click()
'Déclaration variable
Dim Col As Long
Application.ScreenUpdating = False
Col = Cells(8, 30).End(xlToLeft).Column
If Me.CheckBox1.Value Then
Range("I3").Value = "OK"
For X = 8 To 45 ' la boucle opére sur la colonne représentée par Col
If Len(Cells(X, Col)) = 0 Then
Cells(X, Col) = 0
End If
Next
End If
Range("I3") = vbNullString
End Sub
 

br44

XLDnaute Impliqué
bonjour staple 1600 ,

merci pour ta réponse rapide mais hélas elle ne fonctionne pas non plus et je ne sais pas pourquoi il ne veut pas efface la cellules I3 après l' exécution du programme . Peut-êtres en lui demandant de décocher la checkbox1?
En tout cas merci pour tout .Amicalement Br44
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, le forum

Si tu étais plus concentré, cela irait plus vite
Je me suis basé sur tes dires, tu dis I3 alors je me base sur I3
Or je viens de vérifier c'est I4
Tout ce temps perdu!!!

Donc avec cette dernière version, ça devrait être bon
VB:
Private Sub CommandButton1_Click()
'Déclaration variable
Dim Col As Long
Application.ScreenUpdating = False
Col = Cells(8, 30).End(xlToLeft).Column
If Me.CheckBox1.Value Then
Range("I4").Value = "OK"
For X = 8 To 45 ' la boucle opére sur la colonne représentée par Col
If Len(Cells(X, Col)) = 0 Then
Cells(X, Col) = 0
End If
Next
End If
Range("I4") = vbNullString
End Sub
 

eriiic

XLDnaute Barbatruc
Bonjour,

Pourquoi ne pas avoir démarré par ça ?
Maintenant si vous avez un moyen de faire cela s'en afficher de "0" et d'éviter d'avoir 3 boucle * a faire moi je suis preneur .

* oui petites explication de texte :
1 boucle vertical pour trouve le n° de clients
1 boucles pour déterminé la semaine correspondant à la ligne 7 de feuil source
1 boucles pour trouver la bonne journée correspondant a la ligne 8 de la feuille source .

VB:
Sub test()
    Dim client As Long, semaine As Long, jour As Long
    Dim c As Range, lig As Long, col As Long
    client = 2: semaine = 3: jour = 4
    With Sheets("FICHE CLIENT")
        Set c = .Columns(1).Find(client, , xlValues, xlWhole)
        If c Is Nothing Then
            MsgBox "err client": Exit Sub
        Else
            lig = c.Row
            col = (semaine - 1) * 7 + 2 + jour
            MsgBox Cells(lig, col).Address
        End If
    End With
End Sub
plutôt qu'un pis-aller que tu as trouvé pour résoudre le problème de base.

Comme tu ne nommes pas les feuilles par leur vrai nom j'ai fait au plus logique.
A voir si ça correspond à ton besoin vu les manques de précisions (?)
eric

edit: page précédente il y a une réponse de staple que tu n'as pas dû voir
 

br44

XLDnaute Impliqué
Re a tous

se petit message juste pour vous dire que j'ai trouvé .

Staple il manquait simplement un "End With" avant la demande d'effacement

cela fonctionne comme se si :
End If
Next
End If
End With
Range("i4") = vbNullString
End Sub


je tiens donc a te remercier Staple 1600 .

Bonjour A toi Eriiic et merci de ta proposition qui vas me vas me permettre d'appendre une nouvelle façon aborder les choses . Je remercie tous ceux qui participer a se fil et m'excuses pour le manques de clarté dans mas explications au départ . je vous promets que je vais essayer de m'améliorer pour les prochain sujet . Amicalement à tous B44
 

Staple1600

XLDnaute Barbatruc
Bonjour le fil,le forum

@br44
C'est dans ton code qu'il manquait un End With pas dans le mien :confused::rolleyes:
(car dans mon code , je n'ai pas de With/End With)
Ce qui veut donc dire qu'en fait tu ne testais pas mon code en faisant un copier/coller de celui-ci en remplacement du tien...

Encore une fois, quelle perte de temps!!!

PS:
bonjour staple 1600
oui j'avais fait le rectification entre "I3 et "I4" la dessus t'inquiète pas aucun problème
Si problème, car la modification tu ne l'as pas faite dans tes messages dans la discussion.
On peut toujours lire que tu cherches à effacer I3.
Et moi, je me fie à ce que je lis dans les messages sur le forum.
 
Dernière édition:

Discussions similaires

Réponses
2
Affichages
147
Réponses
0
Affichages
148

Statistiques des forums

Discussions
312 194
Messages
2 086 071
Membres
103 110
dernier inscrit
Privé