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 ligne par mot clés [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2014
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Suppression ligne par mot clés
    Bonjour à tous,

    Je viens vers vous car j'ai épuisé toutes mes ressources...
    Voici mon problème:

    Je souhaite supprimer 1 ligne sur 2 feuilles différentes avec une recherche par mot clés. Vous pourrais constater en essayant le fichier joint que cela fonctionne mais que sur la feuille active... Impossible d'avoir le même résultat sur l'autre feuille !
    Je pense que c'est la première boucle FOR / NEXT qui me fait sortir du SUB mais je ne sais pas comment lui faire lire la 2ème boucle pour l'autre feuille...
    Pouvez-vous m'aider à trouver une solution ?

    Merci par avance pour votre aide.SUP1.xlsx

    NB: j'ai une erreur quand j'essaie d'attacher le fichier .xlsm, donc je vous mets le code de la macro:

    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
    Sub Macro2()
    '
    ' Macro1 Macro
    '
     
    '
    Dim Mot As String
    Dim I As Integer
    Dim k As Integer
     
        Mot = InputBox("Texte ?", "Titre")
     
            For k = 1 To 100
                With F8.Range("PREMIERE5", "DERNIERE5")
                    If Cells(k, 2) = Mot Then
                        Rows(k).Delete
                        k = 100
                    End If
                End With
            Next k
     
            For I = 1 To 100
                With F7.Range("PREMIERE4", "DERNIERE4")
                    If Cells(I, 2) = Mot Then
                        Rows(I).Delete
                        I = 100
                    End If
                End With
            Next I
     
    End Sub

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Il n'y a rien dans tes boucles For qui fasse sortie du Sub.

    Tu devrais remplacer les lignes "k=100" et "I=100" par des "Exit For", ce serait un peu plus propre.
    Tu devrais aussi délimiter la dernière valeur de tes boucles For aux nombres de cellules de ta place Range. En passant par un For Each, ça peut même s'ajuster par lui-même.

    Ton code écrit un peu plus propre :
    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
    Sub Macro2()
     
    Dim Mot As String
    Dim MaCell As Range
     
    Mot = InputBox("Texte ?", "Titre")
     
    For Each MaCell In F8.Range("PREMIERE5", "DERNIERE5")
       If MaCell.Value = Mot Then
          MaCell.EntireRow .Delete
          Exit For
       End If
    Next k
     
    For Each MaCell In F7.Range("PREMIERE4", "DERNIERE4")
       If MaCell.Value = Mot Then
          MaCell.EntireRow .Delete
          Exit For
       End If
    Next k
     
    End Sub
    Par contre, je ne vois pas de problèmes structurel. Il est probable que le problème viennent de données qui n'apparaissent pas dans le code comme les noms des cellules ou des onglets.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Candidat au Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2014
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    J'ai modifier les petites erreurs qui traînaient pour arriver à ce code:
    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
    Dim Mot As String
    Dim MaCell As Range
     
    Mot = InputBox("Texte ?", "Titre")
     
    For Each MaCell In F8.Range("PREMIERE5", "DERNIERE5")
       If MaCell.Value = Mot Then
          MaCell.EntireRow.Delete
          Exit For
       End If
    Next
     
    For Each MaCell In F7.Range("PREMIERE4", "DERNIERE4")
       If MaCell.Value = Mot Then
          MaCell.EntireRow.Delete
          Exit For
       End If
    Next
    Et là, ça fonctionne !!!
    Un grand merci Menhir, tu m'enlèves une belle épine du pied !!
    Encore merci !
    @ ++

  4. #4
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Un conseil : prends la peine d'indenter ton code (de faire des décalage après les IF, For, Whit, While, etc.), il en sera bien plus lisible.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  5. #5
    Candidat au Club
    Homme Profil pro
    Architecte technique
    Inscrit en
    Février 2014
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2014
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Ok, merci pour le conseil... ne pas se précipiter :-)
    Bonne continuation.

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

Discussions similaires

  1. recherche par mots-clés dans base access
    Par syber72 dans le forum Access
    Réponses: 2
    Dernier message: 07/03/2006, 14h53
  2. [MySQL] recherche par mots clés
    Par spartan dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 16/02/2006, 17h11
  3. [Tableaux] Moteur de recherche par mot clés
    Par Nee dans le forum Langage
    Réponses: 4
    Dernier message: 20/01/2006, 12h30
  4. Recherche par mots clés
    Par legillou dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 17/06/2005, 11h56
  5. Select par mot-clés ou 1er lettre
    Par maadadi dans le forum Langage SQL
    Réponses: 4
    Dernier message: 11/02/2004, 11h50

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