Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 21/09/2011, 12h46   #1
Invité régulier
 
Femme
Étudiant
Inscription : août 2011
Messages : 63
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : août 2011
Messages : 63
Points : 6
Points : 6
Par défaut problème pour supprimer des lignes

Bonjour à vous,

voilà j'ai un problème avec une macro que j'essaie de créer. En fait j'ai crée un userform avec une textbox. Ce que je cherche à faire c'est un tri qui me permet de venir garder les valeurs que j'ai dans un tableau à partir du moment où elles sont égales à la valeur de la textbox.
J'ai donc crée un code qui est censé supprimer toutes les lignes qui ne sont pas égales à cette valeur. Le problème c'est que çà ne fonctionne pas bien et qu'a chaque fois que je lance un tri il ne supprime pas toutes les lignes. Si je fais l'opération trois quatre fois de suite je parviens au résultat mais je veux pouvoir l'obtenir en une seule étape.
Je ne vois pas l'erreur que j'ai commise. Je vous met le code que j'ai en espérant que vous puissiez m'aider.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Private Sub CommandButton11_Click()
 
Dim iL As Long
Dim T As Worksheet
 
Set T = Worksheets("searching results")
 
If TextBox7.Value <> "" Then
 
         For iL = 2 To 70
 
            If T.Cells(iL, "j").Value <> Val(TextBox7.Text) Then
 
            Rows(iL).Delete
            iL = iL
 
            Else: iL = iL + 1
 
            End If
 
         Next iL
Je pense que cela vient d'un problème d'incrémentation mais lequel...

merci
JulienLeno est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 12h55   #2
Expert Confirmé
 
Avatar de Godzestla
 
Homme
Chercheur de bonheur
Inscription : août 2007
Messages : 2 255
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de bonheur
Secteur : Industrie

Informations forums :
Inscription : août 2007
Messages : 2 255
Points : 2 979
Points : 2 979
Bonjour,

je n'ai fait que survoler mais je vois au moins 3 soucis :

1) Pour supprimer des lignes il faut boucler sur les lignes depuis la dernière jusqu'à la premiere, iL = 70 To 2 step - 1 et pas dans le sens iL = 2 To 70 car si tu supprimes une ligne il n'en reste pas nécessairement 70 et cela peut très vite planter.

2) Dans ce code "j" c'est quoi. Tu es certain que ca fonctionne car c'est un string?
Code :
 If T.Cells(iL, "j").Value <> Val(TextBox7.Text) Then
ce n'est pas plutot j sans les " mais quelle est sa valeur

3) Cette ligne est inutile
__________________
(\ _ /) Cordialement G@dz
(='.'=)

(")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.
Godzestla est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 13h43   #3
Invité régulier
 
Femme
Étudiant
Inscription : août 2011
Messages : 63
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Étudiant
Secteur : Industrie

Informations forums :
Inscription : août 2011
Messages : 63
Points : 6
Points : 6
Merci de ta réponse godztella. effectivement je m'en suis rendu compte et ton commentaire n'a fait que confirmer ce que je pensais il faut boucler en partant de la dernière ligne c'est ce qui me posait probléme. Le "j" est le numéro de colonne donc ceci ne pose pas de soucis. J'ai réalisé ce code qui fonctionne parfaitement bien.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Private Sub CommandButton11_Click()
 
Dim iL As Long
Dim T As Worksheet
Dim LastLig As Long
Set T = Worksheets("searching results")
 
With T
 
LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
 
 If TextBox7.Value <> "" Then
     For iL = LastLig To 2 Step -1
 
        If T.Cells(iL, "j").Value <> Val(TextBox7.Text) Or T.Cells(iL, "j").Value = "" Then Rows(iL).Delete
 
 
     Next iL
 
End with
Merci
JulienLeno est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h02.


 
 
 
 
Partenaires

Hébergement Web