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 :

suprimer une ligne si


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 32
    Par défaut suprimer une ligne si
    Hello,

    Pour mon travail je dois importer une liste d'actions. Ces titres ont une sorte de plaque minéralogique unique qui permet de les retrouver directement d'après ce code qui commence invariablement par au moins deux lettres.

    Malheureusement, il n'y a pas que des titres et il peut avoir des monnaies ou des options dans mon tableur qui ne contiennent pas de lettres au début... et je n'en ai pas besoin et elle me gène dans mon tableur. pour l'instant j'ai deux trois ligne de code qui supprime les lignes par d'autres moyens

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For n = Range("A65536").End(xlUp).Row To 1 Step -1
          If InStr(Range("A" & n), "EUR") <> 0 Then Rows(n).Delete
          If InStr(Range("A" & n), "USD") <> 0 Then Rows(n).Delete
          If InStr(Range("A" & n), "GBP") <> 0 Then Rows(n).Delete
        Next n
    Je sais pas s'il est possible de supprimer la ligne si la cellule A si elle ne commence pas par deux lettres.

    a+

    Lord Sinclair

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,
    pour eviter les potentielles erreurs, je recommande plutot une syntaxe comme suis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For n = Range("A65536").End(xlUp).Row To 1 Step -1
          If InStr(Range("A" & n), "EUR") + InStr(Range("A" & n), "USD") + InStr(Range("A" & n), "GBP") > 0 Then Rows(n).Delete
        Next n
    Par 2 lettres, tu entends 2 lettres par opposition a 2 chiffres ou 1 lettre+1 chiffre < Cas des espaces en debut de valeurs ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 32
    Par défaut
    Salut et merci pour ta réponse

    En effet, il s'agit de deux lettres par oposition à deux chiffres.
    Par contre je ne comprends pas ce que tu entends par les espaces en début de valeur. A priori il y en aura jamais.

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Par défaut
    salut

    ajoute alors cette condition de suppression, en plus de la première :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     If trim(Range("A" & n)) like "#*"

  5. #5
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 32
    Par défaut
    Excellent merci!!
    maintenant je m'aperçois que cela crée un problème dans les premières lignes du tableur qui on du code qui doit impérativement rester.
    En d'autres termes, au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For n = Range("A65536").End(xlUp).Row To 1 Step -1
    il faudrait que ça s'arrète à la ligne 8
    possible?

  6. #6
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 86
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Par défaut
    Bonjour,

    Peut-être arrêter le For n à 8

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For n = Range("A65536").End(xlUp).Row To 8 Step -1

  7. #7
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 32
    Par défaut
    Bonjour à tous et bon début de semaine

    J'ai ajouté comme critère que si la cellule a est vide la ligne doit être supprimée. ça marche très bien sauf pour la dernière ligne de donnée. J'avoue que je sèche un peu...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    For x = Range("a65536").End(xlUp).Row To 8 Step -1
        If Range("a" & x).Value = 0 Then
        Rows(x).Delete
        End If
        Next

  8. #8
    Membre averti
    Inscrit en
    Octobre 2009
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 32
    Par défaut suprimer un ligne si.. (encore et toujours..)
    Bonjour,

    je voudrais réussir à supprimer les lignes d'une sélection particulière mais je n'arrive pas.

    voivi mon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ActiveCell.SpecialCells(xlLastCell).Select
        Range(Selection, Cells(1)).Select
        For Each Rw1 In Selection.Rows
        Ligne = Rw1.Row
        With Cells(, 1)
        If IsEmpty(.Value) Then .EntireRow.Delete
        If Range("a" & Ligne).Value = 0 Then Rows(Ligne).Delete
        If InStr(Range("A" & Ligne), "EUR") + InStr(Range("A" & Ligne), "USD") + InStr(Range("A" & Ligne), "GBP") + InStr(Range("A" & Ligne), "ISIN") > 0 Then Rows(Ligne).Delete
        If Trim(Range("A" & Ligne)) Like "#*" Then Rows(Ligne).Delete
        End With
        Next
    les lignes doivent être supprimées si la cellule A contient:
    rien (est vide)
    EUR GBP USD ISIN
    ne commence pas par deux lettres

  9. #9
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Par défaut
    salut

    je ne crois pas que l'ouverture de plusieurs discussions pour traiter le même sujet soit adroit !

    quoi qu'il en soit, tu peux traiter ton problème ainsi (exemple) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim atraiter As Range, c As Range, ajeter As Range
      Set atraiter = Range("A1:A100") '<<<<<===== définis ici ton Range à toi, hein ...
      For Each c In atraiter
      If InStr(c, "EUR") + InStr(c, "USD") + InStr(c, "GBP") + InStr(c, "ISIN") > 0 Or _
         Trim(c) Like "#*" Or IsEmpty(c) Or c = "" Then
         If ajeter Is Nothing Then Set ajeter = c Else Set ajeter = Union(ajeter, c)
      End If
      Next
      If Not ajeter Is Nothing Then
        ajeter.EntireRow.Delete
        Set ajeter = Nothing
      End If

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/04/2013, 23h56
  2. suprimer une ligne d'un tableau sous access
    Par andy331 dans le forum Requêtes et SQL.
    Réponses: 17
    Dernier message: 20/01/2010, 12h08
  3. suprimer une ligne identique sur deux tableaux
    Par bosk1000 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 02/03/2009, 09h22
  4. comment suprimer une ligne
    Par stuffy dans le forum Général Python
    Réponses: 7
    Dernier message: 28/06/2008, 15h39
  5. Réponses: 4
    Dernier message: 19/05/2006, 10h10

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