[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 -
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
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:
- [Excel] Masquer les séries d'élément en doublon
- Liste déroulante excel - Guide
- Mise en forme conditionnelle excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Comment masquer les amis sur facebook - Guide
16 réponses
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
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
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
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
Bonjour
Je suis loin d'avoir tout compris
Un début (ou plutôt deux débuts)
https://www.cjoint.com/?3EAqGkAs24s
Cdlmnt
Je suis loin d'avoir tout compris
Un début (ou plutôt deux débuts)
https://www.cjoint.com/?3EAqGkAs24s
Cdlmnt
Et pour aller un peu plus loin
https://www.cjoint.com/?3EBpKIQlNHJ
Cdlmnt
https://www.cjoint.com/?3EBpKIQlNHJ
Cdlmnt
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 ? :)
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 ? :)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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
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
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é
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é
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
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
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 :)
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 :)
Désolé,
je ne peux pas lire ton fichier enregistres-le au format excel 2003 avant de l'envoyer (fichier/enregistrer sous/Type .... .xls)
je ne peux pas lire ton fichier enregistres-le au format excel 2003 avant de l'envoyer (fichier/enregistrer sous/Type .... .xls)
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
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
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
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
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
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
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
Salut JvDo
En attendant les 22 Mo, tu peux essayer avec celui ci
http://www.cjoint.com/c/EFonkH5CsPg
Cdlmnt
En attendant les 22 Mo, tu peux essayer avec celui ci
http://www.cjoint.com/c/EFonkH5CsPg
Cdlmnt
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
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
> 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
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
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
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
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
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
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
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
Et tu as essayé sur ton dernier fichier ?
https://www.cjoint.com/c/EFpujRR4Ymg
https://www.cjoint.com/c/EFpujRR4Ymg
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
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
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
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
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
>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
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).
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).
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) :
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)
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) :
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) :
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
> 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
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
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
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 :)
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