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 tri partiel [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Juillet 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2014
    Messages : 7
    Points : 5
    Points
    5
    Par défaut VBA tri partiel
    Bonjour à tous,

    Comme débutant confirmé je n'arrive pas à résoudre cette ligne de code,
    je souhaite ajouter à "13C*" et "PHS*" de nouveaux caractères à trier comme "HSF*" et "PCO*" ( pour info PHS_0_FJ1 mais le tri ne doit être que sur "PHS" sans tenir compte du reste)

    dans ce cas ça fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveSheet.Range("$A$1:$Y$93").AutoFilter Field:=9, Criteria1:=Array( _
            "13C* ", "phs* "), Operator:=xlFilterValues
    Si j'ajoute cela ne fonctionne plus..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveSheet.Range("$A$1:$Y$93").AutoFilter Field:=9, Criteria1:=Array( _
            "13C* ", "PHS* ", "HSF*", "PCO* "), Operator:=xlFilterValues
    Merci beaucoup pour votre aide

  2. #2
    Membre habitué
    Homme Profil pro
    Ingénieur commercial
    Inscrit en
    Février 2015
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur commercial

    Informations forums :
    Inscription : Février 2015
    Messages : 118
    Points : 178
    Points
    178
    Par défaut
    Citation Envoyé par ProjetRH Voir le message
    Si j'ajoute cela ne fonctionne plus..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ActiveSheet.Range("$A$1:$Y$93").AutoFilter Field:=9, Criteria1:=Array( _
            "13C* ", "PHS* ", "HSF*", "PCO* "), Operator:=xlFilterValues
    Comme ça sa donne quoi ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ActiveSheet.Range("$A$1:$Y$93").AutoFilter Field:=9, Criteria1:=Array( _
            "13C* ", "phs* ", "HSF*", "PCO* "), Operator:=xlFilterValues

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Comme ça arrive très souvent, tu nous exposes ta problématique, sens donner de précisions sur la finalité!

    Et comme ça arrive souvent, nous allons tenter de t'aider à résoudre ton problème! Ce qui est bien en soit mais il arrive qu'une solution plus adapté existe mais implique de connaitre le but final!

    Indépendamment de ça il y a des espaces dans tes critères après *
    Dernière modification par Invité ; 23/07/2015 à 18h53.

  4. #4
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 138
    Points : 9 972
    Points
    9 972
    Billets dans le blog
    5
    Par défaut
    Je n'ai rien compris à
    pour info PHS_0_FJ1 mais le tri ne doit être que sur "PHS" sans tenir compte du reste
    ça veut dire quoi exactement ?


    ou bien je n'arrive plus à réfléchir, et ça s'expliquerait par ce que dis rdurupt
    le bu final!
    hipss, la bouteille est vide !!

  5. #5
    Expert éminent sénior


    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
    Points : 20 040
    Points
    20 040
    Par défaut
    Bonsoir,

    il semble que comme lorsque tu utilise le filtre dans excel tu ne peu utiliser les caractères générique que pour 2 critères seulement, si tu dépasse 2 critères les caractères générique ne sont pas pris en compte et sont "échappé" le filtre d* ne revoit plus tous les champs qui commence par d mais renvoi les champs contenant le caractère d suivi du caractère *.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Et oui Joe j'ai jamais vraiment été capable de conjuguer le verbe boire!

  7. #7
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Juillet 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2014
    Messages : 7
    Points : 5
    Points
    5
    Par défaut trier VBA excel
    ( pour info PHS_0_FJ1 mais le tri ne doit être que sur "PHS" sans tenir compte du reste)

    Bonjour,

    Merci pour votre réponse, la finalité est de trier dans une colonne sur les trois premier caractères; exemple, "PHS_0_FJ1" je souhaite trier et retenir
    touttes les cellules qui commencent par PHS, PHC, HSF, 13C
    Dans le cas ci dessous le tri fonctionne pour deux critères mais comment ajouter de nouveaux critères ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Macro1()
    '
    ' Macro1 Macro
    '
     
    '
        ActiveSheet.Range("$A$1:$Y$93").AutoFilter Field:=9, Criteria1:=Array( _
            "13C* ", "phs* "), Operator:=xlFilterValues
    End Sub

    PHC_1_FJ3
    PHS_1_FJ4
    PHC_1_FJ3
    PHC_1_FJ3
    PHS_1_FJ2
    PHC_1_FJ3
    PHC_1_FJ3
    HSF_0_KA2
    PHC_1_FJ3
    13C_0_FJ1

    Merci beaucoup

  8. #8
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 138
    Points : 9 972
    Points
    9 972
    Billets dans le blog
    5
    Par défaut
    Est-il nécessaire de filtrer sur place les données, ou une exportation du résultat vers une autre feuille te conviendrait ?

  9. #9
    Invité
    Invité(e)
    Par défaut
    Oui Joe tu m'as volé la politesse!

    En effet trier ne veut pas dire filtrer, retenir veux dire garder donc supprimer les autres!

    La finalité est comme le disait Joe un petit export (un copier coller), si c'est ça comme je le disais en début il était existe un solution autre.

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Juillet 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2014
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par joe.levrai Voir le message
    Est-il nécessaire de filtrer sur place les données, ou une exportation du résultat vers une autre feuille te conviendrait ?
    Compte tenu de l'utilisation, il est nécéssaire de conserver les donneés
    Merci

  11. #11
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 138
    Points : 9 972
    Points
    9 972
    Billets dans le blog
    5
    Par défaut
    Je ne parle pas de supprimer ce qui ne correspond pas à ton filtre
    je parle d'exporter une copie du résultat de ton filtre vers une autre feuille

    En effet, si le filtre auto est réellement limité à deux filtres textuels contenant des "*", je te propose un filtre avancé avec exportation

    Renomme simplement, à la ligne 9 du code ci-après, le nom "Feuil1" pour indiquer le nom de ta feuille contenant la base de données
    Ensuite tu testes ça et tu nous dis si c'est une proposition qui t'irait
    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
    Option Base 1
     
    Sub Export()
    Dim ShExport As Worksheet
    Dim ShSource As Worksheet
    Dim TabCrit()
     
    TabCrit = Array("13C*", "PSH*", "HSF*", "PCO*")
    Set ShSource = ThisWorkbook.Worksheets("Feuil1")
     
    ' préparation de la feuille d'exportation
    On Error Resume Next
    Set ShExport = ThisWorkbook.Worksheets("Export")
    ShExport.Cells.Delete
    On Error GoTo 0
    If ShExport Is Nothing Then Set ShExport = ThisWorkbook.Worksheets.Add: ShExport.Name = "Export"
     
     
    ' écriture des en-têtes de la BDD
    With ShSource
        .Cells(1, 1).Resize(1, .UsedRange.Columns.Count).Copy ShExport.Cells(3 + UBound(TabCrit), 1)
    End With
     
    With ShExport
        ' en-tête du critère
        .Cells(1, 1).Value = ShSource.Cells(1, 9).Value
        ' les critères
        .Cells(2, 1).Resize(UBound(TabCrit), 1).Value = Application.Transpose(TabCrit)
        ' le filtre avancé
        ShSource.Cells(1, 1).CurrentRegion.AdvancedFilter _
                                Action:=xlFilterCopy, _
                         CriteriaRange:=.Cells(1, 1).Resize(UBound(TabCrit) + 1, 1), _
                           CopyToRange:=.Cells(3 + UBound(TabCrit), 1).Resize(1, .UsedRange.Columns.Count), _
                                Unique:=False
    End With
     
    End Sub

  12. #12
    Invité
    Invité(e)
    Par défaut
    Tu sais pour nous les choses sont Oui/Non. Tu parle de trier comme les lentilles?

    De quelle utilisation parle tu? On ne va pas déposer un brevet sur ton idée, on ne te demande pas de violer une close de confidentialité!

    Nous nous demandons si le filtre comme tu l'entrevois est la bonne solution.

    Je suis sur que cette source pourrait être adapté à ton problème:http://www.developpez.net/forums/d15...a/#post8326770
    Dernière modification par Invité ; 23/07/2015 à 23h11.

  13. #13
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 138
    Points : 9 972
    Points
    9 972
    Billets dans le blog
    5
    Par défaut
    On a dit que c'est moi qui codait, c'est écrit noir sur blanc dans le fil renvoyé par ton lien

  14. #14
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par joe.levrai Voir le message
    On a dit que c'est moi qui codait, c'est écrit noir sur blanc dans le fil renvoyé par ton lien
    Je fais mande honorable, ça ne ce reproduira pas!

  15. #15
    Futur Membre du Club
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Juillet 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2014
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Joe, merci beaucoup pour votre aide. J'ai trouvé une solution de contournement en utilisant =GAUCHE en colonne caché.

    Pour information le feuille est triée à 36 à reprises sur 22 colonnes avec pour résultats 28 nouvelles feuilles,
    Pour cette raison il est compliqué d'expliquer toutes les étapes.

    Merci encore pour vos réponses !

  16. #16
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 138
    Points : 9 972
    Points
    9 972
    Billets dans le blog
    5
    Par défaut
    L'église du Saint Filtre-Avancé vient de perdre un potentiel nouveau croyant

    Pourtant ce que tu expliques dans ton dernier message le rendait encore plus attractif

    C'est Philippe Tulliez qui doit se retourner ... dans son lit !

  17. #17
    Invité
    Invité(e)
    Par défaut
    Bonjour ProjetRH,
    Pour reprendre l'évangile selon st Joe, tu utilise autofilter pour exécuter un copier coller alors que c'est pas vraiment son Job et néglige le filtre avancer don c'est le métier de faire ça bizarre!

    Édite: Ceci dit au poste #15 , seulement, tu as réussis à expliquer, et ça me conforte dans l'idée du filtre avancé!
    Dernière modification par Invité ; 24/07/2015 à 07h46.

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

Discussions similaires

  1. Fusion de deux requêtes pour tri partiel
    Par zebiloute dans le forum Langage SQL
    Réponses: 6
    Dernier message: 04/12/2007, 11h29
  2. Réponses: 2
    Dernier message: 06/09/2007, 15h08
  3. [Excel\VBA] tri par ordre alphabatique et cellule associée
    Par jefe.k dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/02/2007, 15h40
  4. [SQL-VBA]tri par date dans access
    Par Mickey_Mouse dans le forum VBA Access
    Réponses: 5
    Dernier message: 06/02/2007, 09h49
  5. Réponses: 2
    Dernier message: 27/10/2005, 15h51

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