Code de suppression qui ne marche pas...

Résolu/Fermé
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 - Modifié par Kuartz le 16/10/2015 à 14:30
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 - 16 oct. 2015 à 16:23
Bonjour,

Voici mon code :

Private Sub CommandButton1_Click()

Dim DL2 As Long

DL2 = Sheets(1).Cells(Application.Rows.Count, 1).End(xlUp).Row

For i = 2 To DL2

If Sheets(1).Range("A" & i).Value = UserForm3.TextBox_SUPP_OT.Value Then
    If Sheets(1).Range("B" & i).Value = UserForm3.TextBox_SUPP_REF.Value Then
        Sheets(1).Rows(i).Delete
        Sheets(2).Rows(i).Delete
        Sheets(3).Rows(i).Delete
    End If
End If

Next i

Unload UserForm3

End Sub


Après avoir utilisé le débogage pas à pas, j'ai vu que la valeur de A2 par exemple était "TEST" et que la valeur de B1 était "123456".

J'ai vu aussi que la valeur de UserForm3.TextBox_SUPP_OT était "TEST" et la valeur de UserForm3.TextBox_SUPP_REF était "123456".

J'appelle au secours, pourquoi ma ligne 1 n'a pas été supprimée?!

Mon fichier anonymé : https://www.cjoint.com/c/EJqmxGnlWlf

Merci d'avance.

Cordialement.
A voir également:

4 réponses

diablo13800 Messages postés 2890 Date d'inscription jeudi 2 juillet 2015 Statut Membre Dernière intervention 16 février 2024 1 854
16 oct. 2015 à 14:26
Bonjour,

Tout simplement car tu demande a ta boucle de commencer a 2.
Il va donc supprimer la Ligne 2 de chaque feuille puis la 3 , Jusqu'a la valeur de DL2.

Fais partir ta boucle de 1 et la premiere ligne sera supprimée

Tiens moi au courant si c'est ce que tu voulais.
diablo13800
0
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
Modifié par Kuartz le 16/10/2015 à 14:30
Bonjour,

Il est normal que ma boucle commence à la ligne 2 puisque les titres sont en ligne 1.

Si tu veux regarder le fichier, tu verras peut-être mieux que moi quel est le problème. Je suis dans le code depuis 7h ce matin, je me suis peut-être perdu...

A1 était un exemple, je n'aurais pas dû prendre celui-là.. je le modifie dans ma demande.
0
diablo13800 Messages postés 2890 Date d'inscription jeudi 2 juillet 2015 Statut Membre Dernière intervention 16 février 2024 1 854
16 oct. 2015 à 14:38
Oui j'aimerais bien avoir le code + le tableau afin de pouvoir voir ce que tu veux faire et comment il est fait:)

En gros tu veux juste clean les lignes dans certaines conditions exact?
0
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
16 oct. 2015 à 14:52
Pardon pour le code pour accéder au VBA, voilà le fichier :

https://www.cjoint.com/c/EJqmZQhXFvf

Je veux supprimer les lignes qui répondent à mon UserForm.

Le bouton est sur le fichier.

Cordialement.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
16 oct. 2015 à 15:23
Bonjour

1/Lorsque tu supprimes des lignes il faut remonter et non descendre car chaque fois qu'une ligne est supprimée DL2 est faux
donc
for i=DL2 to 2 step -1

2/ comme son nom l'indique un textbox renvoie du.... texte
donc
If Sheets("Voyages FOURNISSEUR").Range("B" & i).Value = (UserForm3.TextBox_SUPP_REF.Value) * 1 Then...

suggestion amicale:
tes erreurs sont des erreurs de débutant et on a tous été débutants et posé ce genre de questions
concentre toi plutôt sur tes problèmes et peut-^tre moins papillonner : je faisais comme toi au départ ce qui m'a amené dans pas mal d'impasses et de remarques acerbes :o)
0
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
Modifié par Kuartz le 16/10/2015 à 15:54
Bonjour michel_m,

Merci pour ta réponse.

1/: Effectivement, mais mon premier code utilisait le DL2 To 2 Step -1 mais cela ne marchait pas non plus.

2/: C'était ma première vérification. Mais je me suis dit que si les 2 valeurs comparées étaient du texte, alors ca ne devrait pas poser de problème.
J'ai un retour "Incompatibilité de type " en écrivant :

If Sheets("Voyages FOURNISSEUR").Range("A" & i).Value = (UserForm3.TextBox_SUPP_OT.Value) * 1 Then


Ce qui paraît logique, il ne veut pas multiplier du texte.

Pour la suggestion, tu as raison. Je vais me concentrer sur mes problèmes. Mais l'avantage d'aller se frotter au code des autres est un apprentissage plus rapide (je trouve...). Cependant si je suis vraiment capable d'aider quelqu'un, je le ferai, mais pas sur des codes encore trop flous pour moi.
0
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
Modifié par Kuartz le 16/10/2015 à 15:54
J'ai remplacé la ligne par :

If Sheets("Voyages FOURNISSEUR").Range("A" & i).Value = val((UserForm3.TextBox_SUPP_OT) Then


Mais la ligne n'est pas supprimée...
0
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
16 oct. 2015 à 15:55
J'ai maintenant retesté avec votre méthode du *1, je n'ai plus d'erreur (javais mal écrit le code) mais par contre la ligne n'est toujours pas supprimée. Vous arrivez à faire marcher le code sur mon fichier joint?
0
diablo13800 Messages postés 2890 Date d'inscription jeudi 2 juillet 2015 Statut Membre Dernière intervention 16 février 2024 1 854
16 oct. 2015 à 16:08
Avec la méthode de michel_m, Tout fonctionne correctement et cela fait exactement ce qui est souhaité comme je l'ai compris.

Il faut juste que tu mette la methode *1 Sur la refClient récupéré par ton userForm . Le texte "OT" est lui comparé normalement sans besoin de *1 :)
0
Kuartz Messages postés 850 Date d'inscription vendredi 13 février 2015 Statut Membre Dernière intervention 15 février 2019 61
16 oct. 2015 à 16:23
Exact. Problème résolu. Merci beaucoup pour votre temps.
0