[Excel] Masquer les séries d'élément en doublon

gillesguillaumes Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   -  
JvDo Messages postés 1978 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour tout le monde,

Je fais appel à la communauté de CCM pour un probleme :) En éspérant trouver des idées ou une nouvelle vision du probleme afin de trouver une solution :)

Dans le cadre d'un travail, je dois effectuer un écrémage de données, j'aimerais savoir comment je pourrais masque les series en doublon.

Voici un extrait de mon tableau,

A: Le nom du trajet (ce nom change pour chaque nouvel série)
B: ID de l'arret
C: Le l'ordre des arret du bus dans le trajet
D: le nom de la ligne de bus

A B C D
86AVL 200415009 1 AVL1
86AVL 200415010 2 AVL1
86AVL 200415006 3 AVL1
86AVL 200415003 4 AVL1
86AVL 200405035 5 AVL1
86AVL 200405026 6 AVL1
86AVL 200405023 7 AVL1
85AVL 200415009 1 AVL1
85AVL 200415010 2 AVL1
85AVL 200415006 3 AVL1
85AVL 200415003 4 AVL1
85AVL 200405035 5 AVL1
85AVL 200405026 6 AVL1
85AVL 200405023 7 AVL1
300AVL 200405035 1 AVL1
300AVL 200415003 2 AVL1
300AVL 200415006 3 AVL1
300AVL 200415012 4 AVL1
300AVL 200415009 5 AVL1
353AVL 200405035 1 AVL1
353AVL 200415003 2 AVL1
353AVL 200415006 3 AVL1
353AVL 200415012 4 AVL1
353AVL 200415009 5 AVL1
376AVL 200405035 1 AVL10
376AVL 200405026 2 AVL10
376AVL 200405023 3 AVL10
376AVL 200405020 4 AVL10
376AVL 200405005 5 AVL10
376AVL 200419013 6 AVL10
376AVL 200410005 7 AVL10
376AVL 200410003 8 AVL10
376AVL 200410004 9 AVL10
384AVL 200405035 1 AVL10
384AVL 200405026 2 AVL10
384AVL 200405023 3 AVL10
384AVL 200405020 4 AVL10
384AVL 200405005 5 AVL10
384AVL 200419013 6 AVL10
384AVL 200410005 7 AVL10
384AVL 200410003 8 AVL10
384AVL 200410004 9 AVL10



Les suites varie de 2 arrets à 52, et j'aimerais savoir comment je pourrais détecter les différentes séries pour afficher chaque sorte de série, sans doublon

pouvez vous é'aider s'il vous plait ? m'aiguiller sur les formule qui pourrais m'aider ?

Merci d'avance pour votre aide, agreeable journée à tout le monde.

G Guillaume
A voir également:

16 réponses

ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Bonjour

Les suites varie de 2 arrets à 52, et j'aimerais savoir comment je pourrais détecter les différentes séries pour afficher chaque sorte de série, sans doublon
Peux tu expliquer un peu et donner un exemple de résultat attendu

RQ. Peut être un filtre automatique ?

Cdlmnt
0
gillesguillaumes Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
bonjour,

merci pour votre réponse rapide,
Par rapport à l'extrait au dessusm voice le résultat attend
86AVL 200415009 1 AVL1
86AVL 200415010 2 AVL1
86AVL 200415006 3 AVL1
86AVL 200415003 4 AVL1
86AVL 200405035 5 AVL1
86AVL 200405026 6 AVL1
86AVL 200405023 7 AVL1
300AVL 200405035 1 AVL1
300AVL 200415003 2 AVL1
300AVL 200415006 3 AVL1
300AVL 200415012 4 AVL1
300AVL 200415009 5 AVL1
384AVL 200405035 1 AVL10
384AVL 200405026 2 AVL10
384AVL 200405023 3 AVL10
384AVL 200405020 4 AVL10
384AVL 200405005 5 AVL10
384AVL 200419013 6 AVL10
384AVL 200410005 7 AVL10
384AVL 200410003 8 AVL10
384AVL 200410004 9 AVL10

Les suites des ID arret, n'apparaissent qu'une fois :)
pourquoi le filte ne foncitonne pas ?
trop de donnée différentes pour au'il soit util :/

Je travail sur une modele de structure d'automate pour m'aider à faire la formule, mais je ne sais par ou chercher :)

Merci pour l'attention portée à ma requète
0
Excel-worker Messages postés 589 Date d'inscription   Statut Membre Dernière intervention   58
 
