Vider cellule sous condition [Résolu]

Signaler
-
Messages postés
13948
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 janvier 2021
-
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

Messages postés
13948
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 janvier 2021
785
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)
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.
Messages postés
13948
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 janvier 2021
785
peux-tu partager ton fichier?
Messages postés
979
Date d'inscription
lundi 22 septembre 2008
Statut
Membre
Dernière intervention
10 janvier 2021
199
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
Merci M-12, c’est exactement ça ce qu’il fallait faire.
Ça fonctionne maintenant.
Merci à vous tous.
Messages postés
13948
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
19 janvier 2021
785 > Wakafa
peux-tu alors marquer la discussion comme résolue?
Messages postés
12235
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
6 janvier 2021
2 555
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