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

bonjour

la fonction =CHERCHE(" ";A1) te renverra 7, c'est à dire que l'espace se trouve en 7ème position dans cette cellule
=gauche(A1;cherche(" ";A1)-1) te renverra les x caractères à gauche de l'espace

=droite(A1;nbcar(A1)-cherche(" ";A1) va t'extraire tous les caractères à droite de cette même cellule A1
 
Re : Tri de colonnes multiples

euuh.

on parles de colonnes, je ne veux pas concaténer de cellules, juste aligner les celulles par rapport à une liste de noms définie
 
Re : Tri de colonnes multiples

Bonjour zloupy, mutzik,

Essaie ça :

VB:
Sub tri()
    Dim str As String, nom As String
    Dim bool As Boolean
    str = Range("A1").Offset(0, Range("IV1").End(xlToLeft).Column - 1).Address
    Range("B1" & ":" & Mid(str, 2, 1) & Range("B65536").End(xlUp).Row).Copy Destination:=Sheets("Feuil2").Range("A1")
    For i = 1 To Range("A65536").End(xlUp).Row
    bool = False
        For j = 1 To Sheets("Feuil2").Range("A65536").End(xlUp).Row
            If Trim(Range("A" & i).Value) = Trim(Sheets("Feuil2").Range("A" & j).Value) Then
                Range("A" & i).EntireRow.Clear
                Sheets("Feuil2").Range("A" & j & ":" & Mid(str, 2, 1) & j).Copy Destination:=Range("A" & i)
                bool = True
                Exit For
            End If
        Next j
        If bool = False Then
            nom = Range("A" & i).Value
            Range("A" & i).EntireRow.Clear
            Range("A" & i).Value = nom
        End If
    Next i
    Sheets("Feuil2").Cells.Clear
End Sub

J'ai pas trouvé d'autre moyen que d'utiliser la feuille 2 comme tampon, remplace Feuil2 par le nom d'une feuille libre dans ton classeur. C'est un peu bricolé mais ça devrait fonctionner.

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

ça marche du tonnerre...

maintenant, si les colonnes BCD se répètent pour tt les jours du mois, c'est adaptable?

le soucis c'est que ca ferait


ABCDBCDBCDBCDBCD (chaque triplette BCD serait par jour ouvrable en fait)

ACDCDCDCDCD

je présume qu'il faudrait passer par quelque chose du genre de
ABCDBCDBCDBCDBCD
ACDBCDBCDBCDBCD
ACDCDBCDBCDBCD
ACDCDCDBCDBCD
ACDCDCDCDBCD
ACDCDCDCDCD



si c'est pas facilement faisable, j ferai par jour et je copierai l'info à la main
 
Re : Tri de colonnes multiples

Re,

Avec ça normalement :

VB:
Sub tri()
    Dim str As String, nom As String
    Dim bool As Boolean
    
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    Sheets.Add
    
    Range("B1" & ":" & "AK" & Range("B65536").End(xlUp).Row).Copy Destination:=Sheets(1).Range("A1")
    
    For i = 1 To Range("A65536").End(xlUp).Row
    bool = False
        For j = 1 To Sheets(1).Range("A65536").End(xlUp).Row
            If Trim(Range("A" & i).Value) = Trim(Sheets(1).Range("A" & j).Value) Then
                Range("A" & i).EntireRow.Clear
                Sheets(1).Range("A" & j & ":AK" & j).Copy Destination:=Range("A" & i)
                bool = True
                Exit For
            End If
        Next j
        If bool = False Then
            nom = Range("A" & i).Value
            Range("A" & i).EntireRow.Clear
            Range("A" & i).Value = nom
        End If
    Next i
    
    For k = 1 To (Sheets(1).Range("IV1").End(xlToLeft).Column / 3)
                    Range("A" & i).Offset(0, k * 3 - (k - 1)).EntireColumn.Delete
    Next k
    
    Sheets(1).Delete
    
    Application.ScreenUpdating = True
    Application.DisplayAlerts = True
End Sub

En plus d'adapter le code à ton nouveau besoin, j'ai fait quelques modification :
  • On reste sur 3 colonnes par mois
  • J'ouvre une nouvelle feuille pour faire tampon et je la supprimer à la suite du traitement, plus besoin d'avoir une feuille de dispo. Le seul point qui me dérange avec ça c'est que même supprimer, ça incrémente le numéro de feuille, ce que je veux dire c'est que tu pourrai avoir des "Feuil12" en nom par défaut alors que c'est ta 4ème feuille.

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

j'ai un soucis avec le fichier, si je change les noms (car c'est basé sur une liste générée par un lecteur de badges au travail, et les équipes ne sont pas fixes par mois, donc lundi ça sera 3 personnes, mais le lendemain ça sera peut être trois uatres, comme 2 / un autre, on sait pas a l avance) ça garde que les 3 premiers pour réduire la liste, donc les heures d'élodie (dans l exemple) sont attribuées à quelqu'un d'autre.

