Tri depuis la fin du contenu des cellules

julie06220 -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

j'ai une liste de noms de domaines de sites internet dans excel. J'en ai 80 000. Je voudrai trier par extensions des noms de domaines. Exemples au début tous les.aa puis les .ab etc

Au final je ne dois garder que les .com; .fr; .eu; .gouv; .net; .mc; .ch; .lu ; .be; .asso

qui pourrait m'aider?
Merci
Julie

9 réponses

  1. PHILOU10120 Messages postés 6463 Date d'inscription   Statut Contributeur Dernière intervention   835
     
    Bonjour

    Pouvez-vous envoyer un échantillon d'une vingtaine de lignes pour réaliser une formule qui extraira les extensions dans une nouvelle colonne
    0
  2. julie06220
     
    Bonjour,

    Voici un echantillon exemple de ce fichier :

    nomdedomaine1.fr
    nomdedomaine2.com
    nomdedomaine3.fr
    nomdedomaine4.ru
    nomdedomaine5.fr
    nomdedomaine6.com
    nomdedomaine7.sk
    nomdedomaine8.fr
    nomdedomaine9.com

    Notre but est d'épurer facilement une grosse liste de noms de domaines, en ne gardant que les domaines dont nous avons besoin.

    Merci
    Cdt
    Julie
    0
    1. Utilisateur anonyme
       
      Bonsoir Julie,

      Je vous ai déjà répondu avec mon message #3 ; lisez les informations,
      mais pour le fichier Excel 2003, celui-ci est mieux car je l'ai optimisé :

      Exercice pour julie06220 (optimisé)

      Les noms de domaines dont vous n'avez pas besoin sont toujours présents
      en fin de liste. Peut-être préférerez-vous tel que ? Mais si vraiment vous
      préférez les supprimer définitivement, indiquez-le moi et je n'aurai qu'une
      petite adaptation à rajouter.

      Je vous rappelle que si besoin, vous pouvez me demander tout complément
      d'information que vous jugerez utile.

      Cordialement.  😊
       
      0
  3. Utilisateur anonyme
     
    Bonsoir Julie,

    Votre exercice nécessite effectivement une colonne supplémentaire
    pour les extensions. Voici le fichier Excel 2003 correspondant :

    Exercice pour julie06220

    Vous verrez que tous les noms de domaine qui ne font pas partie de
    votre liste de domaines à conserver ont "z" comme extension dans
    la colonne supplémentaire, afin que le tri les place en fin de liste :
    les lignes correspondantes ne sont pas supprimées.

    Donc tous les noms de domaines dont vous avez besoin
    sont depuis le début de la liste, et triés selon l'extension.

    Ouvrez le fichier, et faites < Ctrl >< t > pour lancer le tri.

    Faites < Alt >< F11 > et affichez le Module1 pour voir la macro TNDE :
    Tri des Noms de Domaine selon Extension.

    Si votre liste de noms de domaine est en colonne B, et que le premier
    nom de domaine est en ligne 2, vous pouvez laisser tel que ; sinon,
    ce sera à adapter.

    N'hésitez pas à me demander des renseignements si nécessaire.

    Cordialement.  😊
     

    Si le problème est réglé, merci d'utiliser le lien situé tout en haut de page,
    juste sous le titre : « Marquer comme Résolu ».
    0
  4. Raymond PENTIER Messages postés 58213 Date d'inscription   Statut Contributeur Dernière intervention   17 482
     
    Bonjour Julie.

    Sans faire appel à une macro, tu peux utiliser la colonne libre la plus proche de ta liste A:A et y mettre la formule =STXT(A:A;TROUVE(".";A:A);9)

    Ensuite tu peux à ton gré effectuer un tri, un filtre, ou les deux. https://www.cjoint.com/c/FFcwQWZLDAs

    Cordialement.
    0
    1. Utilisateur anonyme
       
      Bonjour Raymond,

      Tu as raison... si on peut être sûr qu'il n'y a qu'un seul point ( . ) !

      Car s'il y en a plusieurs (et dans une adresse internet, ça peut très bien arriver),
      ta formule « butera » sur le premier point rencontré, et ne trouvera donc pas
      le dernier ! C'est pourquoi ça oblige à chercher le premier point depuis la fin !

      Exemple d'adresse internet : eco.conseil@wanadoo.fr

      Ta formule trouvera le 1er point, entre « eco » et « conseil »,
      et « sortira » ces 9 caractères : « .conseil@ » !

      Ma macro trouve le premier point depuis la fin, entre « wanadoo » et « fr »,
      et sortira donc le bon nom de domaine.

      Si tu as une formule pour faire cela, je suis vraiment preneur !

      Cordialement.  😊
       
      0
      1. Raymond PENTIER Messages postés 58213 Date d'inscription   Statut Contributeur Dernière intervention   17 482 > Utilisateur anonyme
         
        Oui, j'y ai pensé ... Mais comme à mon habitude, je réponds strictement à la question posée, avec les exemples proposés, afin de ne pas alourdir la réponse, peut-être inutilement.
        Il appartient au demandeur de réclamer un complément d'information ou de reformuler sa question.

        D'autre part, je ne connais pas VBA, et je dois me débrouiller avec les fonctions, formules et manipulations classiques d'Excel.

        En prenant l'hypothèse que les extensions ont au maximum 4 caractères après le dernier point (et en supposant qu'il y au moins 2 caractères entre l'avant-dernier et le dernier points) ma formule en C devient
        =STXT(DROITE(B:B;5);TROUVE(".";DROITE(B:B;5));6)

        Tu préfères ?
        0
      2. Utilisateur anonyme > Raymond PENTIER Messages postés 58213 Date d'inscription   Statut Contributeur Dernière intervention  
         
         
        Bonsoir Raymond et Philou,

        Je rappelle les 2 hypothèses de Raymond (dans son message #6) :

        A)  « En prenant l'hypothèse que les extensions ont au maximum
              4 caractères après le dernier point »

        B)  « en supposant qu'il y a au moins 2 caractères entre l'avant-
              dernier et le dernier points »

        ================================

        J'ai testé la dernière formule de chacun de vous ; voici ce que j'ai constaté :

        1) Vos formules ne marchent pas si l'extension a 5 caractères ou plus,
            mais c'est bien conforme à l'hypothèse A) ; comme je ne pense pas
            qu'en pratique, on puisse rencontrer ce cas, ça ne devrait donc pas
            poser de problème.

        2) Vos formules ne marchent pas s'il y a un seul caractère entre l'avant-
            dernier point et le dernier point, mais c'est conforme à l'hypothèse B) ;
            dans la pratique, je ne pense pas que le cas puisse se rencontrer,
            mais cette fois, j'en suis moins sûr que pour le cas 1) ; donc si jamais
            ça arrive : plantage ! Exemple : pour « nomdedomaine.org.e.fr »,
            on a « e.fr » au lieu de « .fr ».

        3) Ça ne marche pas s'il y a un seul caractère après le dernier point ;
            cette fois, ce n'était pas dans les hypothèses de départ A) et B) ;
            mais même sans en être tout à fait sûr, je crois qu'en pratique,
            ça n'arrive jamais. Exemple : pour « nomdedomaine.org.eu.a »,
            on a « eu.a » au lieu de « .a ».

        4) Pour « nomdedomaine.org.eu.fr », c'est ok : ça sort bien « .fr »

        5) S'il y a plus d'un point ( . ) : hormis les cas 1) à 3), vos formules marchent
            très bien grâce à vos utilisations de DROITE(B:B;5)

        6) S'il y a un seul point ( . ) : vos formules marchent très bien, dans tous
            les cas
        , pour une extension de 1 à 4 caractère(s) ; et oui, même pour
            un seul caractère : « nomdedomaine.a » retourne bien « .a »

        7) Pour l'Audit de formules intégré à Excel, c'est gratuit ; pour mon propre
            Audit de formules, c'est 100 € chacun. Je plaisante, inutile de sortir vos
            porte-monnaies !  😉

        ================================

        Par acquis de conscience, j'ai vérifié ceci dans Excel 2003 et dans Excel 2007 :

        1) Est-ce qu'un paramètre de la fonction TROUVE() permet de faire
        une recherche depuis la fin ? Hélas : NON.

        2) Est-ce qu'un paramètre de la fonction CHERCHE() permet de faire
        une recherche depuis la fin ? NON plus.

        3) Y a-t-il une fonction retournant une chaîne de caractères inversée ? NON.

        Peut-être dans une des versions ultérieures à 2007 ?

        ----------------------------------------------------------

        Remarques

        a) TROUVE() est sensible à la casse (majuscules ou minuscules) alors que
            CHERCHE() ne l'est pas ; mais comme on recherche un point ( . ), ça ne
            fait aucune différence.

        b) VBA a une fonction InStrRev() qui retourne la position d'une chaîne
            de caractères dans une autre à partir de la fin ; et bien sûr, ça aide
            beaucoup pour faire cet exercice !

        ================================

        Conclusion

        La méthode VBA marche avec certitude dans tous les cas de figure, y compris
        les cas 1) à 3) notés au tout début, c'est pourquoi je continue à la préférer.

        Mais pour quiconque veux absolument éviter le VBA et utiliser uniquement
        des formules, celles que vous avez données ont tout l'air d'être les meilleures.

        Une seule petite nuance : comme dans chaque formule DROITE(B:B;5) apparaît
        2 fois, j'aurai utilisé une colonne supplémentaire pour le calcul de DROITE(B:B;5),
        afin d'éviter un double calcul et donc une double recherche.

        Cordialement.  😊
         

        P.S. Je rappelle que la macro de Philou retourne les mêmes résultats que
        ceux de Raymond, à ceci près qu'il n'y a pas de point devant l'extension ;
        mais ça suffit pour pouvoir obtenir un tri correct.
         
        0
      3. PHILOU10120 Messages postés 6463 Date d'inscription   Statut Contributeur Dernière intervention   835 > Utilisateur anonyme
         
        Merci pour toutes ces information, mais comme dit Raymond on répond à la question du demandeur
        Un point c'est tout! Comme vous avez pu le voir j'ai demandé des précision, dans mon poste un pour éviter tous les problèmes que vous citez.
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. PHILOU10120 Messages postés 6463 Date d'inscription   Statut Contributeur Dernière intervention   835
     
    Bonjour

    Essayer ceci

    =DROITE(DROITE(B:B;5);5-TROUVE(".";DROITE(B:B;5)))
    0
    1. Utilisateur anonyme
       
      Bonsoir PHILOU10120, je t'invite à lire mon message #8,
      qui est pour Raymond PENTIER et toi. Cordialement.  😊
      0
  7. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    Bonjour à tous,

    Pour avoir l'extension du domaine par formule :
    =STXT(A2;MAX((STXT(A2;LIGNE(1:99);1)=".")*LIGNE(1:99))+1;99)

    formule matricielle à valider avec shift+ctrl+entrée

    eric

    En essayant continuellement, on finit par réussir. 
    Donc plus ça rate, plus on a de chances que ça marche.(les Shadoks)
    En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
    0
  8. Julie06220
     
    Merci à tous vos réponses

    Tout cela me semble bien compliqué!

    J'ai du mal m'exprimer.

    Je voudrai qu'excel tri ma colonne en inversant le SENS. Depuis le dernier caractère du la cellule.
    dans les anciens excel, cette fonction se trouvait facilement dans la fonction tri. L'on avait de A à Z ou Z à A et sens gauche à droite ou droite à gauche. C'est exactement cela que je recherche.
    Merci
    Julie
    0
    1. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Bonjour,

      Non, excel n'a jamais offert la possibilité de trier depuis le dernier (ou xième) caractère.
      Il faut extraire l’extension dans une colonne et faire le tri sur cette colonne. Ca n'a rien de compliqué.
      eric
      0
    2. Utilisateur anonyme
       
      Bonjour Julie,

      J'ai l'impression que vous n'avez pas lu mon message #3 et mon message #10,
      et je pense qu'ils peuvent être une solution à votre problème.

      Pouvez-vous regarder le fichier Excel 2003 « Exercice pour julie06220 (optimisé) »
      et me dire ce que vous en pensez ? Il suffit de charger ce fichier, et d'appuyer sur
      < Ctrl >< t > pour lancer le tri. Merci d'avance.

      Bien sûr, si je me suis trompé et que ça ne résout pas ce que vous voulez,
      n'hésitez pas à me le dire. Idem si ça convient, mais qu'il faut rajouter des
      petites adaptations.

      En attente de vous lire prochainement.

      Cordialement.  😊
       
      0
    3. Raymond PENTIER Messages postés 58213 Date d'inscription   Statut Contributeur Dernière intervention   17 482
       
      Non, Julie ! Certainement pas !

      Aucune version d'aucun tableur n'a jamais, jusqu'ici, permis de trier en partant du dernier caractère !
      Quand tu écris "L'on avait de A à Z ou Z à A ..." tu confonds avec tri alphabétique croissant (de A à Z) ou décroissant (de Z à A) ; mais toujours par rapport aux premiers caractères !

      Et oui, effectivement c'est compliqué, puisque tu veux une manipulation qui n'existe pas, qui n'a jamais été prévue, et dont pas grand-monde ne se sert ...
      0
  9. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    bonjour,

    pour l'instant, j'ai programmé en VBa une méthode rapide donnant la liste e des sites comportant que les suffixes de ta liste

    Edit 11h55: supprimé point1 ; j'avais mal lu la demande initiale

    2: il y a t il d'autres données dépendantes de l'URL dans d'autres colonnes ?

    3/ D'autre part, compte tenu du nombre de lignes, ce serait sympa que tu nous mettes un extrait de ta liste avec 3000 ou 4000 lignes avec la colonne où elle est située. cela facilitera grandement le travail. Merci d'avance.
    pour cela
    Mettre le classeur sans données confidentielles en pièce jointe sur https://www.cjoint.com/
    et coller le raccourci par un clic droit sur le lien proposé dans le message de réponse

    Dans l’attente

     Michel
    0
  10. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour

    reprise pour essai sur 80000 lignes
    quelques modifications sur les codes car refus de la fonction transpose au delà de 65000 lignes.... :-/
    ce qui annule ma tartine précédente

    test rapidité:
    80000 lignes en >=1 seconde

    http://www.cjoint.com/c/FFfiKOyd0ft

    0