Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Claude5

XLDnaute Occasionnel
Bonjour à tous,

je voudrais obtenir un classement de données un peu particulier. En PJ le fichier, une suite de données qui pour certaines ont un lien et d'autres non. Pour clarifier, j'ai des données programmées qui doivent correspondrent à des données réalisés ou bien des données programmées non réalisées ou bien des données réalisées non programmées. Je n'ai aucune idée si cela est réalisable.

Merci à vous/Claude
 

Pièces jointes

Re : Tri données

mais sur base de quoi retrouve-t-on 2 groupes sur la droite (avec des données + nombreuses que la base à gauche ) ?
à part "databases" à gauche et "aot" à droite...en colonne M et S
ça manque de détails pour t'aider 🙁
 
Re : Tri données

Merci de votre réponse. Dans la partie Données de base j'ai toutes mes lignes. Je cherche à savoir si une REG, colonne A, et RMK DATABASE a été réalisée, donc je dois trouver dans la colonne REG, la même REG mais avec la RMK AOT. L'ensemble du fichier concerne l'aviation savoir si un vol programmé (DATABASE)a bien été réalisé (AOT) ou non et si vol réalisé (AOT) a fait une demande de programme.

Claude
 
Re : Tri données

Bonjour,
tes explications manquent pour le moins de clarté...
si je reprends ton exemple explique-nous comment savoir que :
OEHPG 14/12/2013 12:57 UKKK A AOT
OEHPG 14/12/2013 12:30 UKKK A DATABASE
OEHPG 14/12/2013 13:50 LFLP D AOT
OEHPG 14/12/2013 13:30 LSGG D DATABASE
doit donner
OEHPG 14/12/2013 12:30 UKKK A DATABASE | OEHPG 14/12/2013 12:57 UKKK A AOT
OEHPG 14/12/2013 13:30 LSGG D DATABASE | OEHPG 14/12/2013 13:50 LFLP D AOT
Dans cet exemple tu as 2 DATABASE et 2AOT
Si je me base sur la colonne Origin ICAO, je peux comprendre que le 1er AOT correspond au 1er DATABASE (UKKK tous les 2) mais je ne retrouve pas cette règle puisque j'ai LFLP pour le 3ème et LSGG pour le 4ème, donc sur quoi je dois me baser pour savoir qu'un DATABASE donné correspond à un AOT particulier ?
A+
 
Re : Tri données

Bonjour,

merci de ta réponse. Tu as raison, mais mes critères de rapprochement sont date et REG et A/D. Les Origin ICAO peuvent varier ce que je n'avais pas expliqué.

Es-tu sûr de toi pour la date ? Comme je vois que l'heure varie pour un même REG et A/D tu peux avoir un vol dont l'heure du DATABASE est par exemple 23:50 et l'AOT 00:30 et si c'est le cas la date n'est plus la même...donc ok pour le REG et A/D mais es-tu sûr de toi sur le fait que l'on doive prendre en compte la date comme critère ?
A+
 
Re : Tri données

Bonjour,
cf. fichier.
A+
Rebonjour,
j'ai actualisé mes données mais en cliquant sur la macro (Go) le résultat est surprenant. Et pour d'autres données, puis je faire un "refresh" et refaire tourner la macro? J'ai juste modifié le NLL en Nil. J'ai peut être semé le désordre...

Merci encore de votre aide. Claude
 

Pièces jointes

Re : Tri données

Bonjour,
il y avait une petite erreur (si tu avais fait tourner le code en mode pas à pas tu t'en serais aperçu tout seul).
Là j'ai l'impression que c'est ok (mais à toi de vérifier les résultats) :
Code:
Sub TriDonnées()
Dim Pl As Range, i As Long, j As Long, Lig As Long, Flag As Boolean
Application.ScreenUpdating = False
Set Pl = Range("A1").CurrentRegion
Set Pl = Pl.Offset(1).Resize(Pl.Rows.Count - 1, Pl.Columns.Count)
For i = 1 To Pl.Rows.Count
If Pl.Cells(i, Pl.Columns.Count).Offset(, 1) <> "traité" Then
    Lig = Lig + 1
    Flag = False
    Select Case Pl.Cells(i, Pl.Columns.Count).Value
    Case Is = "DATABASE"
        Range(Pl.Cells(i, 1), Pl.Cells(i, Pl.Columns.Count)).Copy Pl.Cells(Lig, Pl.Columns.Count).Offset(, 2)
        Pl.Cells(i, Pl.Columns.Count).Offset(, 1) = "traité"
    For j = Lig + 1 To Pl.Rows.Count
        If Pl.Cells(j, 1).Value & Pl.Cells(j, 2).Value & Pl.Cells(j, 5).Value = _
        Pl.Cells(i, 1).Value & Pl.Cells(i, 2).Value & Pl.Cells(i, 5).Value And Pl.Cells(j, Pl.Columns.Count) = "AOT" Then
            Range(Pl.Cells(j, 1), Pl.Cells(j, Pl.Columns.Count)).Copy Pl.Cells(Lig, Pl.Columns.Count).Offset(, Pl.Columns.Count + 2)
            Pl.Cells(j, Pl.Columns.Count).Offset(, 1) = "traité"
            Flag = True
            Exit For
        End If
    Next j
    If Flag = False Then Pl.Cells(Lig, Pl.Columns.Count).Offset(, Pl.Columns.Count + 2) = "Nil"
    Case Else
        Range(Pl.Cells(i, 1), Pl.Cells(i, Pl.Columns.Count)).Copy Pl.Cells(Lig, Pl.Columns.Count).Offset(, Pl.Columns.Count + 2)
        Pl.Cells(i, Pl.Columns.Count).Offset(, 1) = "traité"
        For j = i + 1 To Pl.Rows.Count
            If Pl.Cells(j, 1).Value & Pl.Cells(j, 2).Value & Pl.Cells(j, 5).Value = _
                Pl.Cells(i, 1).Value & Pl.Cells(i, 2).Value & Pl.Cells(i, 5).Value And Pl.Cells(j, Pl.Columns.Count) = "DATABASE" Then
                Range(Pl.Cells(j, 1), Pl.Cells(j, Pl.Columns.Count)).Copy Pl.Cells(Lig, Pl.Columns.Count).Offset(, 2)
                Pl.Cells(j, Pl.Columns.Count).Offset(, 1) = "traité"
                Flag = True
                Exit For
            End If
        Next j
        If Flag = False Then Pl.Cells(Lig, Pl.Columns.Count).Offset(, 2) = "Nil"
    End Select
End If
Next i
Range(Pl.Cells(1, Pl.Columns.Count + 1), Pl.Cells(Pl.Columns.Rows.Count, Pl.Columns.Count + 1)).ClearContents
Application.ScreenUpdating = True
End Sub
A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
539
Réponses
24
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…