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 :

Selectionner toutes les lignes ayant meme argument


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 190
    Par défaut Selectionner toutes les lignes ayant meme argument
    Bonjour,

    Veuille trouvez en pièce jointe ma requête.
    J'ai sur ma premiere feuille (DATA) des données.
    J'aimerai crée en VBA les feuilles suivantes (Voiture, Vélo, Bus).

    Le but est de pouvoir copier/coller sur chacune des feuilles les lignes qui ont la meme valeur dans la colonne A.

    J'ai pensé faire un tri automatique, puis sélectionner les valeurs triées, les copier, pour ensuite les coller sur la feuille prévue a cet effet.
    Mais je ne pense pas que ce soit la méthode la plus efficace.

    Auriez vous une solution ?

    Ps: j'ai simplifié mon fichier excel, mais en réalité, j'ai plusieurs autres colonnes.



    Merci d'avance.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre confirmé
    Inscrit en
    Mai 2010
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 100
    Par défaut 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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    Public Sub Tri()
     
        'Variables
        Dim V_Transport As String
        Dim V_Nbr As Integer
     
     
        'initialisation
        Sheets("Voiture").Select
        Rows("1:65536").Delete
        Range("A1").Select
        Sheets("Vélo").Select
        Rows("1:65536").Delete
        Range("A1").Select
        Sheets("Bus").Select
        Rows("1:65536").Delete
        Range("A1").Select
        Sheets("DATA").Select
        Range("A2").Select
     
        'tri
        Do Until IsEmpty(ActiveCell)
            V_Transport = ActiveCell.Value
            V_Nbr = ActiveCell.Offset(0, 1).Value
            Select Case V_Transport
                Case "Voiture"
                    Sheets("Voiture").Select
                Case "Vélo"
                    Sheets("Vélo").Select
               Case "Bus"
                    Sheets("Bus").Select
            End Select
            ActiveCell.Value = V_Transport
            ActiveCell.Offset(0, 1).Value = V_Nbr
            ActiveCell.Offset(1, 0).Select
            Sheets("DATA").Select
            ActiveCell.Offset(1, 0).Select
        Loop
     
    End Sub

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 190
    Par défaut
    @setepenre:
    Merci pour ton code, il fonctionne comme je l'ai demandé.

    Mais, à la place de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveCell.Offset(0, 1).Value = V_Nbr
    j'aimerai une instruction qui me recopie la ligne entière.
    Car j'ai d'autres colonnes à copier.

    MErci d'avance.

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2010
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 100
    Par défaut Re-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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Public Sub Tri()
     
        'Variables
        Dim V_Transport As String
        Dim N_Lig As Integer, N_Col As Integer
     
     
        'initialisation
        Sheets("Voiture").Select
        Rows("1:65536").Delete
        Range("A1").Select
        Sheets("Vélo").Select
        Rows("1:65536").Delete
        Range("A1").Select
        Sheets("Bus").Select
        Rows("1:65536").Delete
        Range("A1").Select
        Sheets("DATA").Select
        Range("A2").Select
     
        'tri
        Do Until IsEmpty(ActiveCell)
            V_Transport = ActiveCell.Value
            N_Lig = ActiveCell.Row
            N_Col = ActiveCell.End(xlToRight).Column
            Range(Cells(N_Lig, 1), Cells(N_Lig, N_Col)).Copy
            Select Case V_Transport
                Case "Voiture"
                    Sheets("Voiture").Select
                Case "Vélo"
                    Sheets("Vélo").Select
               Case "Bus"
                    Sheets("Bus").Select
            End Select
            ActiveSheet.Paste
            ActiveCell.Offset(1, 0).Select
            Sheets("DATA").Select
            ActiveCell.Offset(1, 0).Select
        Loop
     
    End Sub

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 178
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    J'enlèverais les SELECT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Voiture").Rows("1:65536").Delete
    Fonctionne tout aussi bien et plus rapidement.
    Les ActiveSheet, je les remplacerais aussi par un nom plus explicite pour éviter des risques d'écritures ou de lectures erronées.
    Par ThisWorkbook.WorkSheets("nom de feuille").Cells(r,c) ou Workbooks("nomclasseur").WorkSheets("nom de feuille").Cells(r,c)
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2010
    Messages
    100
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 100
    Par défaut Correctif
    On peut en effet simplifier le code.
    Pour faciliter la compréhension, j'ai détaillé chaque action.

Discussions similaires

  1. [Débutant] selectionner tout les lignes dans GridView
    Par ramroum1986 dans le forum ASP.NET
    Réponses: 5
    Dernier message: 12/08/2011, 11h58
  2. selectionner toutes les lignes d'un datagrid
    Par raoufinf dans le forum Silverlight
    Réponses: 2
    Dernier message: 24/06/2011, 11h09
  3. [SQL] Selectionner les lignes ayant leurs parametres égaux
    Par clempepino dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 01/02/2010, 16h06
  4. [A-07] Selectionner toutes les lignes d'une liste
    Par stagolee dans le forum VBA Access
    Réponses: 6
    Dernier message: 07/11/2008, 21h08
  5. cacher toutes les lignes ayant un identificateur commun
    Par destructive dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 30/04/2007, 16h09

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