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

Tri de colonnes multiples

  • Initiateur de la discussion Initiateur de la discussion zloupy
  • Date de début Date de début

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 !

Z

zloupy

Guest
bonjour à tous,

J'ai une liste de noms et des données journalières que j'aimerai lier.

colonne A : liste de tout les noms

colonnes BCD (il y en aura bien plus, mais c'est chaque fois une répétition des même)
la colonne B reprend une partie des noms de la colonne A
les données CD sont liées à la colonne B et doivent rester alignées


ex :

A

albert
bruno
charles
david
elodie
fabrice


etc etc...

B C D

albert 05:50 2
charles 06:10 3
fabrice 06:00 3


il faudrait qu'au final ça donne :



albert 05:50 2
bruno
charles 06:10 3
david
elodie
fabrice 06:00 3

si possible, sinon une répétition des noms (colonnes A et B) c'est pas grave, je cacherai la colonne B après coup

au final c'est pour tenir une liste des retards sur un mois (plus ou moins 80 noms, avec 3 colonnes générées par le système de badges par jour ouvrable).

Merci d'avance
 
Re : Tri de colonnes multiples

Une ligne = un mois, un fichier par mois? Bah met un fichier exemple un peu plus étoffé que l'autre, je pense que c'est le plus simple. A moins que ce soit un ligne = le mois d'UN employé? Mais bon j'ai l'impression qu'on tourne en rond là.
 
Re : Tri de colonnes multiples

Voilà le fichier épuré des noms

comme ça tu vois bien le principe (la version finale compte aussi le nombre de fois a l heure, en retard mais ça n'entre pas en compte).
 

Pièces jointes

Re : Tri de colonnes multiples

qques explications :

y a 3 possibilités pour le début de service : 06.00 - 08.30 - 13.00
le systeme de contrôle d'accès sort les dates sous un drôle de format, mais ça marche comme ça donc j'y touches pas
 
Re : Tri de colonnes multiples

Re,

J'ai un truc à te proposer mais faut vraiment que ton fichier respecte ce que tu m'as dit, la macro que je viens de faire fonctionnait pas parce que dans ta feuille "données nettoyées", y'a un endroit où y'avait pas le bon nombre de colonne pour chaque jour.De plus, dans cette même feuille, la 3ème colonne est vide aussi dans ton fichier d'origine? Parce qu'avec la macro actuelle, si elle fonctionne bien chez toi, t'auras quand même sur ta feuille de tri A B C B C B C B C etc car je lui ai dis de mettre à la suite or la 3ème colonne est vide, donc il colle l'entrée d'aprés à la suite de C. J'espère que j'suis assez clair.

VB:
Sub tri()
    Dim str As String, str2 As String
    
    Application.ScreenUpdating = False
    
    
    For k = 0 To Sheets("données nettoyées").Range("IV4").End(xlToLeft).Column Step 3
        For i = 1 To Sheets("feuille de tri").Range("A65536").End(xlUp).Row
            For j = 4 To Sheets("données nettoyées").Range("B65536").Offset(0, k).End(xlUp).Row
                If Trim(Sheets("feuille de tri").Range("A" & i).Value) = Trim(Sheets("données nettoyées").Range("B" & j).Offset(0, k).Value) Then
                    str = Mid(Sheets("données nettoyées").Range("B" & j).Offset(0, k).Address, 2, 1)
                    str2 = Mid(Sheets("données nettoyées").Range("B" & j).Offset(0, k + 2).Address, 2, 1)
                    Sheets("données nettoyées").Range(str & j & ":" & str2 & j).copy Destination:=Sheets("feuille de tri").Range("A" & i).Offset(0, Sheets("feuille de tri").Range("IV" & i).End(xlToLeft).Column)
                End If
            Next j
        Next i
    Next k
    

    Application.ScreenUpdating = True
    
End Sub

Dis moi ce que ça fait sur ton fichier.
WUTED
 
Dernière édition:
Re : Tri de colonnes multiples

sur le principe ça marches, mais ça copie BC alors que j'aurai besoin de CD (dont D est vide).

avec ça ça sera parfait!

(faut vraiment que je me mette au VB pour arriver a modifier ça moi même)...
 
Re : Tri de colonnes multiples

Ou alors, on vire les colonnes vides et on prend que les B, et je fais une macro de copie qui prend colonnes par colonnes, ça peut aussi se faire
 
Re : Tri de colonnes multiples

Re,

Ça devrait le faire avec celle-là j'suis pas vraiment fan de la façon de faire, mais le résultat devrait être là.

VB:
Sub tri()
    Dim str As String, str2 As String
    
    Application.ScreenUpdating = False
    
        For k = 0 To Sheets("données nettoyées").Range("IV4").End(xlToLeft).Column Step 3
        For i = 1 To Sheets("feuille de tri").Range("A65536").End(xlUp).Row
            For j = 4 To Sheets("données nettoyées").Range("B65536").Offset(0, k).End(xlUp).Row
                If Trim(Sheets("feuille de tri").Range("A" & i).Value) = Trim(Sheets("données nettoyées").Range("B" & j).Offset(0, k).Value) Then
                    str = Mid(Sheets("données nettoyées").Range("C" & j).Offset(0, k).Address, 2, 1)
                    str2 = Mid(Sheets("données nettoyées").Range("C" & j).Offset(0, k + 1).Address, 2, 1)
                    Sheets("données nettoyées").Range(str & j & ":" & str2 & j).copy Destination:=Sheets("feuille de tri").Range("A" & i).Offset(0, Sheets("feuille de tri").Range("IV" & i).End(xlToLeft).Column + 1)
                End If
            Next j
        Next i
    Next k
    Sheets("feuille de tri").Range("B1").EntireColumn.Delete
    
    Application.ScreenUpdating = True
    
End Sub

Bonne soirée,
WUTED
 
Re : Tri de colonnes multiples

ah ben non, c'est pire
ça me fait un gros paquet de données dans les colonnes B D F H J L et N, c'est tout...

j vais garder la version précédente et copier les colonnes C uniquement, ça marchera c'est déja ça.

Merci pour tout le temps que t'as passé dessus !
 
Re : Tri de colonnes multiples

Bizarre, j'avais un peu modifié ton fichier pour pouvoir faire un petit test, c'est-à-dire que j'avais mis deux nom test genre "pierre" et "laura" dans la colonne A de "feuille de tri" et je les avais disséminé par endroit dans "données nettoyées" et j'avais eu ce que je voulais, je te le met en pièce jointe...

EDIT : tu peux cliquer sur le bouton "Tri"
EDIT2 : j'avais remis l'ancien fichier en pièce jointe, c'est le bon maintenant.
 

Pièces jointes

Dernière édition:
Re : Tri de colonnes multiples

ben non, ça ne va pas, qd tu regarde, y a des jours ou "pierre" n'a pas d'heure de pointage, mais ça donne quand même une réponse 😱.
 
Re : Tri de colonnes multiples

Ah mais tu veux que sur la feuille tri apparaissent la présentation des jours comme "données nettoyées" ?! Par exemple si pierre a travaillé lundi et mardi, il faudrait un vide de 3 colonnes entre?
 
Re : Tri de colonnes multiples

Bonjour Zloupy,

J'ai un peu regardé et j'espère pouvoir aujourd'hui te proposer quelque chose qui réponde à ton besoin. Ma dernière version permet de, en tout cas sur mon fichier test et en respectant le fait qu'il y ait 3 colonnes par jour (nom/heure/indice de retard) sur tes données nettoyées,mettre les heures correspondantes ainsi qu'une cellule vide en face de chaque nom dans la liste, en les positionnant de façon à ce que cela corresponde au jour concerné. J'ai juste un soucis en recopiant les dates mais ça doit juste venir du format donc j'suis pas sûr que tu le rencontres et même si c'est le cas, je m'y pencherai dessus si le reste fonctionne déjà comme tu veux.

VB:
Sub tri()
    Dim str As String, str2 As String
    Dim dernCol As Integer
    
    Application.ScreenUpdating = False
    
    For k = 0 To Sheets("données nettoyées").Range("IV4").End(xlToLeft).Column
        If Sheets("données nettoyées").Range("C3").Offset(0, k) <> "" Then
            Sheets("feuille de tri").Range("B1").Offset(0, dernCol * 2).Value = Sheets("données nettoyées").Range("C3").Offset(0, k)
            dernCol = dernCol + 1
        End If
    Next k

    For k = 0 To Sheets("données nettoyées").Range("IV4").End(xlToLeft).Column Step 3
        For i = 4 To Sheets("données nettoyées").Range("B65536").Offset(0, k).End(xlUp).Row
            For j = 2 To Sheets("feuille de tri").Range("A65536").End(xlUp).Row
                If Trim(Sheets("données nettoyées").Range("B" & i).Offset(0, k).Value) = Trim(Sheets("feuille de tri").Range("A" & j).Value) Then
                    str = Mid(Sheets("données nettoyées").Range("C" & j).Offset(0, k).Address, 2, 1)
                    str2 = Mid(Sheets("données nettoyées").Range("C" & j).Offset(0, k + 1).Address, 2, 1)
                    If Sheets("feuille de tri").Range("IV" & j).End(xlToLeft).Column = 1 Then
                        Sheets("données nettoyées").Range(str & i & ":" & str2 & i).copy Destination:=Sheets("feuille de tri").Range("B" & j).Offset(0, (k / 3) * 2)
                    Else
                        Sheets("données nettoyées").Range(str & i & ":" & str2 & i).copy Destination:=Sheets("feuille de tri").Range("B" & j).Offset(0, ((k / 3) * 2))
                    End If
                End If
            Next j
        Next i
    Next k
    
    Application.ScreenUpdating = True
    
End Sub


Bonne journée,
WUTED
 
Re : Tri de colonnes multiples

ça ne prend pas comme il faut : J'ai des chiffres qui n'ont rien à voir qui apparaissent, des noms au milieu des heures, et les dates qui partent dans tout les sens (comme tu l'avais prédit 😀).

Mais j continuerai a traiter jour par jour je pense, c'est le plus simple (vu que je saute des dates pour les données, c'est pas aligné avec la grille finale de toute manière)
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

E
  • Question Question
2
Réponses
21
Affichages
3 K
eurysthee87
E
C
Réponses
2
Affichages
1 K
carolinem31
C
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…