Remettre une plage de cellules à Zéro aprés calcul

  • Initiateur de la discussion Initiateur de la discussion br44
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

br44

XLDnaute Impliqué
Bonsoir le forum,

Je reviens vers vous pour savoir si il est possible de remettre à 0 une plage de cellules sous condition est après calcul?

Dans la macro qui suit j'aimerais ajouter une remise à 0 des cellules concernées en rajoutant ceci :

Code:
With Sheets(Mois)
Set plage = .Range("E8:E12")
.Range("E18").Value = ""
For Each C In plage
 If C.Font.ColorIndex = 5 Then
.Range("E18").Value = .Range("E18") + C.Value
End If

partie à rajouter après le calcul de la plage ("E8:E12"):
Code:
If C.Value > 0 and  C.Font.ColorIndex = 5 Then.
C.Value = 0 
End If

Ma question est : Comment l'écrire correctement pour que cela s'exécute automatiquement ?

Dans l'espoir d'avoir été claire dans ma demande et vous remerciant par avance de pour vos réponses .
Je vous dis à bientôt sur se fil .Amicalement BR44
 
Re : Remettre une plage de cellules à Zéro aprés calcul

Bonjour br44
Peut-être comme ceci ?
Code:
[COLOR="DarkSlateGray"][B]With Sheets(Mois)
Set plage = .Range("E8:E12")
.Range("E18").Value = ""
For Each C In plage
 If C.Font.ColorIndex = 5 Then
.Range("E18").Value = .Range("E18") + C.Value
[COLOR="Red"]C.Value = 0[/COLOR]
End If
Next C[/B][/COLOR]
ROGER2327
#2698
 
Re : Remettre une plage de cellules à Zéro aprés calcul

Salut br44 et le forum
Pas sûr de comprendre, mais tu pourrais effacer juste après avoir additionné :
Code:
With Sheets(Mois)
    Set plage = .Range("E8:E12")
        .Range("E18") = 0
        For Each C In plage
            If C.Font.ColorIndex = 5 Then
                .Range("E18") = .Range("E18") + C
                C.ClearContents
            End If
A+
 
Re : Remettre une plage de cellules à Zéro aprés calcul

Bonjour,ROGER2327,Gorfael,le forum

Un grand merci à vous deux pour vos réponses aussi rapide .

ROGER2327: Je teste ta proposition et je te tiens au courant .

GorFael : Je ne souhaite pas effacer le contenu de la cellule à cette endroit ,mais je te remercie pour cette proposition ,Qui pourrait me servir plus tard.

Je vous dis à plus .Amicalement BR44
 
Re : Remettre une plage de cellules à Zéro aprés calcul

Bonsoir à tous


Une variante qui supprime le IF


Code:
Sub a()
With Sheets(Mois)
    Set plage = .[E8:E12]
    .[E18].ClearContents
        For Each C In plage
        .[E18] = .[E18] + (-1 * C * (C.Font.ColorIndex = 5))
        Next C
    plage.Value = 0
End With
End Sub
 
Re : Remettre une plage de cellules à Zéro aprés calcul

Bonsoir à tous
Une différence importante entre la solution se Staple1600 et les autres : cette dernière réinitialise toute la plage [E8:E12], tandis que les autres n'effacent que les cellules effectivement prises en compte dans le calcul.
A br44 de voir ce qui lui convient...​
Bonne nuit.
ROGER2327
#2701
 
Re : Remettre une plage de cellules à Zéro aprés calcul

Bonjour,ROGER2327,Staple1600 et à tout le forum


Tout d'abord milles excuses pour le retard mis à vous répondre ,mais j'étais en pleins test et j'essayais de comprendre le fonctionnement de la dernière ligne de code .

ROGER2327: Le principe de la remise à 0 fonctionne.
Le problème est maintenant de conservé la valeur de la cellule ("E18") après la mise 0

Le but étant d'afficher le résultat de la somme de la plage ("E8:E12") à chaque fois qu'une cellule passe en bleu.

Petit explication dans l'ordre des événements:

1) Prenons par exemple la cellule "E8" qui serait égal à 100

Donc "E8" =100 et la cellule "E18" Affiche 100

La cellule "E8" passe à 0
La Cellule "E18" est toujours à 100

2) La cellule "E12" =874 et la cellule "E18" affiche 974

Soit :100 de "E8" +874 de "E12" =974

La cellule "E12" passe à 0
La cellule "E18" est toujours à 974

Ainsi de suite pour toute la plage . Hors actuellement avec la ligne de code:
C.Value=0
m'affiche 0 dans les cellules "E8" et "E18" .

Est-il possible d'enregistrer la valeur de la cellule "E18" avant la mise à 0?


Staple1600: Merci pour ta participation et de ton aide mais comme la dit ROGER2327 je veux intervenir sur chaque cellule de la plage .

Vous remerciant tous de votre aides je vous dis à bientôt sur se fil .Amicalement BR44
 
