Microsoft 365 vba code modifie 2 cellules si 0 ou "" alors qu'il ne doit modifier qu'une seule cellule

Mwadepaname

XLDnaute Junior
Bonjour le forum,
je suis sur un fichier de planification avec 2 onglets.
J'ai fait un bouton pour modifier le nombre de place disponible dans une réunion. (onglet neutraliser)

Mon code fonctionne si je met n'importe quel chiffre sauf 0 ou vide.
=============
Dim cel As Range, plage As Range
Set plage = Sheets("creneaux").Range("a1:a" & Sheets("creneaux").Range("A" & Rows.Count).End(xlUp).Row)

For Each cel In plage
If cel.Value = neutralise_creneau.Value Then cel.Offset(0, 3).Value = places.Value
Next cel
=============

0 que j'utilise pour annuler un créneau de réunion. (onglet créneaux)
Lorsque je met 0. Celui-ci écrase bien l'ancienne donnée mais écrase également la donnée de la ligne du dessous comme si j'avais mis offset(0,3) et offset(1,3).
Je ne comprends pas , si quelqu'un en connait la raison.
Mon code contient il une erreur ?

Merci
 

Pièces jointes

  • mwade test.xlsm
    102.3 KB · Affichages: 8

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour,
Votre variable neutralise_creneau change de valeur lors de la boucle, je n'ai pas éssayé de comprendre pourquoi.
une solution est de figer cette valeur en début de macro :
VB:
Private Sub val_modif_Click()
Application.ScreenUpdating = False

Dim cel As Range, plage As Range, Reunion As String
Reunion = neutralise_creneau
Set plage = Sheets("creneaux").Range("a1:a" & Sheets("creneaux").Range("A" & Rows.Count).End(xlUp).Row)

For Each cel In plage
If cel.Value = Reunion Then
    cel.Offset(0, 3).Value = places.Value
End If
Next cel

MsgBox ("modification effectuée")

neutralise_creneau.Value = ""
places.Value = ""
neutraliser.hide

End Sub
 

Pièces jointes

  • mwade test.xlsm
    101.6 KB · Affichages: 1

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof