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 :

Tri avec un underscore


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2016
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2016
    Messages : 294
    Points : 87
    Points
    87
    Par défaut Tri avec un underscore
    je reviens sur le forum pour une aide sur du tri.


    Dans ma colonne B j'ai des numéros qui sont décroissant à partir de B9
    Dans ma colonne J j'ai mes articles
    Dans ma colonne H des numéros de série

    j'ai commencé à filtrer déjà par ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With Sheets(1)
    Set plage1 = .Range("J9", .Range("J" & Rows.Count).End(xlUp))
    Set plage2 = .Range("H9", .Range("H" & Rows.Count).End(xlUp))
    x = WorksheetFunction.CountIfs(plage1, article, plage2, numserie)
    End With
    x me retourne le nombre d'élément selon mes critères : article et numserie

    je pense par la suite mettre ceci dans un tableau (pour gagner en vitesse de traitement)

    Mon problème est le suivant lorsque j'ai plusieurs fois le même numéro de série je souhaiterai obtenir le dernier
    pour différencier les mêmes numéros de série j'ai mis en colonne B un compteur décroissant
    ainsi
    si j'ai le numéro de série XXXXXX alors je peut les différencier avec XXXXXX_numéro de la colonneB

    Mais je souhaite afficher le XXXXXX_le plus fort


    faut il retrier dans le tableau ou existe une formule simple ?

  2. #2
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    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 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    si j'ai bien compris, puisque tes numéros sont décroissants, c'est que tu veux la première ligne résultant de ton filtre automatique ?

    si c'est ça, voici un exemple où on filtre la colonne H avec un numéro de série
    ensuite on affiche le numéro du compteur et le numéro de série de la première ligne filtrée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub LePlusGros()
    Dim Numero As Long
    Numero = 32
        With Range("A9")
            .AutoFilter
            .AutoFilter 8, Numero
        End With
     
        With Range(Cells(10, 2), Cells(Rows.Count, 2).End(xlUp)).SpecialCells(xlCellTypeVisible)
            MsgBox .Cells(1, 1).Value & " " & .Cells(1, 7).Value
        End With
    End Sub

  3. #3
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2016
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2016
    Messages : 294
    Points : 87
    Points
    87
    Par défaut
    si j'ai bien compris, puisque tes numéros sont décroissants, c'est que tu veux la première ligne résultant de ton filtre automatique ?
    Je ne veux pas parriculièrement la première ligne du filtre.

    Je reprend un exemple:

    ColonneB                 ColonneJ              ColonneH
    37                           Chapeau.             876000
    23.                          Ceinture.              879600
    11.                          Ceinture.              435987
    8.                            Chapeau.             765789
    2.                            Ceinture.              879600
    Admettons que j'ai choisis dans un USF via une combobox l'article ceinture alors trouve l'article ceinture.

    Il doit me trouver le 879600_23 et le 435987_11 et le 879600_2

    Admettons que dans une textbox je veuille que le 879600, la j'en aurai 2
    Le 879600_2 et le 879600_23 affiche moi alors uniquement le plus récent (leplusgros) c'est à dire le 23

    (PS: La fonction autofilter ne marche pas sur xl2007)

  4. #4
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Bonjour, bonjour !

    Citation Envoyé par esse2016 Voir le message
    (PS: La fonction autofilter ne marche pas sur xl2007)
    Elle fonctionne très bien de mon côté avec Excel 2007 et ce sur différents ordinateurs ‼

    Voilà, voilà !

    _________________________________________________________________________________________________________
    Je suis Paris, Nice, Bruxelles, Charlie, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  5. #5
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2016
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2016
    Messages : 294
    Points : 87
    Points
    87
    Par défaut
    Arf, j'essayerai sur autre pc dans ce cas , mais aurais tu une idée Marc-L pour mon problème ?

  6. #6
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Déjà, il y a une icône pour afficher un tableau dans le message …

    Ensuite la réponse de Joe correspondant tout à fait à ta présentation initiale,
    le post #3 venant la contredire et prêtant à confusion,
    alors avec une explication claire & exhaustive du besoin ! …

    Selon la présentation initiale « en colonne B un compteur décroissant »
    alors c'est le premier n° de série correspondant dans la liste …

    Sinon bonne idée le tableau, pourquoi ne pas avoir commencer par là ?
    Publie un code dans ce sens …
    Mais avec la fonction Find, c'est inutile si c'est bien le premier n° de série correspondant dans la liste !
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  7. #7
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2016
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2016
    Messages : 294
    Points : 87
    Points
    87
    Par défaut
    je construis, je cherche, je défais, je refais .... car il me faut développer beaucoup d'énergie pour pondre qqchose, débutant que je suis.

    Donc dès que j'ai qquechose de plus construit je reviens ici

    peut on faire mieux ?

    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
    Dim TbG, Tb1() As Long
    Dim i, ticket As Long
    Dim cell As Range
     
    With Sheets(1)
    TbG = .Range("B9", .Range("J" & Rows.Count).End(xlUp))
    For i = 1 To UBound(TbG)
                      If TbG(i, 7) = numserie And TbG(i, 9) = article Then
                      ticket = TbG(i, 1)
                      i = UBound(TbG)
                      End If
    Next i
     
    Set cell = .Columns(2).Find(ticket, , , xlWhole)
     
    End With

  8. #8
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut




    Oui certainement car avec la boucle et le tableau pas besoin de la fonction Find
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  9. #9
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2016
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2016
    Messages : 294
    Points : 87
    Points
    87
    Par défaut
    merci pour vos interventions.

    mais avec find je n'arrive pas à mettre 2 conditions pour éviter une boucle inutilement.
    si quelqu'un sait faire je suis preneur car je galère.

  10. #10
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut



    Normalement une seule condition est nécessaire (n° de série ou article) car
    est-il réellement possible qu'un numéro de série corresponde à différents types d'articles ?!
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  11. #11
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2016
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2016
    Messages : 294
    Points : 87
    Points
    87
    Par défaut
    est-il réellement possible qu'un numéro de série corresponde à différents types d'articles ?!
    non impossible

    en revanche, un numéro de série peut posséder plusieurs fois le même article
    C'est la raison pour laquelle j'ai ajouté la colonne B qui permet d'affiner en cas de litige sur un numéro d'article possédant des mêmes numéros de série.

  12. #12
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Donc un seul critère est nécessaire, pourquoi donc deux alors ?!

    Soit rechercher par le numéro de série, soit par la famille d'articles …
    Et dès lors, il suffit de trois lignes de code avec la méthode Range.Find !
    Ou encore quatre lignes de code avec la fonction Excel de feuille de calculs EQUIV, le B-A-BA !
    Et avec cette fonction, un code ne serait même pas nécessaire …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  13. #13
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2016
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2016
    Messages : 294
    Points : 87
    Points
    87
    Par défaut
    non désolé mais tu n'as pas bien saisi la subtilité.

    J'ai certainement dû mal m'exprimé ou oublié d'apporter encore un détail.

    dans la colonne H tu as les numéros de série suivants :
    800500
    801600
    800500
    789000
    799000
    800500

    respectivement dans la colonne J
    ceinture
    chapeau
    ceinture
    pantalon
    pantalon
    ceinture

    si je veux mon article ceinture j'aurai 3 numéros de série associé le 800500 et le 800500 et enfin le 800500
    chacun ont dans leurs autres colonnes (P, R, T, et...) respectives des données différentes
    donc comment je fais si j'ai besoin d'un de ses 3 numéros il fauta affiner non ? c'est la raison de la colonne B qui à des numéros
    voir mon post #3

    Maintenant si ce n'est pas possible....pas de problème.

  14. #14
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut
    Ne pas confondre critères et nombre d'éléments du résultat !

    Allez, encore une fois : comme un numéro de série correspond à une seule famille d'articles,
    la recherche peut alors directement être effectuée par le numéro de série uniquement !
    Pas besoin de la famille car elle vient en doublon !
    Ensuite comme c'est déjà classé par ordre décroissant de la colonne B,
    donc forcément le plus fort est le premier numéro de série correspondant dans la liste !

    « C'est simple ! » comme il dit le p'tit gars de chez Renault : effectue un filtre sur la colonne numéro de série pour vérifier …

    Donc par le numéro de série, il suffit de trois lignes de code en utilisant la méthode Range.Find !

    Mais la question est faut-il forcément un code alors que le B-A-BA d'Excel,
    une pauvre formule de calculs, peut déjà indiquer le même résultat ?!

    Au passage, même si ce n'était pas classé c'est aussi réalisable via une formule de calculs …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  15. #15
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    avec ton n° de série en B, dans une colonne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =B2&SI(NB.SI(B3:$B$10000;B2);"_";"")
    ensuite tu filtres dessus avec ton n° de série. Les 1ers 800500 apparaitront 800500_ et ne seront pas valides
    eric

  16. #16
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut



    Eric, une formule de calculs donne directement le résultat que ce soit classé ou non !
    Et en VBA en utilisant cette formule de calculs, il suffit de trois de lignes de code …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  17. #17
    Membre régulier
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juin 2016
    Messages
    294
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Juin 2016
    Messages : 294
    Points : 87
    Points
    87
    Par défaut
    tant pis ce que j'ai écris fonctionne même si ça fait doublon


    j'ai clôturé de tout manière le post.

    Merci quand même

  18. #18
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut


    Si tu réponds pas aux questions, difficile donc d'apporter de l'aide ! …

    « Peut-on faire mieux ? » Oh que oui avec le B-A-BA d'Excel ‼ Et par code, en moins de cinq lignes et sans boucle …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  19. #19
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Eric, une formule de calculs donne directement le résultat que ce soit classé ou non !
    Entièrement d'accord.
    De ce que j'ai compris il effectue un tri et veux filtrer sur la dernière occurrence.
    Ce que permet cette formule il me semble.
    Soit il filtre sur son n° de série, soit sur 'ne contient pas...' "_" s'il veut toutes les dernières occurrences et occurrences uniques.
    Mais j'ai peut-être mal saisi son besoin (?) mais comme de toute façon ça n'a pas l'air de bien l'intéresser...

  20. #20
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut


    Déjà le titre de la discussion prête à confusion car il ne s'agit pas de trier mais de juste
    rechercher la plus grande valeur en colonne B d'un numéro se trouvant en colonne H à partir de la ligne 9 :
    donc pas besoin de trier, en combinant SI & MAX …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Problème de tri avec analyse croisée
    Par drthodt dans le forum Access
    Réponses: 2
    Dernier message: 18/10/2005, 16h23
  2. formule de calcul du TRI avec PL/SQL
    Par mongilotti dans le forum Algorithmes et structures de données
    Réponses: 15
    Dernier message: 30/07/2005, 20h23
  3. Pb de tri avec champs vide
    Par nesbla dans le forum Langage SQL
    Réponses: 2
    Dernier message: 01/06/2004, 17h42
  4. tri avec l'ordre UPDATE et incrementation d'une colonne
    Par Staron dans le forum Langage SQL
    Réponses: 3
    Dernier message: 17/02/2004, 08h48
  5. tri avec les champs vides en dernier
    Par r-zo dans le forum Requêtes
    Réponses: 11
    Dernier message: 03/09/2003, 13h40

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