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 :

[VBA-E]recherche de toutes lignes avec zero


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    En reconversion
    Inscrit en
    Mai 2006
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Mai 2006
    Messages : 509
    Par défaut [VBA-E]recherche de toutes lignes avec zero
    Bonjours a tous

    desolé de commancer comme cela mais je n'ai pas d'idée pour debuter mon Code.
    Sauf pour selectionner le tableau mais apres je suis perdu

    Je voudrais dans un tableau comportant des lignes et des colonnes (donc par definition un tableau) selectionner toutes les lignes comportant un zero situé toujours dans la meme colonne et en l'ocurence la colonne "D".

    Ensuite toutes ces lignes selectionner je voudrais les supprimer.

    Si quelqu'un peu m'aiguiller sur la demarche à suivre.

    Merci d'avance

  2. #2
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    ben déjà tu le sélectionne comment ton tableau ..? montre ton code et dis nous ce qui est sélectionné .. et la position de ta colonne D .. par rapport à cela ..
    ensuite on trouvera le For Each... qui va bien

  3. #3
    Membre éclairé
    Homme Profil pro
    En reconversion
    Inscrit en
    Mai 2006
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Mai 2006
    Messages : 509
    Par défaut
    Mon tableau est selectionner par le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Set firstcell = Range("H1")
    Set lastcell = Range("A65536").End(xlUp)
    Set zone = Range(firstcell, lastcell)
    Range(firstcell, lastcell).Select
    Et donc je veux faire une recherche dans la colonne D (qui est en quatrieme position) sur la plage selectionner et supprimer toutes les lignes qui comprote un zero dans cette colonne.

  4. #4
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    donc tu sélectionne une plage allant de Axxx à H1, xxx étant la derniére ligne "non-vide" dans la colonne A...

    bon au lieu de sélectionner la zone .. affecte une variable range à celle-ci
    puis par un For Each.. parcours en les lignes..et à chaque tour de boucle contrôle la colonne D et supprime la ligne si = 0...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim rTab As Range
    Dim r As Range
    Set rTab = Range(firstcell, lastcell)
    For Each r In rTab.Rows
      'ici à chaque tour de boucle ..
      ' r.. représente une ligne du tableau..
      If r.Cells(4) = 0 Then
        r.Delete Shift:=xlUp
    End If
    Next

    PS : Ensuite pose toi la question "que ce passe t'il si la feuille contenant mon tableau n'est pas la feuille active au moment du lancement de la macro..."

  5. #5
    Membre éclairé
    Homme Profil pro
    En reconversion
    Inscrit en
    Mai 2006
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Mai 2006
    Messages : 509
    Par défaut
    Je viens de tester ton code bbil est apparemment rien ne se supprime aucune ligne, mais sur la variable lastcell j'ai une valeur qui est renvoyer en faisant un stop juste apres ton code avec "erreur 2015".

    Voila le 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
    selection.Copy
        Workbooks.Add
     
        selection.PasteSpecial Paste:=xlPasteValues
     
         Stop
           Dim rTab As Range
    Dim r As Range
    Set rTab = Range(firstCell, lastCell)
    For Each r In rTab.Rows
      'ici à chaque tour de boucle ..
      ' r.. représente une ligne du tableau..
      If r.Cells(4) = 0 Then
        r.Delete Shift:=xlUp
    End If
    Next
    Stop

  6. #6
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    il manque tes lignes d'affectation de lastCell et firsCell.. que je n'ai pas voulu reprendre.....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Set firstcell = Range("H1")
    Set lastcell = Range("A65536").End(xlUp)
    en plus dans mon premier code j'avais zapper.. ton set zone... on aurai pu utiliser ta variable range zone, en lieu et place de mon rTap

  7. #7
    Membre éclairé
    Homme Profil pro
    En reconversion
    Inscrit en
    Mai 2006
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Mai 2006
    Messages : 509
    Par défaut
    Ok bbil j'ai retester et ça marche en parti le code m'a bien supprimé la ligne i mais ne m'a pas supprimé la ligne j qui a egalement un zero, il me semble avoir lu un message d'Alain Tech sur un autre post que c'etait du au probleme que la ligne j apres suppression devenait et provoquait le bug.

    Mais je peux me planter et que ce que je viens de dire n'a pas de sens.

    Si c'est le cas toute mes excuses.

  8. #8
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    oups... j'ai du mal à te suivre ... c'est quoi ces lignes i et j ??

  9. #9
    Membre éclairé
    Homme Profil pro
    En reconversion
    Inscrit en
    Mai 2006
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Mai 2006
    Messages : 509
    Par défaut
    Ligne i et j C'est la ligne N°9 et la ligne N°10 toute mes excuses c'est moi qui me suis mal exprimer car dans la colonne A( n°1 ) j'ai une liste qui ce deroule alphabetiquement.

    Donc j'aurais pas du utiliser les termes i et j.

  10. #10
    Expert éminent


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Par défaut
    ok .. bon tu aurai pu nous mettre un lien vers le post à alain...

    tiens une solution serai peu-être de grouper par une "union" les lignes à détruire dans un même range et à les détruire aprés la boucle for :

    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
    Dim rADet As Range
    Dim rTab As Range
    Dim r As Range
    Set firstcell = Range("H1")
    Set lastcell = Range("A65536").End(xlUp)
    Set rTab = Range(firstcell, lastcell)
    For Each r In rTab.Rows
      'ici à chaque tour de boucle ..
      ' r.. représente une ligne du tableau..
      If r.Cells(4) = 0 Then
        If rADet Is Nothing Then
          Set rADet = r
         Else
         Set rADet = Application.Union(rADet, r)
        End If
    End If
    Next
    If Not rADet Is Nothing Then rADet.Delete
    End Sub

  11. #11
    Membre éclairé
    Homme Profil pro
    En reconversion
    Inscrit en
    Mai 2006
    Messages
    509
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : En reconversion

    Informations forums :
    Inscription : Mai 2006
    Messages : 509
    Par défaut
    Ok bbil merci ça marche impec desolé pour le lien j'y ai pas pensé.

    Par contre j'ai une evolution a faire au code precedent comment je peux effacer les lignes comportant un zero mais en ne touchant pas a la premiere colonne, pour ne pas toucher a l'ordre de ma liste alphabetique.

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

Discussions similaires

  1. [XL-2003] VBA - Problème d'insertion de ligne avec copie de formules
    Par oracle7556 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/06/2010, 15h22
  2. Macro VBA pour mettre colonne en ligne avec cellule fusionnée
    Par dany13 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/01/2008, 06h09
  3. [VBA-E]Recherche d'une valeur avec la colonne comme variable
    Par Corlo dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 25/04/2007, 09h21
  4. [VBA-E] ajout d'une ligne avec ordre alphabétique
    Par Yaone dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/04/2006, 16h52
  5. [VBA-E]recherche d'une ligne
    Par calimero91 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/01/2006, 12h11

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