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 :

Suppression lignes selon colonne de 2 sheets [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre expérimenté Avatar de Vadorblanc
    Profil pro
    Inscrit en
    Février 2008
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 309
    Points : 1 482
    Points
    1 482
    Par défaut Suppression lignes selon colonne de 2 sheets
    Bonjour
    Je souhaite supprimer toutes les lignes de la sheet "Base1"colonne A différentes de la sheet "Base2" colonne A.

    Base1_________Base2
    Col A__________Col A

    A_____________C
    A_____________A
    A_____________B
    B_____________E
    C
    C
    C
    D
    E
    E
    E
    G
    G
    H
    I

    Je ne voudrais garder dans Base1 uniquement les lignes qui ont les données de Base2

    J'ai pas mal de code pour supprimer des lignes mais pas avec cette condition, car il me faut garder en Base 1 toutes les lignes même les doublons.
    Merci pour l'aide

  2. #2
    pgz
    pgz est déconnecté
    Expert éminent Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Points : 6 591
    Points
    6 591
    Par défaut
    Bonjour.

    Voici une façon de faire, pour l'idée et à adapter. Tu déclares 2 variables Excel.Range oRngA1 et oRngA2, dans lesquelles tu instancies les parties utiles de, respectivement, la colonne A de la feuille 1 et la colonne A de la feuille 2. Je pense que tu sais faire.

    ENsuite, tu déclares de variants, v1 et v2. Je suppose que dans les 2 feuilles on commence en ligne 1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    v1 = oRngA1.Value
    v2 = oRngA2.Value
    Tu déclares une variable s de type string, i de type long et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    For i = 1 to ubound(v2,1)
         s = s & "|" & v2(i,1)
    next i
    s = s & "|"
     
    For i = ubound(v1,1) to 1 step -1
         if s Not Like "|" & v1(i,1) & "|" then thisworkbook.Worksheets("Feuil1").rows(i).delete
    next i
     
    v1 = empty
    v2 = empty
    Set oRngA1 = Nothing
    Set oRngA2 = Nothing
    Cordialement,

    PGZ

  3. #3
    Membre expérimenté Avatar de Vadorblanc
    Profil pro
    Inscrit en
    Février 2008
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 309
    Points : 1 482
    Points
    1 482
    Par défaut
    Bonjour pgz
    Tout d'abord merci pour ta phrase " Je pense que tu sais faire", ta proposition me semble superbe, malheureusement j'ai du faire comme à mon habitude un code hétéroclite que je viens de terminer, il fonctionne, fera l'affaire, j'aurais souhaité une belle boucle mais je n'en suis pas là...
    Merci pour ta proposition

    Encore un code avec des Sélects et qui fonctionne sur 10 000 lignes et n'en garde que 1000...Combien de lignes de code pour un pro ?

    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Sheets("Base1").Select
     
        Range("A1").Select  'copie
        Selection.Copy
        Range("Q1").Select  'colle
        ActiveSheet.Paste
        Columns("A:A").Select 'copie col A pour buter en bas
        Application.CutCopyMode = False
        Selection.Copy
        Range("Q1").Select
        ActiveSheet.Paste
        Range("H1").Select
     
        Sheets("Macros").Select 'pour aller chercher les formules
        Range("FZ1").Select
        Application.CutCopyMode = False
        Selection.Copy
        Range("E6").Select
        Sheets("Base1").Select
        Range("Q1").Select
        ActiveSheet.Paste   'et les coller
     
        Range("Q2").Select  'enlève la protection de la formule
        Application.CutCopyMode = False
        ActiveCell.FormulaR1C1 = _
            "=IF(Base1!RC[-16]<>"""",VLOOKUP(Base1!RC[-16],Base2!R2C1:R20000C27,1,0),0)"
     
     
        Range("Q2").Select 'Sélectionne la formule pour la coller jusqu'en bas
        Selection.Copy
        'Range("Q3:Q100").Select
        Range("Q3", Range("Q3").End(xlDown)).Select
        ActiveSheet.Paste
     
        Columns("Q:Q").Select
        Selection.Copy 'pour copiage collage spécial enlève lesformules
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
            :=False, Transpose:=False
        Range("Q1").Select
     
        On Error Resume Next 'l'astuce à Mercatog pour supprimer les lignes
    Worksheets("Base1").Columns(17).SpecialCells(xlCellTypeConstants, xlErrors).EntireRow.Delete
    On Error GoTo 0
    End Sub

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

Discussions similaires

  1. Suppression lignes selon modalité
    Par Polmart dans le forum SAS Base
    Réponses: 6
    Dernier message: 01/10/2014, 15h27
  2. [XL-2003] Suppression lignes selon 1 condition
    Par Vadorblanc dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 28/01/2011, 21h18
  3. Masquer une ligne selon resultat dans une colonne
    Par amne26 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/10/2008, 23h45
  4. Réponses: 1
    Dernier message: 15/05/2008, 11h48
  5. Réponses: 11
    Dernier message: 30/10/2006, 13h51

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