Bonjour,

Même solution, sauf que cette fois tu masque les colonnes doublons depuis le filtre.

P.S : petite erreur dans ton résultat car
L'ID ici : 384 AVL 200405035 1 AVL10 est présente dans 376AVL 200405035 1 AVL10

Du coup, quand l'ID est identique on garde le premier résultat ou le second ?

Fichier : https://www.cjoint.com/c/EEwqClfZ5zy

Cdlt
0
gillesguillaumes Messages postés 13 Date d'inscription   Statut Membre Dernière intervention   > Excel-worker Messages postés 589 Date d'inscription   Statut Membre Dernière intervention  
 
Bonsoir,

Vous mettez le doigt sur le problème.

J'ai essayé votre solution sur votre mon dossier excel complet. Cela fonctionne très bien pour les lignes qui font tout le temps le trajet complet, comme l'extrait :) et je vous remercie déjà pour cette aide, et directement j'ai retiré le nom du trajet du concatener car tout étais OK et non Doublon.

Mais comme vous dites parfois j'ai des trajet de bus qui modifie, je m'explique;

Le trajet se compose de 8 arrêts ; 1, 2, , 4 , 5, 6, 7, et 8
Il y a deux trajet :
Trajet A qui fait 1,2,3,4,5,6,7 et 8
Trajet B qui fait 1,2,3 et 4

Exemple :
86AVL 200415009 1 AVL1
86AVL 200415010 2 AVL1
86AVL 200415006 3 AVL1
86AVL 200415003 4 AVL1
86AVL 200405035 5 AVL1
86AVL 200405026 6 AVL1
86AVL 200405023 7 AVL1
85AVL 200415009 1 AVL1
85AVL 200415010 2 AVL1
85AVL 200415006 3 AVL1
85AVL 200415003 4 AVL1
85AVL 200405035 5 AVL1
85AVL 200405026 6 AVL1
85AVL 200405023 7 AVL1
89AVL 200415009 1 AVL1
89AVL 200415010 2 AVL1
89AVL 200415006 3 AVL1
89AVL 200415003 4 AVL1
89AVL 200405035 5 AVL1
89AVL 200415009 1 AVL1
89AVL 200415010 2 AVL1
89AVL 200415006 3 AVL1
89AVL 200415003 4 AVL1
89AVL 200405035 5 AVL1

C'est la que la formule atteint sa limite; le trajet B n'apparaît pas car il a tout identique avec le trajet A ; Le même ID, même numéro d'arrêt et même nom de ligne, seul le nom du trajet change.

Alors j'ai essayé de rajouter des donnée plus spécifique au trajet dans la cellule du concatener, mais cela ne suffit pas.

j'ai deux idées, la première c'est de travaillé sur le nom du trajet, c'est à dire de montrer les trajets qui n'apparaissent que X fois et faire le tris doublons par filtre que dans ceux affiché ?

J'ai regarder les possibilités du filtre mais pas je ne trouve par le classement par occurrence, est ce possiblte ? avez vous une idées ?

ET l'autre proposition c'est que excel créer "ferme" les série, chaque fois que le 1 apparaît, ils mets en bloque la série, et donc, on travaillerais par bloc.. et quand le bloc correspond à 100% , point de vue longueur et donnée, avec un autre, il est défini comme doublon, sinon comme unique. Dans cette optique je tombe sur des maccro .. vu mon niveau d'info, ca me fait peur :)


Merci de m'aider dans mes démarche et je vous remercie Excel-Worker :)
0
Excel-worker Messages postés 589 Date d'inscription   Statut Membre Dernière intervention   58
 
Bonjour,

Effectivement, ça devient de plus en plus complexe, je préfère laisser ma place à un autre contributeur. Les macros, ce n'est plus mon domaine.

Cdlt
0
Excel-worker Messages postés 589 Date d'inscription   Statut Membre Dernière intervention   58
 
Bonjour,

Fichier : https://www.cjoint.com/c/EEwpZoj7shm

Voici un fichier, avec une formule permettant de te dire si la ligne est ok (pas de doublon ailleurs) sinon affiche doublon.

Suffira de filtrer la colonne avec mot "doublon" puis tu sélectionne les lignes et masquer.

Cdlt
0
gillesguillaumes Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour,

Merci de l'attention portée à ma demande :)

Je n'avais pas pensées de cette manière :) j'y travail de suite.

Merci bcp
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Bonjour

