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

Excel Discussion :

Supprimer des lignes en fonction d'une variable en VBA [XL-2010]


Sujet :

Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Juin 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Juin 2015
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Supprimer des lignes en fonction d'une variable en VBA
    Bonjour,

    Je rencontre un souci un delete de ligne.

    Voilà le script pour le moment :

    For i = 3 To 500
    If Range("B" & i) = "V6" Then
    i = i + 1
    Else
    Range("B" & i).Select
    Selection.Delete Shift:=xlUp
    i = i - 1
    End If
    Next i
    End Sub

    Ce que je veux faire c'est qu'à partir de la cellule B3 jusqu'à la cellule B500, si la valeur en de Bi commence par V6 alors on passe à la ligne suivante sinon on supprime la ligne et on contrôle la suivante.

    Actuellement ca me delete la colone B1 et ca boucle sans fin :s si quelqu'un pouvait m'aider

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Petit conseil : fais des itérations dans ton code pour le rendre plus lisible au niveau de la structure.

    Les Select / Selection, il vaut mieux éviter quand ce n'est pas indispensable. Ca ralentit l'exécution et ça complique inutilement le code.

    Prends l'habitude de déclarer tes variables.

    Ton i=i+1 est inutile. C'est la boucle For to qui se charge d'incrémenter ta variable. Regarde les explications de cette structure dans l'aide VBA d'Excel.

    Quand on supprime des lignes, on va du bas vers le haut. Ca évite d'avoir à faire des tours de passe-passe comme ton i=i-1.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim i as Long
    For i = 500 To 3
    	If Left(Cells(i,2).Value) <> "V6" Then Rows(i).Delete
    Next i
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Juin 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Juin 2015
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Je te remerci Menhir pour les conseils car je débute en VBA et c'est pas simple. Par contre j'ai un souci quand je lance la boucle il me donne en message d'erreur : argument non facultatif :s

  4. #4
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    J'ai oublié de dire à la boucle de compter en sens inverse avec un Step -1.
    Mais le problème vient de la fonction Left : j'ai oublié de dire combien de caractères il faut prendre.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim i as Long
    For i = 500 To 3 Step -1
    	If Left(Cells(i,2).Value,2) <> "V6" Then Rows(i).Delete
    Next i
    Mais 90% du travail ayant été fait, tu pourrais faire le débugage par toi-même, non ?
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  5. #5
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Juin 2015
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Juin 2015
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    Ok je continu à chercher merci pour ton aide

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

Discussions similaires

  1. [XL-2010] Supprimer des lignes en fonction du contenu d'une cellule
    Par Ardiden31 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/05/2015, 08h49
  2. Réponses: 3
    Dernier message: 28/10/2014, 14h15
  3. [XL-2010] supprimer des lignes en fonction de la valeur de la cellule d'une colonne
    Par psylo24 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 28/11/2012, 13h09
  4. Réponses: 3
    Dernier message: 28/06/2011, 16h07
  5. Réponses: 11
    Dernier message: 10/03/2007, 02h01

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