j'sais pas si j'ai été clair.

là j'ai fais à la main un mois complet, ça prend pas mal de temps.
 
Re : Tri de colonnes multiples

Nan j'ai pas vraiment compris mais j'viens déjà de comprendre un truc, ma macro gérait le cas où y'avait un "rapport" par mois et j'avais mis en dur la dernière colonne. C'est sans doute pour ça que ça fonctionnait pas bien chez toi.
 
Re : Tri de colonnes multiples

en gros,

j'ai ma liste de personnel en A

et les personnes bossent par horaire variable (donc ne sont jamais planifiés en même temps).

donc faudrait refaire le check par jour ("BCD") et non pas estimer que le premier check est valide pour la suite complète du document
 
Re : Tri de colonnes multiples

Bonsoir,

Dis moi juste au final ce que représente une ligne et ce que représente une colonne, au niveau chronologique, parce qu'apparemment, j'suis en train de comprendre qu'il peut y'avoir plusieurs noms différents sur une ligne? Donc une ligne = le mois, chaque colonne = une journée, et chaque jour un nouvel employé possible?

WUTED
 
Re : Tri de colonnes multiples

concrètement :

J'ai une liste de personnel (colonne A)

Et les trio de colonnes (BCD) sont générées par le programme de contrôle d'accès.

ce qui me donne

B : nom de la personne ayant badgé
C : heure à laquelle le badge a été utilisé
D : formule qui calcule une valeur (1 a 3) selon l'heure d'arrivée (en avance, tout juste, en retard).

J'ai un trio BCD par jour de travail ouvrable.

Donc ce mois ci par exemple :

Mai :

A et 20 trio de BCD.


Je nettoie à la main les BCD sur une autre page car il y-a des "parasites" : personne utilisant le lecteur plusieurs fois, personnes d'une autre "agence" utilisant le même lecteur de badge, équipe de nuit qui doit utiliser le lecteur qu'on utilise comme contrôleur de ponctualité car la nuit la porte associée est verrouillée.

Une fois nettoyé, j'ai une liste avec les noms, heures et une colonne vierge (vu que la formule de calcul est intégrée à la page de mise en page).

la mise en page se fait dans une autre page et, actuellement, je fais jour par jour avec le code que tu as proposé au début.

il y-a 80 noms dans la liste en A

J'ai maximum 30 entrées (ça va évoluer par la suite, l'équipe grandit à vitesse vv') par jour ouvrable.


Est ce plus clair à tes yeux?
 
Dernière modification par un modérateur:
Re : Tri de colonnes multiples

Re,

Je comprends le principe mais au final je veux juste savoir dans ton fichier, à quoi correspond UNE ligne de trio BCD, sans considérer la colonne A, un mois? un jour ouvrable?
 
Re : Tri de colonnes multiples

une ligne complete = 1 mois

donc en gros y a 1 + (nbjours*3) colonnes par fichier

on fait un fichier par mois pour des raisons de visibilité
 
- 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…