Classer et trier des numéros d'une colonne vers d'autres colonnes.

elen83

XLDnaute Nouveau
Bonjour à toutes et à tous les fans d'excel,
Je suis un débutant dans la matière et mon problème est le suivant :
Je rentre les numéros des tickets utilisés journellement par les membres de mon association dans une colonne A, j'aimerais les classer et les trier automatiquement dans des colonnes annexes (par ex : Colonne B = 1 à 1000 ; Colonne C = 1001 à 2000, etc...), mais ce n'est pas tout, j'aimerais aussi qu'il m'indique s'il y a des doublons et éventuellement dans une autre plage le numéros manquants dans chaque colonne.
Je vous remercie d'avance pour tous vos solutions,
elen83
 

Dugenou

XLDnaute Barbatruc
Re : Classer et trier des numéros d'une colonne vers d'autres colonnes.

Bonjour,

Voici un essai à adapter à ton fichier : la zone saisie!$A$2:$A$8 doit être adaptée à la longueur de tes données
la formule de la feuille récap doit être validée par Ctrl+Maj+Entrée; elle peut être recopiée à droite et en bas

Les doublons apparaissent en rouge (dans la récap mais on pourrait le faire dans la saisie)
les N° sont classés donc on voit assez bien les manquants (on pourrait aussi faire une MFC)


Cordialement
 

Pièces jointes

  • classement tickets.zip
    3.1 KB · Affichages: 72
  • classement tickets.zip
    3.1 KB · Affichages: 74
  • classement tickets.zip
    3.1 KB · Affichages: 77

Robert

XLDnaute Barbatruc
Repose en paix
Re : Classer et trier des numéros d'une colonne vers d'autres colonnes.

Bonjour Elen, Dugenou, bonjour le forum

Un proposition VBA. La macro copie les données, indique les doublons en colorant de rouge, et affiche les numéros manquants (un peu longue car elle traite cellule après cellule) :
Code:
Sub Macro1()
Dim cel As Range 'déclare la variable cel (CELlule)
Dim col As Integer 'déclare la variable col (COLonne)
Dim li As Integer 'déclare la variable li (LIgne)
Dim dest As Range 'déclare la variable dest (DESTination)
Dim pl As Range 'déclare la variable pl (PLage)
Dim msg As String 'déclare la variable mesg (MeSsaGe)
 
Application.ScreenUpdating = False 'masque les changements à l'écran
 
'boucle sur toutes les celullules éditées cel de la colonne A
For Each cel In Range("A1:A" & Cells(Application.Rows.Count, 1).End(xlUp).Row)
    If cel.Value > 1000 Then 'condition 1 : si la valeur de la cellule est supérieure à 1000
        Select Case cel.Value Mod 1000 'action en fonction du reste de la division de la valeur de la cellule par 1000 (Multiple de 1000 ou pas)
            Case 0 'pour les multiple de 1000
                col = (cel.Value \ 1000) + 1 'définit la colonne
                li = 1000 'définit la ligne
            Case Else 'pur les non multiples de 1000
                col = (cel.Value \ 1000) + 2 'définit la colonne
                li = cel.Value - (1000 * (col - 2)) 'définit la ligne
        End Select 'fin de l'action en fonction...
    Else 'sinon (condition 1)
        col = 2 'définit la colonne
        li = cel.Value 'définit la ligne
    End If 'fin de la condition
 
    If cel = "" Or IsNumeric(cel.Value) = False Then GoTo suite 'si la cellule est vide oou si elle ne contient pas de valeur numérique, va à l étiquette "suite"
    Set dest = Cells(li, col) 'définit la cellule de destination
    If dest.Value = "" Then 'condition 2 : si la cellule dest est vide
        cel.Copy dest 'copie la valeur de la cellule
    Else 'sinon
        dest.Interior.ColorIndex = 3 'colore l'interior de dest en rouge pour signaler un doublon
    End If 'fin de la condition 2
suite: 'étiquette
Next cel 'prochaine cellule cel de la boucle
col = ActiveSheet.UsedRange.Columns.Count 'définit la dernière colonne utilisée
'définit la plage pl
Set pl = Application.Union(Range(Cells(1, 2), Cells(1000, col - 1)), Range(Cells(1, col), Cells(Application.Rows.Count, col).End(xlUp)))
For Each cel In pl 'boucle sur toutes les cellules de la plage pl
    If cel.Value = "" Then 'condition 1 : si la cellule est vide
        If cel.Column = 2 Then 'condition 2 : si la colonne de la cellule est la seconde (B)
            msg = msg & Chr(13) & cel.Row 'définit le message
        Else 'sinon
            msg = msg & Chr(13) & (cel.Column - 1) * 1000 + cel.Row 'définit la message
        End If 'fin de la condition 2
    End If 'fin de la condition 1
Next cel 'prochaine cellule de la boucle
MsgBox "Numéros manquants :" & Chr(13) & msg 'affiche les numéros manquants
 
