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 :

ma feuille ne contient pas de nom de champs, que des données. Filtrer aussi la première ligne [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 294
    Points : 98
    Points
    98
    Par défaut ma feuille ne contient pas de nom de champs, que des données. Filtrer aussi la première ligne
    Bonjour
    Ma feuille ne contient que des données et donc pas de ligne des noms des champs
    Je voudrais donc également prendre en compte la première ligne dans les données à filtrer
    Cela ne fonctionne pas avec le filtre normal qui prend d'office la première ligne dans le résultat sans la filtrer
    Comment dois-je faire ?
    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut,

    Soit tu ajoutes un en-tête soit tu peux utiliser la fonction suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Option Explicit
     
    Private Sub Filtres()
      [A1].CurrentRegion.Sort _
      Key1:=Range("A1"), Order1:=xlDescending, Header:=xlNo
    End Sub
    EDIT: Je me suis trompé. La méthode 'Sort()' ne filtre pas les données.
    Dernière modification par Invité ; 29/07/2014 à 10h58.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 294
    Points : 98
    Points
    98
    Par défaut
    Merci pour cette réponse
    Voici ce que j'utilisais jusqu'à maintenant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     Plage.Range("A1:N" & y).AutoFilter
     Plage.Range("A1:N" & y).AutoFilter Field:=filtre1, Criteria1:="1", VisibleDropDown:=False
    Pouvez-vous me dire comment intégrer vos codes dans ce type ligne ?
    merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Salut,

    Une usine à gaz qui fonctionne:
    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
    Private Sub Filtres()
     
      Dim rngC As Range, rngT As Range
     
      'Insertion d'une ligne comme en-tête provisoire
      Rows("1:1").Insert Shift:=xlDown
      [A1] = "-"
     
      'Filtrage des données
      With ThisWorkbook.ActiveSheet.UsedRange
        .AutoFilter Field:=1, Criteria1:=3
        Set rngC = .SpecialCells(xlCellTypeVisible)
        .AutoFilter
      End With
     
      'Masquer toutes les lignes
      For Each rngT In ThisWorkbook.ActiveSheet.UsedRange.Rows
        Rows(rngT.Row).Hidden = True
      Next
     
      'Afficher les lignes filtrées
      For Each rngT In rngC.Rows
        Rows(rngT.Row).Hidden = False
      Next rngT
     
      'Supprimer l'en-tête provisoire
      Rows("1:1").Delete Shift:=xlUp
     
    End Sub
    Il y a surement plus simple...

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 294
    Points : 98
    Points
    98
    Par défaut
    Merci encore
    Si je comprends bien, la base est d'insérer temporairement une ligne qui va servir de première ligne du filtre ...
    pour le reste une fois que cette ligne est insérée, la méthode habituelle peut être appliquée et entre autre pour copier comme, par exemple, la ligne qui suit ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Plage_ori.Range("D2:D" & y).SpecialCells(xlCellTypeVisible).Copy Destination:=Plage_des.Range("C2")
    Merci

  6. #6
    Invité
    Invité(e)
    Par défaut
    Essaie mais ça devrait être bon.
    Ton code est à insérer à la ligne 25.

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 294
    Points : 98
    Points
    98
    Par défaut
    Impect ! ça marche !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
            Plage_ori.Rows("1:1").Insert Shift:=xlDown
            Plage_ori.Range("A1:N" & y).AutoFilter
            Plage_ori.Range("A1:N" & y).AutoFilter Field:=filtre1, Criteria1:="1", VisibleDropDown:=False
     
            Plage_des.Range("A1").Value = "id"
            Plage_des.Range("B1").Value = "type"
            Plage_des.Range("C1").Value = "code"
            Plage_des.Range("D1").Value = "libelle"
            Plage_ori.Range("A2:A" & y).SpecialCells(xlCellTypeVisible).Copy Destination:=Plage_des.Range("A2")
            Plage_ori.Range("D2:D" & y).SpecialCells(xlCellTypeVisible).Copy Destination:=Plage_des.Range("C2")
            Plage_ori.Range("E2:E" & y).SpecialCells(xlCellTypeVisible).Copy Destination:=Plage_des.Range("D2")
     
            Plage_ori.Rows("1:1").Delete Shift:=xlUp
    Merci encore

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

Discussions similaires

  1. [AC-2013] ACCESS ne reconnait pas le nom de champ En analyse croisée
    Par babymeosh dans le forum Requêtes et SQL.
    Réponses: 8
    Dernier message: 25/03/2015, 18h04
  2. Réponses: 6
    Dernier message: 02/11/2013, 17h23
  3. Réponses: 1
    Dernier message: 02/09/2009, 10h35
  4. Réponses: 4
    Dernier message: 05/07/2006, 15h47
  5. Réponses: 4
    Dernier message: 19/09/2005, 15h59

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