Je souhaiterais, à travers une macro VBA, si les cellules allant de J7 à J22 sont égales à zéro, alors les données des cellules C, D, F,G et I s'effacent.
Or, quand j'applique la macro que j'ai construit (ci-dessous), cela ne s'applique ne fonctionne que pour la première ligne (ligne 7).
Je pense que c'est une histoire de Next mais je ne suis pas certaine.
Sub Reinitialiser_jour()
Dim cel As Range
For Each cel In Range("J7:J22")
If cel = 0 Then
Range("C" & cel.Row).Resize(, 2).ClearContents
Range("f" & cel.Row).Resize(, 2).ClearContents
Range("I" & cel.Row).Resize(, 1).ClearContents
' Si les cellules comprises entre J7 et J22 sont vides (plus de stock en fin de journée)
' alors vier le contenu des cellules C7 à G22 et I7 à I22
bonjour, tu t'es juste emmelé les pinceaux : le Exit for sert à rien.
Essaye cela et dis nous :
VB:
Sub Reinitialiser_jour()
Dim cel As Range
For Each cel In Range("J7:J22")
If cel.Value = 0 Then
Range("C" & cel.Row).Resize(, 2).ClearContents
Range("f" & cel.Row).Resize(, 2).ClearContents
Range("I" & cel.Row).Resize(, 1).ClearContents
' Si les cellules comprises entre J7 et J22 sont vides (plus de stock en fin de journée)
' alors vier le contenu des cellules C7 à G22 et I7 à I22
End If
Next
End Sub
ps : on test bien la valeur 0 et non pas Vide dans ta cellule !
(Et si c'est bon t'as plus qu'à valider le présent post comme solution (à droite dans la colonne grise tu clique sur le rond... lol)
bonjour à toutes & à tous, bonjour @gaelle31,
Urgent, c'est toujours urgent ...
Une petite précision, quand une cellule X de la plage J7:J22 est égale à zèro (ou vide ?) est-ce qu'il faut vider (et non pas mettre à 0) les cellules en regard de cette cellule X (même ligne) des colonnes C,D,F,G,I. Ou faut t'il tester si toutes les cellules de la plage J7:J22 sont égales à 0 (ou vides ?) et alors vider (et non pas mettre à zéro) toutes les cellules en regard des colonnes C,D,G,F,I ?.
Précise si c'est 0 ou vide et si c'est effacer ou mettre un 0, et si c'est toutes les cellules ou cellule par cellule.
(Si c'est cellule par cellule il suffit d’ôter le exit for de ta boucle)
Amicalement
Alain
Bonjour,
C'est vraiment si les cellules J7 à J22 sont égales à zéro (pas vides).
Par contre, après réflexion, j'aimerais également que ma macro fonctionne si les cellules J7 à J22 ET les cellules D7 et D22 sont égales à zéro alors ma macro s'exécute.
Est-ce que je rajoute juste un "ET" dans ma macro, cela fonctionne ?
bonjour, tu t'es juste emmelé les pinceaux : le Exit for sert à rien.
Essaye cela et dis nous :
VB:
Sub Reinitialiser_jour()
Dim cel As Range
For Each cel In Range("J7:J22")
If cel.Value = 0 Then
Range("C" & cel.Row).Resize(, 2).ClearContents
Range("f" & cel.Row).Resize(, 2).ClearContents
Range("I" & cel.Row).Resize(, 1).ClearContents
' Si les cellules comprises entre J7 et J22 sont vides (plus de stock en fin de journée)
' alors vier le contenu des cellules C7 à G22 et I7 à I22
End If
Next
End Sub
ps : on test bien la valeur 0 et non pas Vide dans ta cellule !
(Et si c'est bon t'as plus qu'à valider le présent post comme solution (à droite dans la colonne grise tu clique sur le rond... lol)
C'était en effet qu'une histoire de Exist For.... Merci beaucoup !
Par contre, après réflexion, j'aimerais également que ma macro fonctionne si les cellules J7 à J22 ET les cellules D7 et D22 sont égales à zéro alors ma macro s'exécute.
Est-ce que je rajoute juste un "ET" dans ma macro, cela fonctionne ?
Sub Reinitialiser_jour()
Dim cel As Range
For Each cel In Range("J7:J22")
If cel.Value = 0 And Range("D" & cel.Row).Value = 0 Then
Range("C" & cel.Row).Resize(, 2).ClearContents
Range("f" & cel.Row).Resize(, 2).ClearContents
Range("I" & cel.Row).Resize(, 1).ClearContents
' Si les cellules comprises entre J7 et J22 sont vides (plus de stock en fin de journée)
' alors vier le contenu des cellules C7 à G22 et I7 à I22
End If
Next
End Sub
dans ce cas les 2 cellules J et D doivent être à 0 pour qu'on vide les autres.
Si jamais c'est l'une ou l'autre à 0 provoque le vidage alors utilise "Or"
j'aimerais également que ma macro fonctionne si les cellules J7 à J22 ET les cellules D7 à D22 sont égales à zéro ; est-ce que je rajoute juste un "ET" dans ma macro ?
réponse par rapport à mon code VBA du post #6 : non, ce n'est pas la peine d'ajouter un ET, car il suffit d'ajouter la plage supplémentaire à la fonction SUM() :
VB:
Sub Reinitialiser_jour()
Application.ScreenUpdating = 0
If Application.Sum([D7:D22, J7:J22]) = 0 Then _
[C7:D22, F7:G22, I7:I22].ClearContents
End Sub
c'est plus logique de mettre la plage D avant la plage J !