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 :

Recherche et suppression ligne avec condition [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mai 2011
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 4
    Points : 1
    Points
    1
    Par défaut Recherche et suppression ligne avec condition
    Bonjour à tous,

    Je viens vers vous car je n'y connais absolument rien en VBA et j'ai besoin d'un programme simple pour résoudre mon problème.

    J'ai une feuille Excel avec une colonne "Identifiant" qui contient 24 lignes (de A à Z).
    J'ai une seconde feuille dans laquelle se trouve une autre colonne identifiant mais qui ne contient seulement que les voyelles "A E I O U".

    Je souhaite retrouver les lignes voyelles de la feuille 1, à partir de la feuille 2, et supprimer les lignes entières.

    Si une bonne âme passait par là, j'accepterai avec plaisir son aide!

    Merci à vous

  2. #2
    Membre régulier
    Homme Profil pro
    Chargé d'Etudes Statistiques
    Inscrit en
    Novembre 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'Etudes Statistiques
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2010
    Messages : 79
    Points : 98
    Points
    98
    Par défaut
    Je ne comprends pas le "à partir de la feuille 2"... Ne suffit-il pas de repérer dans ta feuille 1 les cellules contenant les voyelles et supprimer les lignes correspondantes à ces cellules.

    en vba:
    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
     
    sub supprimer_voyelles()
     
    dim cel as range
     
    for each cel in worksheets("nom de la feuille 1").range("A1:A26")
     
    if cel.value="A" or cel.value="E" or cel.value="I" or cel.value="O" or cel.value="U" then
     
    cel.entirow.delete
     
    end if
     
    next cel
     
    end sub

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Mai 2011
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Merci pour ta réponse.

    En fait, sur la feuille2, j'ai des lignes dont les identifiants correspondent à certaines de la feuille1.
    Seulement, j'ai plusieurs centaines de lignes et je souhaiterai automatiser la recherche et la suppression.
    Pour chaque identifiant de la feuille2, le programme ferait une recherche parmis les identifiants de la feuille1 et, s'il trouve les mêmes, supprimerait les lignes correspondantes (toujours dans la feuille1).

  4. #4
    Membre régulier
    Homme Profil pro
    Chargé d'Etudes Statistiques
    Inscrit en
    Novembre 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'Etudes Statistiques
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2010
    Messages : 79
    Points : 98
    Points
    98
    Par défaut
    il faut que tu mentionnes toi-même les plages de cellules concernées (exemple: "A1:A100")

    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
     
     
    sub supprime_voyelles()
     
    dim cel1 as range
    dim cel2 as range
    dim range1 as range
    dim range2 as range
     
    set range1=worksheets("nom de la feuille 1").range("plage indentifiant")
    set range2=worksheets("nom de la feuille2").range("plage identifiant")
     
    for each cel2 in range2
     
    for each cel1 in range1
     
    if cel1.value=cel2.value then
     
    cel2.entirerow.delete
     
    end if
     
    next cel1
     
    next cel2
     
    end sub

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Mai 2011
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    Apparemment il y a une erreur sur la ligne "If cel1.Value = cel2.Value Then" qui est surlignée en jaune.

    L'erreur : Erreur d'execution 424. Objet requis.

    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
    Sub supprime_voyelles()
     
    Dim cel1 As Range
    Dim cel2 As Range
    Dim range1 As Range
    Dim range2 As Range
     
    Set range1 = Worksheets("Feuille1").Range("A2:A25")
    Set range2 = Worksheets("Feuille2").Range("A2:A6")
     
    For Each cel2 In range2
     
    For Each cel1 In range1
     
    If cel1.Value = cel2.Value Then
     
    cel2.EntireRow.Delete
     
    End If
     
    Next cel1
     
    Next cel2
     
    End Sub

  6. #6
    Membre régulier
    Homme Profil pro
    Chargé d'Etudes Statistiques
    Inscrit en
    Novembre 2010
    Messages
    79
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chargé d'Etudes Statistiques
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2010
    Messages : 79
    Points : 98
    Points
    98
    Par défaut
    Au temps pour moi, mauvaise méthode: en voici une autre (testée, ça marche), pense à rechanger les noms de feuilles et de cellules.

    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
     
    Option Explicit
     
    Sub supprime_voyelles()
     
    Dim cel1 As Range
    Dim cel2 As Range
     
    Dim range1 As Range
    Dim range2 As Range
     
    Set range1 = Worksheets("Feuil1").Range("A2:A25")
     
    Set range2 = Worksheets("Feuil2").Range("A2:A6")
     
    For Each cel2 In range2
     
        For Each cel1 In range1
     
            If cel2.Value = cel1.Value Then
     
                cel1.ClearContents 'on supprime le contenu des cellules contenant une voyelle
     
            End If
     
        Next cel1
     
    Next cel2
     
    range1.SpecialCells(xlCellTypeBlanks).Delete shift:=xlUp 'on supprime les cellules vides 
     
    End Sub

  7. #7
    Nouveau Candidat au Club
    Inscrit en
    Mai 2011
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Mai 2011
    Messages : 4
    Points : 1
    Points
    1
    Par défaut
    En changeant par pour supprimer les lignes, ça fonctionne parfaitement.

    Merci de ton aide !

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

Discussions similaires

  1. [XL-2003] Macro suppression ligne avec condition
    Par jenifer699 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 21/08/2012, 12h43
  2. [XL-2003] Macro suppression ligne avec condition 3 mots
    Par jenifer699 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/08/2012, 17h45
  3. [AC-2000] Suppression ligne avec conditions sur deux tables
    Par Loufink dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 09/07/2009, 11h38
  4. Suppression des lignes avec condition
    Par tientinou dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/03/2009, 12h35
  5. Affichage ligne avec condition dans /etc/passwd
    Par mzt.insat dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 17/04/2006, 21h25

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