Vider cellule sous condition

Résolu
wakafa -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    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
  2. Wakafa
     
    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. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      peux-tu partager ton fichier?
      0
  3. M-12 Messages postés 1349 Statut Membre 285
     
    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. Wakafa
       
      Merci M-12, c’est exactement ça ce qu’il fallait faire.
      Ça fonctionne maintenant.
      Merci à vous tous.
      0
      1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Wakafa
         
        peux-tu alors marquer la discussion comme résolue?
        0
  4. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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