Je suis loin d'avoir tout compris
Un début (ou plutôt deux débuts)
https://www.cjoint.com/?3EAqGkAs24s

Cdlmnt
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Et pour aller un peu plus loin
https://www.cjoint.com/?3EBpKIQlNHJ

Cdlmnt
0
gillesguillaumes Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjoue ccm81,


Merci de l'attention porté à mon problème et merci de m'aider :)

Pour répondre à tes questions, quand un bloc est fini quand la numérotation recommence à 1, et plus rien ne dois être apporté.

Ensuite, ce qui rend un bloc similaire c'est le nombre d'arrets, le nom de la ligne et surtout la même suite des ID.

Le probleme c'est que certain blocs ont en commun une suite des d'id avec la même numérotation.

Pourquoi choisir un bloc plus que l'autre si ceux sont identique ? Ca, cela m'importe peu, tant que chaque différent type de trajet est représenter une et uniquement une fois

J'ai l'excel complet, qui lourd et avec plus d'info si tu souhaite jeté un oeil pour mieux comprendre :)

Pour l'excel que tu as envoyé, le résultat est correcte, comment te sert tu des macro ? Connais tu un bon tuto ? :)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Bonjour

Pour aller un peu plus loin, peux tu envoyer un bout de fichier, au format excel 2003, un peu plus conséquent (environ 200 lignes) pour voir si le résultat est bien celui attendu.

Cdlmnt
0
gillesguillaumes Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
bonjour CCM81,

Merci pour votre réponse, j'ai essayé d'éffectuer le transfert via cjoint... cela ne fonctionnnait pas.

C'est impossible de sélectionner 200 lignes qui peuvent reprandre tout les différentes difficulté du dossier donc je vous envois la totalité.

http://we.tl/Ln4AWygF9x

Voici le liens, il s'éffacera dans 7 jours.

Savez vous m'expliquer votre raisonnement pour la maccro, comment vous vous y prenez car je suis vraiment curieux quant au point de vue des macros :)

Mille merci du temps que vous me consacré
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
1. Voici le liens, il s'éffacera dans 7 jours.
Désolé, mais 22Mo mon viel excel 2003 ne va pas y résister
2. C'est impossible de sélectionner 200 lignes qui peuvent reprandre tout les différentes difficulté du dossier
Et avec quelques milliers de lignes ? C'est juste pour voir ce que ça donne
3. j'ai essayé d'éffectuer le transfert via cjoint... cela ne fonctionnnait pas.
cjoint.com est limité à 8 Mo !
Va sur cjoint.com/ sélectionnes 4 jours/ Parcourir/sélectionnes ton (bout de) fichier/Ouvrir et en bas de la page tu as Créer le lien. Il ne te reste plus qu'à le copier ici
4. Pour le test en vrai grandeur, je peux t'expliquer comment implanter et lancer la macro dans ton fichier, et éventuellement la commenter

Cdlmnt
0
gillesguillaumes Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
bonjour CCM81,

Voici le fichier réduit à 10 000 lignes, le fichier de base comporte plus 320 000 lignes, cela reste dur de trouver un bon échantillons j'ai vraiment 4 lignes au hasard :)
http://www.cjoint.com/c/EFbrHujt20c

Je suis preneur de vraiment toute information par rapport aux macros :) et le raisonnement m'intéresse aussi :)
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Désolé,
je ne peux pas lire ton fichier enregistres-le au format excel 2003 avant de l'envoyer (fichier/enregistrer sous/Type .... .xls)
0
gillesguillaumes Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
Bonsoir ccm81,

Je suis vraiment désolé, j'ai intervertis les documents :)
http://www.cjoint.com/c/EFbtKhwdstc

Voici :)
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Je ne sais pas ce qui se passe, mais ton fichier est illisible, tu es sûr de ne pas l'avoir enregistré au format .xlt au lieu de .xls ? A moins que la nouvelle mouture de cjoint.com l'ait abimé !

1. Dans ton fichier test (10 000 lignes)
Alt-F11 pour entrer dans l'éditeur vba
2. Insertion/Module va te créer un Module1
3. Tu colles tout le code ci-dessous
4. Tu modifies éventuellement les valeurs des constantes en début de code selon ta configuration
5. Retour dans la feuille.
6. Tu enregistres (prudence toujours)
7. Pour lancer la macro deux solutions
7.1. Tu reviens dans l'éditeur vba (Alt-F11), tu mets le curseur dans le code de la procédure OK2. Dans le menu, Exécution/Exécuter sub ..
7.2. Dans la feuille. Outils/Macro/Macros et tu choisis OK2/Exécuter