Application.ScreenUpdating = True 'affiche les changements à l'écran
End Sub
 

elen83

XLDnaute Nouveau
Re : Classer et trier des numéros d'une colonne vers d'autres colonnes.

Bonjour,
Merci pour votre solution, dans la feuille "récap" j'ai adapté la zone de saisie !$A$2:$A$8 à longueur de la zone d'entrée des mes données (Feuille "saisie"), j'ai validée la formule par Ctrl+Maj+Entrée et il me renvoie le chiffre "0".
Si supprime les nombres de la Feuille "Saisie" et que je rentre des nouveau N° il m'affiche des "0" dans la feuille "récap".
Est-ce-que je m'y suis mal pris pour exploité votre solution !!!
Merci pour une réponse
Elen83
 

Dugenou

XLDnaute Barbatruc
Re : Classer et trier des numéros d'une colonne vers d'autres colonnes.

Bonjour,

peux tu copier et coller ici la formule ou bien joindre le fichier ?
en fait il faut que la plage corresponde exactement à la zone saisie
ceci peut être fait en automatique

voir pj

Cordialement
 

Pièces jointes

  • classement tickets.zip
    3.1 KB · Affichages: 51
  • classement tickets.zip
    3.1 KB · Affichages: 52
  • classement tickets.zip
    3.1 KB · Affichages: 56
Dernière édition:

elen83

XLDnaute Nouveau
Re : Classer et trier des numéros d'une colonne vers d'autres colonnes.

Bonjour Dugenou,
J'ai tester ce WE votre dernière version concernant l'automatisation du triage et du classement des mes N° de tickets, cela fonctionne correctement et je vous en remercie.
Néanmoins une erreur subsite, il classe les N° de 0 à 999 et de 1000 à 1999 etc ..., mais lorsqu'il arrive au N° 999 ou 1999 etc ..., il n'affiche pas ce numéro et dans la colonne suivante il affiche un "0".
Je vous envoie en picèce jointe mon dossier excel avec tous les N° que j'ai rempli, si vous evez le temps pouvez svp y jeter un coup d'oeil pour corriger ce maivais fonctionnement.
Je vous remercie d'avance,
elen83
 

Dugenou

XLDnaute Barbatruc
Re : Classer et trier des numéros d'une colonne vers d'autres colonnes.

Bonjour elen,

le fichier n'est pas passé. Tu peux ne laisser que les premières et dernières lignes.
Je regarde dans ma pj précédente si je peux reproduire le pb : je n'ai pas testé les bornes 999 etc

a +
 

Dugenou

XLDnaute Barbatruc
Re : Classer et trier des numéros d'une colonne vers d'autres colonnes.

Re,

voici le fichier corrigé : il fallait mettre quelques = derrière les < pour tenir compte des bornes.

Si tu copies la formule : il faut valider par ctrl+maj+entrée.

Cordialement
 

Pièces jointes

  • Classement tickets2.zip
    6.6 KB · Affichages: 44

elen83

XLDnaute Nouveau
Re : Classer et trier des numéros d'une colonne vers d'autres colonnes.

Bonsoir Dugenou,
En pièce jointe les infos concernant ma feuille excel,
Merci et bonne soirée,
elen83
 

Pièces jointes

  • Copie de classement tickets.xls
    281 KB · Affichages: 76

david84

XLDnaute Barbatruc
Re : Classer et trier des numéros d'une colonne vers d'autres colonnes.

Bonjour,
on peut légèrement raccourcir la formule proposée :
Code:
=SI(LIGNES($1:1)<=SOMME((zonesaisie>=A$2)*(zonesaisie<A$3));INDEX(zonesaisie;EQUIV(PETITE.VALEUR(SI((zonesaisie>=A$2)*(zonesaisie<A$3);NB.SI(zonesaisie;"<"&zonesaisie));LIGNES($1:1));NB.SI(zonesaisie;"<"&zonesaisie);0));"")
A placer en A4, à valider en appuyant simultanément sur les touches Ctrl, Maj et Entrée et à tirer vers le bas et la droite.
Comme je me suis aperçu que la colonne N°_Ticket était déjà nommée "zonesaisie", j''ai donc utilisé ce nom.
A+
 

Efgé

XLDnaute Barbatruc
Re : Classer et trier des numéros d'une colonne vers d'autres colonnes.

Bonjour à tous, le fil, le forum,
Une proposition:
Sur la feuille "Récapitulatif Tickets", un bouton.
Les numéros présents en dans la liste sont en Vert, les numéros en doublons sont en rouge avec un commentaire qui donne le nombre de doublons, les autres numéros sont en blanc.
Le code est dans le bouton.
Cordialement
 

Pièces jointes

  • Elen83(2).zip
    18.4 KB · Affichages: 48

Discussions similaires

Statistiques des forums

Discussions
312 379
Messages
2 087 761
Membres
103 661
dernier inscrit
fcleves