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 :

VBA: Supprimer ligne commençant par un caractère donné


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 62
    Points : 49
    Points
    49
    Par défaut VBA: Supprimer ligne commençant par un caractère donné
    Bonjour à tous,

    Voilà mon soucis. J'ai un fichier excel avec plus de 33000 lignes mais uniquement sur la colonne A. je voudrais simplement supprimer les lignes commançant par le caractère [

    J'ai essayer des choses du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     Sub test()
    Dim cell As Range
    For Each cell In ActiveSheet.UsedRange
    If cell.Value = "[" Then cell.EntireRow.Delete
    Next
    End Sub
    sans résultat. merci de votre aide.

  2. #2
    Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    78
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 78
    Points : 65
    Points
    65
    Par défaut
    Ton code ne fonctionne que si la cellule ne contien QUE le caractère [

    Si tu veux éliminer toutes les lignes dont le contenu de la première cellule commence par [ (et pourrait donc par exmple être "[Salut"), il te faut utliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
        Dim cell As Range
     
        For Each cell In ActiveSheet.UsedRange
            If Left$(cell.Value,1) = "[" Then cell.EntireRow.Delete
        Next
    End Sub

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    bonjour,

    ou encore, pour rigoler :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Chr(Asc(cell.Value)) = "[" Then cell.EntireRow.Delete
    ou plus court encore :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     If Asc(cell.Value) = 91 Then Then cell.EntireRow.Delete

  4. #4
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 62
    Points : 49
    Points
    49
    Par défaut
    Ok par contre j'ai l'impression que ce code test toutes les cellules du fichier alors que je voudrait le faire juste sur la colonne A.

    EN plus je n'ai pas d'erreur mais les lignes ne s'efface pas...

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Et instr ? C'est pas bien instr ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub test()
    Dim DerLigne As Integer, PremiereLigne As Long, NoCol As Integer, NoLig As Long
        PremiereLigne = 1 'à adapter
        NoCol = 1 ' à adapter
        DerLigne = Range("A65536").End(xlUp).Row
        For NoLig = DerLigne To PremiereLigne Step -1
            If InStr(1, Cells(NoLig, NoCol), "[") = 1 Then Rows(NoLig).EntireRow.Delete
        Next
    End Sub

  6. #6
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 62
    Points : 49
    Points
    49
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim DerLigne As Integer, PremiereLigne As Long, NoCol As Integer, NoLig As Long
        PremiereLigne = 1 'à adapter
        NoCol = 25254 ' à adapter
        DerLigne = Range("A65536").End(xlUp).Row
        For NoLig = DerLigne To PremiereLigne Step -1
            If InStr(1, Cells(NoLig, NoCol), "[") = 1 Then Rows(NoLig).EntireRow.Delete
        Next
    End Sub
    Erreur "erreur définie par l'application ou par l'objet" sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    f InStr(1, Cells(NoLig, NoCol), "[") = 1 Then Rows(NoLig).EntireRow.Delete
    Mais je sens que vous brûler

  7. #7
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Et Like, c'est pas bien non plus ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test()
    Dim Plage As Range, cell As Range
    Dim DerLigne As Integer, PremiereLigne As Long, NoCol As Integer, NoLig As Long
        PremiereLigne = 1 'à adapter
        NoCol = 1 ' à adapter
        DerLigne = Range("A65536").End(xlUp).Row
        For NoLig = DerLigne To PremiereLigne Step -1
            If Cells(NoLig, NoCol).Formula Like "[[]*" Then Rows(NoLig).EntireRow.Delete
        Next
    End Sub

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 61
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par myrddin772 Voir le message
    Ton code ne fonctionne que si la cellule ne contien QUE le caractère [

    Si tu veux éliminer toutes les lignes dont le contenu de la première cellule commence par [ (et pourrait donc par exmple être "[Salut"), il te faut utliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
        Dim cell As Range
     
        For Each cell In ActiveSheet.UsedRange
            If Left$(cell.Value,1) = "[" Then cell.EntireRow.Delete
        Next
    End Sub

    Ton code passe dans toutes les cellules par ce que tu lui dis de faire le test dans "Used" range.

    Comme ceci, il ne testera que les cellules de la colonne A

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub test()
        Dim cell As Range
     
    Set DataRange = Activesheet.Range("A:A")
     
        For Each cell In DataRange
     
            If Left$(cell.Value,1) = "[" Then cell.EntireRow.Delete
        Next
    End Sub
    [/QUOTE]



  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Citation Envoyé par urbanspike Voir le message
    Erreur "erreur définie par l'application ou par l'objet" sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    f InStr(1, Cells(NoLig, NoCol), "[") = 1 Then Rows(NoLig).EntireRow.Delete
    Si tu enlève le if à If, tu as effectivement une erreur
    Et ce sera pareil avec Like...

  10. #10
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 62
    Points : 49
    Points
    49
    Par défaut
    Meme erreur avec Like,

    A lala, je vois que ça se complique lol.
    Mille merci en tous cas pour toutes les propositions...

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Alors tu as un autre problème car j'ai testé mes deux codes sur la version 2003 et 1997 (au cas où) et les deux fonctionnent très bien chez moi.
    Vérifie tes références dans l'éditeur VBA et précise la version que tu utilises

  12. #12
    Membre du Club
    Inscrit en
    Novembre 2004
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 62
    Points : 49
    Points
    49
    Par défaut
    Et le gagnant est Capsule pour son code qui marche super bien...

    Merci à tous.

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 61
    Points : 40
    Points
    40
    Par défaut
    Citation Envoyé par urbanspike Voir le message
    Et le gagnant est Capsule pour son code qui marche super bien...

    Merci à tous.
    La gagnante.....;





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

Discussions similaires

  1. [XL-2010] VBA: Supprimer ligne commençant par un caractère donné
    Par arves dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/01/2014, 10h07
  2. Réponses: 30
    Dernier message: 17/11/2012, 16h42
  3. Réponses: 5
    Dernier message: 30/06/2011, 21h15
  4. 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
  5. [XL-2007] supprimer des lignes commençant par un mot précis.
    Par bedoch dans le forum Excel
    Réponses: 4
    Dernier message: 03/08/2010, 10h59

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