Option Explicit

' les valeurs des constantes sont à modifier selon ta configuration
' caractéristiques de la Feuille Source
Public Const FS = "Feuil1"    ' nom
Public Const lidebFS = 2      ' première ligne des données
Public Const codebFS = 1      ' première colonne des données
Public Const nbcoFS = 4       ' nombre de colonnes des données
Public Const sep = " "        ' ne pas toucher
' caractéristiques de la Feuille But
Public Const FB = "Feuil1"    ' nom
Public Const lidebFB = 2      ' première ligne des données
Public Const codebFB = 11     ' première colonne des données

' normalement tu n'as pas à toucher au code ci-dessous
Public Sub OK2()
Dim liFS As Long, lifinFS As Long, nuOA As Long, k As Long
Dim dico As Object, cle As String, valeur As String, cles, valeurs, nbcles As Long, nucle As Long
Dim licle As Long
Dim TR, TT, limax As Long, li As Long, liT As Long, nbliTR As Long, kk As Long
With Sheets(FS)
  lifinFS = .Cells(Rows.Count, codebFS).End(xlUp).Row
  Set dico = CreateObject("scripting.dictionary")
  liFS = lidebFS - 1
  licle = 31
  nbliTR = 0
  Do
    cle = ""
    Do
      liFS = liFS + 1
      valeur = .Cells(liFS, 1)
      For k = 2 To nbcoFS
        cle = cle & sep & .Cells(liFS, codebFS + k - 1).Value
      Next k
    Loop Until liFS = lifinFS + 1 Or .Cells(liFS + 1, codebFS + 2).Value = 1
    cle = Trim(cle)
    If Not dico.exists(cle) Then
      dico.Add cle, valeur
      nbliTR = nbliTR + .Cells(liFS, codebFS + 2)
    End If
  Loop Until liFS >= lifinFS
  nbcles = dico.Count
  cles = dico.keys
  valeurs = dico.items
  ReDim TR(1 To nbliTR, 1 To nbcles + 1)
  liT = 1
  For k = 1 To nbcles
    TT = Split(cles(k - 1), " ")
    limax = UBound(TT)
    For li = 0 To limax Step (nbcoFS - 1)
      TR(liT, 1) = valeurs(k - 1)
      For kk = 1 To (nbcoFS - 1)
        TR(liT, kk + 1) = TT(li + kk - 1)
      Next kk
      liT = liT + 1
    Next li
  Next k
  Sheets(FB).Cells(lidebFB, codebFB).Resize(nbliTR, nbcoFS).Value = TR
End With
End Sub

Tu vois ce que ça donne
RQ. Vois si ton fichier test est bien au format .xls et renvoies le via un autre site peut être http://dl.free.fr

Bon courage
0
gillesguillaumes Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour Ccm81,

Je reviens vers vous avec beaucoup de retard, et j'en suis désolé, ma réponse ne sais pas envoyé apparemment.

Voici ce qui se passe quand je met la macro : Message d'erreur d'exécution '9':
l'indice n'appartient pas à la sélection. Pour résoudre le problème, il surligne la ligne suivante : TR(liT, kk + 1) = TT(li + kk - 1) (mise en @ dans le code ci dessous)

Je ne comprend absolument rien à tout ceci, et je suis totalement perdus. Etes vous toujours d'accord de bien vouloir m'aider ?

Je vous remercie d'avance


Option Explicit

' les valeurs des constantes sont à modifier selon ta configuration
' caractéristiques de la Feuille Source
Public Const FS = "Feuil1" ' nom
Public Const lidebFS = 2 ' première ligne des données
Public Const codebFS = 1 ' première colonne des données
Public Const nbcoFS = 4 ' nombre de colonnes des données
Public Const sep = " " ' ne pas toucher
' caractéristiques de la Feuille But
Public Const FB = "Feuil1" ' nom
Public Const lidebFB = 2 ' première ligne des données
Public Const codebFB = 11 ' première colonne des données

