IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

problème pour supprimer des lignes [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    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 : 28
    Points
    28
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre émérite Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 392
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : Belgique

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

    Informations forums :
    Inscription : Août 2007
    Messages : 2 392
    Points : 2 985
    Points
    2 985
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
     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

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    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 : 28
    Points
    28
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Code VBA pour supprimer des lignes sous condition - problème
    Par PeaceMaker dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/06/2011, 09h09
  2. problème pour supprimer des lignes d'un fichier
    Par NicoO_O dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 17/01/2008, 07h23
  3. sed et boucle pour pour supprimer des lignes
    Par edouardj dans le forum Linux
    Réponses: 15
    Dernier message: 09/11/2007, 12h39
  4. [VBA-E] Problème pour insérer des lignes dans une feuille Excel
    Par skystef dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/04/2007, 14h13
  5. Shell pour supprimer des lignes d'un fichier
    Par nelsa dans le forum Autres langages
    Réponses: 2
    Dernier message: 20/09/2004, 12h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo