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 de lignes


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 28
    Par défaut suppression de lignes
    Bonjour,

    Je cherche à créer une macro qui supprime toutes les ligne qui comportent au moins une cellule qui contient la mention "DEBUT".

    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
    Sub supprimer_ligne()
     
    Dim i As Long
    Dim j As Long
     
    If Cells(i, j) = "DEBUT" Then
    Rows(i & ":" & i).Delete xlUp
    Selection.Delete Shift:=xlUp
     
     
    End If
     
     
     
    End Sub

    J'obtiens le message Application-defined or object-defined error

    Qu'est ce qui cloche?

  2. #2
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Bjr, derouteu

    Avec si peu d'éléments difficile de t'aider.
    D'apres ce que je peux comprendre avec un peu d'imagination tu aimerais faire une boucle qui chercherais dans les cellules le mot début. Si il le trouve il efface la ligne correspondantes. j'ai compris?

    Pour commencer:
    Dans quel feuille se trouve la zone de recherche?
    Quel est la zone de recherche, Ex: De la colonne A à D ?

    Dis-nous en plus sur ce que tu veux, nous voulons des détails.

    Pour ton message d'erreur, tu définis des variables i et j, mais tu ne leur donne pas de valeur d'ou le message.

    Fait quelques recherches sur la faq ou simplement sur ce forum tu trouveras de nombreux exemples de ce que tu veux faire.

    A+

    EDIT: Voici une discussion qui ressemble à la tienne
    http://www.developpez.net/forums/d83...orrespondante/

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 28
    Par défaut
    Bonjour rvtoulon,

    Oui, tu as compris, je désire faire une boucle qui chercherait dans les cellules le mot "DEBUT". Si il le trouve, alors il efface la ligne correspondante.

    La zone de recherche va s'appliquer à plusieurs feuilles qui portent différents noms.
    La zone de recherche peut se limiter aux colonnes A:H mais dans un soucis d'apprentissage je désirai connaitre le script qui définit toutes les colonnes de la feuille.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2009
    Messages : 28
    Par défaut
    Bonjour laetitia,

    merci, c'est ce que je cherchais

    Maintenant j'ai ajouté un second mot clé à la liste


    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 es()
      Dim i As Long, j As Long
      Application.ScreenUpdating = False
      For j = 1 To 8
      For i = 1 To Cells.Find("*", , , , , xlPrevious).Row
        If Cells(i, j) = "DEBUT" Then Rows(i).Delete
      Next i: Next j
     
     
      For j = 1 To 8
      For i = 1 To Cells.Find("*", , , , , xlPrevious).Row
      If Cells(i, j) = "lala" Then Rows(i).Delete
      Next i: Next j
     
     
     End Sub

    le code fonctionne mais j'aurai aimé savoir s'il existe un moyen plus rapide (en écriture) que de ré-ecrire pour chaque mot clé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For j = 1 To 8
      For i = 1 To Cells.Find("*", , , , , xlPrevious).Row
      If Cells(i, j) = "lala" Then Rows(i).Delete
      Next i: Next j

    Avec 2 mots clés ça va mais ça risque de faire beaucoup de code si j'ai 500 mots clés. I existe certainement un manière de lister les mots clé...

    Merci,

    rvtoulon,

    C'est une bonne idée que de définir les feuilles dans lesquelles le code doit s'exécuter.
    Je vais considérer que j'ai 3 feuilles qui se nomment "Bleu", "Blanc", "Rouge".

    Je ne vois pas du tout comment je peux énoncer que la macro ne doit que s'exécuter sur ces 3 feuilles....

  5. #5
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    re, une solution pour boucler sur tes 3 feuilles. on l'ecrire autrement si tu as pas trop de feuilles dans ton classeur je suppose que tu as beaucoup de feuilles
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub es()
     Dim i As Long, j As Long, Ws As Worksheet
      Application.ScreenUpdating = False
    For Each Ws In ThisWorkbook.Worksheets(Array("Bleu", "Blanc", "Rouge"))
    Ws.Activate
    For j = 1 To 8
      For i = 1 To Cells.Find("*", , , , , xlPrevious).Row
        If Cells(i, j) = "DEBUT" Or Cells(i, j) = "lala" Then Rows(i).Delete
      Next i: Next j: Next Ws
    End Sub
    par coNtre si tu as 500criteres as tu la possiblitees de les mettre sur une plage de cellules par exemple dans une autre feuille de a1:a500 ??

    la on pourrait faire quelque chose de simple.

  6. #6
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    re,
    J'ai encore appris beaucoup de choses notamment sur l'utilisation du .find
    et les next à la file, Bien vu.

    j'adore ce forum.

    merci

  7. #7
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    bonjour derouteu rvtoulon le forum "brut" comme cela sans plus d'infos

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub es()
      Dim i As Long, j As Long
      Application.ScreenUpdating = False
      For j = 1 To 256
      For i = 1 To Cells.Find("*", , , , , xlPrevious).Row
        If Cells(i, j) = "DEBUT" Then Rows(i).Delete
      Next i: Next j
     End Sub

  8. #8
    Membre Expert Avatar de rvtoulon
    Homme Profil pro
    Agent Technique
    Inscrit en
    Mars 2009
    Messages
    1 042
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Agent Technique
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 042
    Par défaut
    Bjr, Laetitia re, Derouteu

    Encore une question, le mot "DEBUT" ce trouve dans une colonne en particulier?

    par exemple voici un code qui permet de chercher le mot début dans la colonne B de la feuil1. Si il le trouve il efface la ligne entière:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub effacer()
    Dim plage as range
     
    set plage = Sheets("feuil1").Range("B1:B" & Range("B65356").End(xlUp).Row)
     
    For Each c in plage
    If c = "DEBUT" Then c.EntireRow.Delete
    Next c
    End Sub
    A+

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

Discussions similaires

  1. [Excel - VBA] Problème de suppression de lignes...
    Par beholder2 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/01/2005, 17h27
  2. Suppression de lignes dans un fichier
    Par bubu dans le forum Linux
    Réponses: 2
    Dernier message: 13/01/2005, 10h36
  3. Dbgrid : Comment interdire Suppression de Ligne
    Par Francis dans le forum Bases de données
    Réponses: 3
    Dernier message: 28/11/2004, 08h31
  4. Réponses: 4
    Dernier message: 02/07/2004, 19h14
  5. [VB.NET] Suppression de ligne dans un DataTable
    Par seemax dans le forum Windows Forms
    Réponses: 7
    Dernier message: 06/05/2004, 14h19

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