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 :

Supression de lignes conditionnelle.


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 163
    Points : 72
    Points
    72
    Par défaut Supression de lignes conditionnelle.
    Bonjour à tous,
    En fait j'ai un problème sous VBA j'ai réussi à le résoudre mais c'est un peu long je voudrais savoir si vous auriez une procédure plus rapide.
    En fait j'ai sur la feuille un des données avec le critère département en colonne G. Sur une deuxieme feuille j'ai le critère département à retenir en colonne A. Ce que je souhaiterai c'est supprimer la ligne entière sur la feuille un si le département n'ést pas dans la liste des départements à retenir de la feuille 2. Merci beaucoup de votre aide et bonne journée.

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 598
    Points : 34 283
    Points
    34 283
    Par défaut
    salut arnold, peux-tu nous donner la méthode que tu utilises pour l'instant, qu'on puisse te donner des axes d'amélioration pertinents
    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 :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

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

    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 régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 163
    Points : 72
    Points
    72
    Par défaut
    Pour l'instant c'est de la bidouille.lol.

    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
    22
    23
    24
    25
    26
    27
    Worksheets("feuil1").Select
    For i = LignDepFeuil1 To LignFinFeuil1
    Cells(i, 8).FormulaR1C1 = _
            "=VLOOKUP(RC[-1],'Feuil1'!R1C1:R36C1,1,FALSE)"
    Next i
     
     
    For i = LignDepFeuil1 To LignFinFeuil1
    Cells(i, 9).FormulaR1C1 = "=ISNA(RC[-1])"
    Next i
     
    For i = LignDepFeuil1 To LignFinFeuil1
    Cells(i, 9).FormulaR1C1 = Trim(Cells(i, 9))
    Next i
     
    Range("A2:I2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Sort Key1:=Range("H1"), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
     
     
    derniereLigne = ActiveSheet.UsedRange.Rows.Count
    'Application.ScreenUpdating = False
    For r = derniereLigne To 1 Step -1
    If (Range("I" & r)) = "Vrai" Then Rows(r).Delete
    Next r
    Voilà, en fait pour le moment je fais une fonction ISNA en étape intermédiare et si v'est vrai je retire la ligne entière.

  4. #4
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 598
    Points : 34 283
    Points
    34 283
    Par défaut
    d'accord, deja tu peux fusionner tes deux premières boucles for i. Le reste m'a l'air pas trop mal, mais je ne connais pas trop la partie selection...
    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 :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

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

    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

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 163
    Points : 72
    Points
    72
    Par défaut
    Oui les 2 premières je peux les fusionner mais j'aimerai supprimer l'étape ISNA

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 163
    Points : 72
    Points
    72
    Par défaut
    Bonjour à tous.
    Personne a une idée sur ma question?
    Merci beaucoup

  7. #7
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 598
    Points : 34 283
    Points
    34 283
    Par défaut
    je pense pouvoir t'aider, mais peux-tu juste me donner le retour de la fonction isna stp ?
    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 :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

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

    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

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 163
    Points : 72
    Points
    72
    Par défaut
    Comment çà le retour de la fonction ISNA?

  9. #9
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 598
    Points : 34 283
    Points
    34 283
    Par défaut
    bon à l'arrache, comme je suppose que isna tourne:
    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
    Worksheets("feuil1").Select
    For i = LignDepFeuil1 To LignFinFeuil1
    Cells(i, 8).FormulaR1C1 = _
    "=VLOOKUP(RC[-1],'Feuil1'!R1C1:R36C1,1,FALSE)"
    Next i
     
    Range("A2:I2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Sort Key1:=Range("H1"), Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
    DataOption1:=xlSortNormal
     
     
    derniereLigne = ActiveSheet.UsedRange.Rows.Count
    'Application.ScreenUpdating = False
    For r = derniereLigne To 1 Step -1
    If (IsNa(Range("H" & r)) Then Rows(r).Delete
    Next r
    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 :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

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

    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

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    163
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 163
    Points : 72
    Points
    72
    Par défaut
    Non mais çà ne marche pas...tu donnes pas de nom de variable ou de cellule a ISNA donc je vais changer çà et je vais essayé de voir si c'est plus rapide...merci

  11. #11
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Testé avec la feuille de référence nommée Feuil2 et la feuille à traiter nommée Feuil1:
    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
    Sub SupprLignes()
      Dim wksRef As Worksheet
      Dim wksDest As Worksheet
      Dim rCel As Range
      Dim rFound As Range
      Dim i As Long
      Set wksDest = Sheets("Feuil1")
      Set wksRef = Sheets("Feuil2")
      For i = wksDest.Cells.SpecialCells(xlLastCell).Row To 1 Step -1
        Set rCel = wksDest.Cells(i, 7)
        If Not rCel.Text = "" Then
          Set rFound = wksRef.Columns(1).Find(rCel.Value)
          If rFound Is Nothing Then
            rCel.EntireRow.Delete
          End If
        End If
      Next i
    End Sub
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

Discussions similaires

  1. supression de lignes dans une matrice
    Par o°celine°o dans le forum MATLAB
    Réponses: 1
    Dernier message: 08/08/2008, 15h25
  2. supression des lignes d'un fichier texte
    Par anna1980 dans le forum Général Python
    Réponses: 3
    Dernier message: 09/06/2008, 11h34
  3. [Fichier] Supression saut ligne
    Par bakka dans le forum Langage
    Réponses: 3
    Dernier message: 14/12/2007, 10h26
  4. Suppression de lignes conditionnelle
    Par arnold95 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 12/10/2007, 16h19
  5. [FB1.5][BCB5]Supression de lignes ??
    Par Sitting Bull dans le forum Connexion aux bases de données
    Réponses: 3
    Dernier message: 19/10/2004, 14h56

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