' normalement tu n'as pas à toucher au code ci-dessous
Public Sub OK2()
Dim liFS As Long, lifinFS As Long, nuOA As Long, k As Long
Dim dico As Object, cle As String, valeur As String, cles, valeurs, nbcles As Long, nucle As Long
Dim licle As Long
Dim TR, TT, limax As Long, li As Long, liT As Long, nbliTR As Long, kk As Long
With Sheets(FS)
lifinFS = .Cells(Rows.Count, codebFS).End(xlUp).Row
Set dico = CreateObject("scripting.dictionary")
liFS = lidebFS - 1
licle = 31
nbliTR = 0
Do
cle = ""
Do
liFS = liFS + 1
valeur = .Cells(liFS, 1)
For k = 2 To nbcoFS
cle = cle & sep & .Cells(liFS, codebFS + k - 1).Value
Next k
Loop Until liFS = lifinFS + 1 Or .Cells(liFS + 1, codebFS + 2).Value = 1
cle = Trim(cle)
If Not dico.exists(cle) Then
dico.Add cle, valeur
nbliTR = nbliTR + .Cells(liFS, codebFS + 2)
End If
Loop Until liFS >= lifinFS
nbcles = dico.Count
cles = dico.keys
valeurs = dico.items
ReDim TR(1 To nbliTR, 1 To nbcles + 1)
liT = 1
For k = 1 To nbcles
TT = Split(cles(k - 1), " ")
limax = UBound(TT)
For li = 0 To limax Step (nbcoFS - 1)
TR(liT, 1) = valeurs(k - 1)
For kk = 1 To (nbcoFS - 1)
@@@@ TR(liT, kk + 1) = TT(li + kk - 1) @@@@
Next kk
liT = liT + 1
Next li
Next k
Sheets(FB).Cells(lidebFB, codebFB).Resize(nbliTR, nbcoFS).Value = TR
End With
End Sub
0
JvDo Messages postés 1978 Date d'inscription   Statut Membre Dernière intervention   859
 
Bonjour,

Je redécouvre cette discussion mais je ne peux même pas tester la macro de ccm81 (que je salue) vu que les fichiers ne sont plus accessibles.

I'm frustré.

cordialement

PS : 22Mo ne me gênent pas pour un fichier
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Salut JvDo

En attendant les 22 Mo, tu peux essayer avec celui ci
http://www.cjoint.com/c/EFonkH5CsPg

Cdlmnt
0
JvDo Messages postés 1978 Date d'inscription   Statut Membre Dernière intervention   859
 
Bonjour ccm81

voilà une approche par formule : https://www.cjoint.com/c/EFonxOqecuW

j'utilise MCONCAT() de MoreFunc.
Je ne sais pas si sa limite à 254 caractères retournés pose problème sur le fichier global.
Si oui, il faudra la redévelopper.

cordialement
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
> JvDo

Pas mal du tout, ça me fait penser qu'il va falloir que je me décide à installer/explorer Morefonc.

RQ. La solution par formules, de plus matricielles, sur un fichier de 22 Mo (320 000 lignes), ça va sérieusement alourdir le fichier et le calcul va certainement prendre beaucoup de temps et de ressources.
Ou alors, il va falloir exploiter les outils de Morefonc depuis vba

Cdlmnt
0
gillesguillaumes Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour à CCM81 et JvDo,

Merci encore de toujours vous intérressé à mon sujet.


voici le fichier http://we.tl/yYyGcwfTg9. elle comprend les 320 000 lignes


Qu'est ce MoreFunc, sur google on propose différent site pour le télécharger, mais les explication sont faible. C'est un complément de Excel ?

Je vous remerci de votre aide
0
JvDo Messages postés 1978 Date d'inscription   Statut Membre Dernière intervention   859
 
Bonjour,

Le point est de trop dans l'url du lien.

cordialement
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
1. MoreFonc est une macro complémentaire (.xla) qui ajoute des fonctions à celles d'excel. A installer (Outils/Macros complémentaires, ...) sur le poste où ces nouvelles fonctions sont utilisées.
2. 320 000 lignes, mon vieil excel 2003 ne va pas supporter, mais je serai quand même curieux de voir ce que ça donne pour 10 000 lignes, si tu veux bien m'envoyer un extrait au format excel 2003

Cdlmnt
0
gillesguillaumes Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
depuis mon ordinateur de travail je ne sais le changer le document, j'ai fait un "mixte" de certaine grosse possibilité qu'on peut retrouver dans mon fichier originel :)
voici un fichier test plus complet :
http://www.cjoint.com/c/EFprqc5kVgw

J'ai beau essayer avec la macro que vous m'avez passer, pourquoi ne fonctionne t'elle pas ? A quoi correspond ctte ligne dans votre code ? " TR(liT, kk + 1) = TT(li + kk - 1)"