Re : Remettre une plage de cellules à Zéro aprés calcul

Re...
Je ne peux répondre sur la base de ce dont nous disposons.
Il faudrait voir le code (et la feuille qui va avec) dans son ensemble. Ce qui est certain, c'est que la partie du code que nous connaissons ne réinitialise pas la cellule E18. La ligne C.Value = 0 ne concerne que les cellules E8, E9, E10, E11 et E12.​
ROGER2327
#2715
 
Re : Remettre une plage de cellules à Zéro aprés calcul

Bonjour ROGER2327, le forum,

Un grand merci pour ta réponse .

Je te mets un lien où tu trouveras tout le fichier concerné ,mais il faudra le compléter avec la macro suivantes :
Code:
'Déclare la variable Mois
  Dim Mois As String
  Dim k As Integer, L As Long, Col As Integer
'Déclare la variable B et C
  Dim B As String
  Dim C As Range, X
  'changé de méthode,problème avec numfact,pourquoi???
  'nomcombobox contiendra nfacture,nanfacture1,etc
If NomClient.Value = "" Or NomCombobox = "" Then Exit Sub
 L = NomClient.List(NomClient.ListIndex, 2) 'la ligne du nom
'cherche le n°facture sur la ligne
With Sheets("SAISIE1")
Set C = .Rows(L).Find(Controls(NomCombobox).Value, LookIn:=xlValues)
If Not C Is Nothing Then
'Définit la variable Mois
'c.formula="=JANVIER!E9" ,InStr donne la position de ! dans la chaîne
'd'où mid(2,résultat instr-2) donne le mois voir aide(F1)
Mois = Mid(C.Formula, 2, InStr(C.Formula, "!") - 2) 'extrait le mois
C.Offset(, 1).Font.ColorIndex = 5
C.Offset(, 1).Font.Bold = True
Col = C.Column 'colonne du mois
L = 0
'cherche d'abord le nom,ensuite le n°facture sur la ligne
With Sheets(Mois) 'si tu employes with end with ne pas oublier le point devant cells et /ou range
Set C = .Columns("B").Find(NomClient.Value, LookIn:=xlValues)
   If Not C Is Nothing Then
L = C.Row 'index ligne nom
Set C = .Rows(L).Find(Controls(NomCombobox).Value, LookIn:=xlValues)
If Not C Is Nothing Then
C.Offset(0, -1).Font.ColorIndex = 5
C.Offset(, -1).Font.Bold = True 'corrigé
'Renvoie les informations dans la partie "Détail Encaissement " sans le format
 .Range("V" & C.Row).Value = Sheets("SAISIE1").Range("B" & Lig).Value
 .Range("W" & C.Row).Value = Sheets("SAISIE1").Range("C" & Lig).Value
 .Range("X" & C.Row).Value = Sheets("SAISIE1").Range("D" & Lig).Value
 .Range("Z" & C.Row).Value = Sheets("SAISIE1").Range("E" & Lig).Value
 .Range("Y" & C.Row).Value = Sheets("SAISIE1").Range("F" & Lig).Value
 .Range("AA" & C.Row).Value = Sheets("SAISIE1").Range("G" & Lig).Value
 .Range("AB" & C.Row).Value = Sheets("SAISIE1").Range("B8").Value
  End If
 End If
End With

[COLOR="Red"]'Partie qui conserne  ma question[/COLOR] 

With Sheets(Mois)
Set plage = .Range("E8:E12")
.Range("E18").Value = ""
For Each C In plage
 If C.Font.ColorIndex = 5 Then
 .Range("E18").Value = .Range("E18") + C.Value
[COLOR="Green"]C.Value=0[/COLOR]
End If
Next C
End With

[COLOR="Red"]' Suite logique de la macro [/COLOR]

With Sheets(Mois)
Set plage = .Range("I8:I12")
.Range("I18").Value = ""
For Each C In plage
 If C.Font.ColorIndex = 5 Then
.Range("I18").Value = .Range("I18") + C.Value
End If
Next C
End With
With Sheets(Mois)
Set plage = .Range("M8:M12")
.Range("M18").Value = ""
For Each C In plage
 If C.Font.ColorIndex = 5 Then
.Range("M18").Value = .Range("M18") + C.Value
End If
Next C
End With
With Sheets(Mois)
Set plage = .Range("Q8:Q12")
.Range("Q18").Value = ""
For Each C In plage
 If C.Font.ColorIndex = 5 Then
.Range("Q18").Value = .Range("Q18") + C.Value
End If
Next C
End With
End If
End With

Ce code est à placer dans le bouton "enregistrer" de l'usf à la place de celui qui est présent.

Voici le lien :
Cijoint.fr - Service gratuit de dépôt de fichiers

te remerciant par avance je te dis à bientôt sur se fil .Amicalement BR44
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
589
Réponses
6
Affichages
675
Réponses
7
Affichages
799
Retour