Vider cellule sous condition

Résolu
Je souhaite en cliquant sur un bouton de mon userform, parcourir la colonne "I" verifier si la valeur égale la valeur du textbox4 et puis si la valeur de la colonne B est différente de textbox21 me vider les cellules des colonnes H, I et J. Etant donné que je suis pas experte en vba et après plusieurs recherches j'arrive pas à comprendre pourquoi le code utilisé ci-dessous ne fonctionne pas.

Merci bien pour votre aide mais je suis vraiment bloquée la dessus.

Je sollicite ainsi votre aide.

Merci d'avance.

 Private Sub CommandButton7_Click()
 Set sh1 = Sheets("planning")

 For i = 3 To sh1.Cells(Rows.Count, "I").End(xlUp).Row
 If sh1.Range("I" & i) = TextBox4.Value And sh1.Range("I" & i).Offset(0, -7) <> TextBox21.Value Then
 sh1.Range("I" & i).Value = ""
 sh1.Range("I" & i).Offset(0, 1).Value = ""
 sh1.Range("I" & i).Offset(0, -1).Value = ""
 End If

 Next i
 MsgBox ("Fichier actualisé")
 End Sub

4 réponses

  1. Contributeur Ambassadeur
    bonjour,
    moi je me méfierais du
    Rows
    sans précision de la feuille, et je ferais:
    For i = 3 To sh1.Cells(sh1.Rows.Count, "I").End(xlUp).Row


    en passant, je trouve que Offset est inutile ici, et je ferais plutôt, par exemple:
    Range("B" & i)

    au lieu de
    Range("I" & i).Offset(0, -7)
    0
    1. Bonjour yg_be,

      Merci pour votre retour.
      J’ai effectué les changements mais la suppression ne se fait toujours pas et pas de message d’erreur.
      0
      1. Contributeur Ambassadeur
        peux-tu partager ton fichier?
        0
    2. Bonjour
      Teste comme ceci
      Private Sub CommandButton7_Click()
      Set sh1 = Sheets("planning")
        For i = 3 To sh1.Cells(Rows.Count, "I").End(xlUp).Row
          If sh1.Range("I" & i).Text = TextBox4.Value Then
            If sh1.Range("B" & i).Text <> TextBox21.Value Then
              sh1.Range("I" & i).Value = ""
              sh1.Range("I" & i).Offset(0, 1).Value = ""
              sh1.Range("I" & i).Offset(0, -1).Value = ""
            End If
          End If
        Next i
      MsgBox ("Fichier actualisé")
      End Sub
      0
      1. Merci M-12, c’est exactement ça ce qu’il fallait faire.
        Ça fonctionne maintenant.
        Merci à vous tous.
        0
      2. Contributeur Ambassadeur
        @Wakafapeux-tu alors marquer la discussion comme résolue?
        0
    3. Modérateur
      Bonjour,

      Merci de :
      > préciser ce qui est saisi dans les 2 textbox (numérique, texte, date, etc...)
      > préciser ce que contiennent les colonnes I et B

      Essayer également d'indiquer la propriété des cellules à scruter :
      If sh1.Range("I" & i).Value = TextBox4.Value And sh1.Range("I" & i).Offset(0, -7).Value <> TextBox21.Value Then

      0