Merci pour vos réponses et votre aide
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Et tu as essayé sur ton dernier fichier ?
https://www.cjoint.com/c/EFpujRR4Ymg
0
gillesguillaumes Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour ccm81,

Oui bien entendu j'ai essayé sur le fichier que je vous ai passer, mais chaque fois, la même ligne est erroné :/

Est ce que je fait une erreur dans la manoeuvre ? Je copie le code que vous avez transcrit
0
JvDo Messages postés 1978 Date d'inscription   Statut Membre Dernière intervention   859
 
Bonsoir,

après 25 plantages pour ressources insuffisantes, abandon des formules matricielles et copier/collage valeur à chaque étapes de mon travail manuel, j'arrive à 1138 trajets différents.
http://www.cjoint.com/c/EFpxRDZrC0K
c'est du xls.

cordialement
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Bonjour

Après quelques bugs corrigés
un essai sur le fichier envoyé par JvDo (merci à toi pour la bête en .xls)
https://www.cjoint.com/c/EFqj4E37S7g

RQ. Il reste un petit souci sur la taille du tableau résultat (réglé bourrin vite fait, mais je vais y réfléchir)

Cdlmnt
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Par contre je ne trouve que 1130 trajets différents
0
gillesguillaumes Messages postés 13 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour à vous CCM81 et vous JvDo,
>JvDo
>Ccm81

c'est réellement énorme ce que vous avez fait ! Et je vous remercie :) vous venez de me faire avancer de quelque dizaine d'heure de boulot :)

Par contre, sans abuser de vous. Pouvez m'expliquer comment vous avez fait ?
Car je ne comprend réellement pas le code :) et c'est deux manière différente ou la même avec des choses

Savez vous expliquer le raisonnement ?


Encore un grand merci pour votre aide, je suis en train de calculer le nombre de trajet différent pour vérification :)

Je vous remercie encore
0
ccm81 Messages postés 10909 Date d'inscription   Statut Membre Dernière intervention   2 433
 
Le code commenté
https://www.cjoint.com/c/EFqm0yq3rtg

Question. Y a t' il des trajets-doublons dans cette feuille ?

RQ1. J'ai une différence de 8 trajets avec la version "feuille" de JvDo
RQ2. Si je n'ai pas fait d'erreur, le nombre total de trajets est 1308 (doublons compris).
0
JvDo Messages postés 1978 Date d'inscription   Statut Membre Dernière intervention   859
 
Bonjour à tous,

> ccm81 : je t'ai mis le fichier complet en csv zippé au cas où tu voudrais jouer plus loin.
https://www.cjoint.com/c/EFrltUsFVnZ


plus généralement, voici la séquence manuelle qui me fait aboutir à 1 138 séquences uniques :

Quelques titres de colonnes pour se repérer : Colonne L : doublons, Colonne M : séquences, Colonne N : toto
1) passer l'option de recalcul de la feuille en Calcul manuel
2) contrôle préalable, test unicité trip_id, en colonne doublons (L2 puis recopie vers le bas) :
=SI(B2<>B3;SOMMEPROD(--(B2=B3:$B$326414));"")
.
F9 pour recalculer. Résultat : OK. Effacer colonne L
3) construction des séquences par concaténation : en colonne séquences (M2 puis recopie vers le bas)
=SI(B2=B1;M1;"")&E2&"|"&F2&"|"

F9 pour recalculer
copier/collage spécial des séquences
4) identification des séquences complètes, dans la colonne doublons (L2 puis recopie vers le bas) :
=SI(B2<>B3;1;"")

F9 pour recalculer
copier/collage spécial des doublons
5) tri doublons croissant + séquences croissant pour avoir les séquences complètes de chaque trip_id en haut (les 1 de doublons) et triées pour identifier les doublons. 15 701 séquences complètes trouvées
6) identifier les séquences uniques, colonne toto (en N2 puis recopie vers le bas) :
=SI(L2<>1;"";SI(M2<>M1;1;""))
. 1 138 séquences uniques identifiées
F9 pour recalculer
copier/collage spécial colonne N
tri croissant sur N + séquences croissant pour avoir les séquences complètes uniques , chacune recouvrant plusieurs trip_id bien sûr. 1 138 séquences complètes uniques trouvées
7) Fin du traitement manuel. Repasser en calcul automatique. Les 1 138 séquences uniques sont en lignes 2 à 1 139 (présence des 1 colonnes N)

cordialement
0