Suppression de lignes d'après les checkbox d'un userform

Oldevi

XLDnaute Nouveau
Bonjour à tous,

J'ai fait un formulaire dans lequel l'utilisateur coche une ou plusieurs case correspondant à des colonnes; j'aimerais pouvoir supprimer la ligne si toutes les cellules correspondant aux cases cochés sont vides. J'espère être clair. Voici le code que j'ai tenté:

Dim i As Integer
For i = 300 To 10 Step -1

If CheckBox1 = True Then If Not IsEmpty(Cells(i, 13).Value) Then Next i
Else: If CheckBox2 = True Then If Not IsEmpty(Cells(i, 14).Value) Then Next i
Else: If CheckBox3 = True Then If Not IsEmpty(Cells(i, 14).Value) Then Next i
Else: If CheckBox4 = True Then If Not IsEmpty(Cells(i, 15).Value) Then Next i
Else: Row(i).Delete

Unload Me

End Sub


Je pense que mon problème vient du Next i qui n'est pas correct.
Je voudrais que le programme passe à la ligne suivante si la première condition est remplie, sinon qu'il vérifie la deuxième condition et ainsi de suite. Si aucune condition n'est remplie, il supprime la ligne.

Merci d'avance pour votre aide.
 

Paritec

XLDnaute Barbatruc
Re : Suppression de lignes d'après les checkbox d'un userform

Bonjour oldevi et bienvenu
tu pourrais peut être nous mettre un petit fichier car franchement c'est sur que cela ne peut pas marcher, mais il y a déjà une grosse bêtise je pense c'est que si tu cliques sur tes 4 checkbox cela reviendra à supprimer toutes tes lignes remplies??????
A mon avis ce n'est pas cela que tu souhaites enfin expliques et mets un fichier STP avec les explications dedans
a+
Papou:)
 

Bebere

XLDnaute Barbatruc
Re : Suppression de lignes d'après les checkbox d'un userform

bonjour Oldevi
avec un fichier c'est mieux,code pas testé

Dim i As Integer

For i = 300 To 10 Step -1
If CheckBox1 = True And IsEmpty(Cells(i, 13).Value) Then Row(i).Delete
If CheckBox2 = True And IsEmpty(Cells(i, 14).Value) Then Row(i).Delete
If CheckBox3 = True And IsEmpty(Cells(i, 14).Value) Then Row(i).Delete
If CheckBox4 = True And IsEmpty(Cells(i, 15).Value) Then Row(i).Delete
Next i

Unload Me

End Sub

à bientôt
 

Oldevi

XLDnaute Nouveau
Re : Suppression de lignes d'après les checkbox d'un userform

Merci beaucoup à tous les deux pour vos réponses et votre rapidité.

Je ne peux pas transferer de fichiers xl. Ce sont des fichiers pros avec des macros intégrés meme pour les fichiers vierges.

Merci pour ta proposition Bebere. Je vais essayer de préciser. Je voudrais que le programme supprime la ligne uniquement si aucune des conditions n'est remplie (uniquement si toutes les cellules correspondantes aux cases cochés sont vides). Ton code va supprimer la ligne si au moins une des cellules est vide, me trompé-je ?

Pourrais-je éventuellement utiliser "or" ou "and" avec plus de deux variables ?

Merci encore.

Oldevi
 

Bebere

XLDnaute Barbatruc
Re : Suppression de lignes d'après les checkbox d'un userform

bonjour Oldevi,Paritec
il y a 2 fois Cells(i, 14)
içi si les 4 checkbox =true et les 4 cellules="",supprime la ligne

Dim i As Integer

For i = 300 To 10 Step -1
If CheckBox1 And CheckBox2 And CheckBox3 And CheckBox4 Then
If IsEmpty(Cells(i, 13).Value) And IsEmpty(Cells(i, 14).Value) And IsEmpty(Cells(i, 14).Value) And IsEmpty(Cells(i, 15).Value) Then
Row(i).Delete
End If
End If
Next i
à bientôt
 

Oldevi

XLDnaute Nouveau
Re : Suppression de lignes d'après les checkbox d'un userform

Re-Bonjour,
Pour encore préciser, voila comment je pensais coder au début:

Si Checkbox1 est coché et que la cellule correspondante est remplie alors on passe à la ligne suivante.
Sinon Si Checkbox2 est coché et que la cellule correspondante est remplie alors on passe à la ligne suivante.
Et ainsi de suite pour toutes les Checkbox.
Si aucune des conditions n'est remplie alors on supprime la ligne.

Pour résumer, je ne veux conserver que les lignes avec au moins une des conditions.
 

Oldevi

XLDnaute Nouveau
Re : Suppression de lignes d'après les checkbox d'un userform

Bonjour Bebere, Paritec

