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 commençant par un mot précis.


Sujet :

Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 55
    Points : 37
    Points
    37
    Par défaut supprimer des lignes commençant par un mot précis.
    Bonjour à tous!

    Je cherche une macro me permettant de supprimer des lignes si dans la colonne B on retrouve un texte commençant par "total ....".

    Pour l'instant j'ai ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim a As Long
    For a = Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
        If Cells(a, "B").Value = "Total Travaux préparatoires HT :" Then Cells(a, 1).EntireRow.Delete
    Next a
    Je voudrais juste qu'il retrouve toutes les cases commençant par total.

    Merci d'avance

  2. #2
    Membre chevronné Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Points : 2 003
    Points
    2 003
    Par défaut
    Bjr, bedoch,
    voici une solution qui parcours dans la Feuil1 toutes les cellules de la colonne B jusqu'a la dernière cellule utilisée de la colonne et qui recherche si le premier mot de la cellule est "total" (En minuscule) et supprime toute la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub recherche()
    Dim plage As Range, c As Range
    Sheets("Feuil1").Activate
    'Plage de recherche ici B1 à Derniere cellule utilisée de colonne B
    Set plage = Range("B1" & ":B" & Range("B65000").End(xlUp).Row)
     
    'Pour chaque cellule de la plage de recherche 
    For Each c In plage
    'je met dans une variable les 5 premiers caractères de la cellule
    vval = Left(c.Value, 5)
    'Si vval = total alors j'efface la ligne entiere
    If vval = "total" Then c.EntireRow.Delete
    Next c
    End Sub
    Si c ok n'oublie pas de mettre Résolu.
    @+
    @+

    Si vous avez trouvé la solution à votre problème n'oubliez pas d'appuyer sur
    Et n'oubliez pas de voter en appuyant sur si ce message a repondu à vos attentes.
    Ou sur si ce n'est pas le cas

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 681
    Points : 633
    Points
    633
    Par défaut
    Bonjour,
    Je te propose une autre solution sans VBA.
    Tu ajoutes à ton tableau une colonne que tu nommes "Ordre". Tu rentres 1 dans la première cellule et 2 dans la seconde puis tu tires ces 2 cellules jusqu'en bas de ton tableau.
    Ensuite tu tries toutes tes lignes sur la colonne B. Tu sélectionnes toutes les lignes qui commencent par "total" dans ta colonne B et tu les supprimes.
    Un dernier tri sur ta colonne "Ordre" pour remettre tes données en place et tu supprimes ta colonne "Ordre".

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Août 2010
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Salut à tous,

    La solution proposée par rvtoulon est proche d’être la bonne mais une limite s’y incruste.
    Elle ne fonctionne pas si deux lignes successives sont à supprimer. En effet la macro dit « quand tu as testé la cellule B1, va voir la cellule B2 » . Mais si la ligne 1 a été supprimée, l’ancienne cligne 2 deviendra colonne 1 et ne sera donc pas testée.
    Comment pallier à ce problème ?

    Merci de votre aide.

    Cdt,

    Riton

  5. #5
    Membre éclairé

    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    791
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 791
    Points : 688
    Points
    688
    Par défaut
    prend une boucle qui remonte de la derniere vers la premiere ligne.

    Comme ca, si on teste la ligne 5 par exemple et qu'elle est a effacer, quand on la vire, la ligne 6 devient la ligne 5 mais on s'en fiche parce qu'on a déja testé la ligne 6 et que la prochaine ligne qui va devoir tester sera la ligne 4, qui, elle, n'a pas bougé

Discussions similaires

  1. Réponses: 5
    Dernier message: 30/06/2011, 21h15
  2. regex pour supprimer une ligne commençant par une lettre
    Par stpaul04 dans le forum Débuter avec Java
    Réponses: 11
    Dernier message: 03/02/2011, 22h04
  3. Supprimer des tables commençant par.
    Par lito74 dans le forum VBA Access
    Réponses: 2
    Dernier message: 28/02/2009, 16h36
  4. Réponses: 3
    Dernier message: 25/05/2007, 10h10
  5. Réponses: 2
    Dernier message: 22/05/2007, 10h25

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