Merci pour ta réponse. Ton code va je pense supprimer la ligne uniquement si toutes les cases sont cochés et toutes les lignes sont vides.

Ce que je voudrais c'est: Si pour au moins une des cases cochés, la cellule n'est pas vide alors on conserve la ligne.
 

Oldevi

XLDnaute Nouveau
Re : Suppression de lignes d'après les checkbox d'un userform

Bonjour,

J'ai essayé le code suivant qui ne me renvoie pas d'erreur, supprime pas mal de lignes mais pas toutes...une idée pour l'améliorer ?
Merci d'avance.

Dim i As Integer

For i = 300 To 9 Step -1

If Check1 = True And Not IsEmpty(Cells(i, 13).Value) Then
i = i - 1
ElseIf Check2 = True And Not IsEmpty(Cells(i, 14).Value) Then
i = i - 1
ElseIf Check3 = True And Not IsEmpty(Cells(i, 15).Value) Then
i = i - 1
ElseIf Check4 = True And Not IsEmpty(Cells(i, 16).Value) Then
i = i - 1
ElseIf Check5 = True And Not IsEmpty(Cells(i, 17).Value) Then
i = i - 1
ElseIf Check6 = True And Not IsEmpty(Cells(i, 18).Value) Then
i = i - 1
ElseIf Check7 = True And Not IsEmpty(Cells(i, 19).Value) Then
i = i - 1
ElseIf Check8 = True And Not IsEmpty(Cells(i, 20).Value) Then
i = i - 1
ElseIf Check9 = True And Not IsEmpty(Cells(i, 21).Value) Then
i = i - 1
ElseIf Check10 = True And Not IsEmpty(Cells(i, 22).Value) Then
i = i - 1
Else: Rows(i).Delete


End If

Next i
 

Bebere

XLDnaute Barbatruc
Re : Suppression de lignes d'après les checkbox d'un userform

Oldevi la prochaine fois met un bout de fichier
je suis sûr que ton problème serait déjà résolu
si la checkbox=true et la cellule est vide supprime la ligne
essaye ce code
For i = 300 To 9 Step -1
t = False
If CheckBox1 = True And IsEmpty(Cells(i, 13).Value) Then
t = True
ElseIf CheckBox2 = True And IsEmpty(Cells(i, 14).Value) Then
t = True
ElseIf CheckBox3 = True And IsEmpty(Cells(i, 15).Value) Then
t = True
ElseIf CheckBox4 = True And IsEmpty(Cells(i, 16).Value) Then
t = True
ElseIf CheckBox5 = True And IsEmpty(Cells(i, 17).Value) Then
t = True
ElseIf checkbox6 = True And IsEmpty(Cells(i, 18).Value) Then
t = True
ElseIf checkbox7 = True And IsEmpty(Cells(i, 19).Value) Then
t = True
ElseIf checkbox8 = True And IsEmpty(Cells(i, 20).Value) Then
t = True
ElseIf checkbox9 = True And IsEmpty(Cells(i, 21).Value) Then
t = True
ElseIf checkbox10 = True And IsEmpty(Cells(i, 22).Value) Then
t = True
End If
If t Then Rows(i).Delete: t = False
Next i

End Sub

à bientôt
 

Oldevi

XLDnaute Nouveau
Re : Suppression de lignes d'après les checkbox d'un userform

Ca marche enfin ! J'ai remplacé les "and" par des "then if". Je ne comprends pas vraiment ce que ca change dans ce cas précis. Si vous avez une explication, je suis preneur. Merci beaucoup Bebere pour ta disponibilité et ta patience.

A bientot.


Voici le code gagnant :


For i = 100 To 9 Step -1


t = False
If Check1 = True Then
If IsEmpty(Cells(i, 13).Value) Then t = True
ElseIf Check2 = True Then If IsEmpty(Cells(i, 14).Value) Then t = True
ElseIf Check3 = True Then If IsEmpty(Cells(i, 15).Value) Then t = True
ElseIf Check4 = True Then If IsEmpty(Cells(i, 16).Value) Then t = True
ElseIf Check5 = True Then If IsEmpty(Cells(i, 17).Value) Then t = True
ElseIf Check6 = True Then If IsEmpty(Cells(i, 18).Value) Then t = True
ElseIf Check7 = True Then If IsEmpty(Cells(i, 19).Value) Then t = True
ElseIf Check8 = Then If IsEmpty(Cells(i, 20).Value) Then t = True
ElseIf Check9 = True Then If IsEmpty(Cells(i, 21).Value) Then t = True
ElseIf Check10 = True Then If IsEmpty(Cells(i, 22).Value) Then t = True

End If

If t Then Rows(i).Delete: t = False

Next i
 

Discussions similaires

Statistiques des forums

Discussions
312 841
Messages
2 092 709
Membres
105 515
dernier inscrit
zourino