XL 2019 Garder la numérotation des index après classement

  • Initiateur de la discussion Initiateur de la discussion Heodrene
  • 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 !

Heodrene

XLDnaute Occasionnel
Bonjour à tous,

J'ai un tableau de suivi dont la colonne A me sert à créer automatiquement un numéro d'index par rapport à la tâche à suivre.
J'ai créé une colonne Rang qui génère un numéro de série unique à partir de la date d'ouverture de la tâche et du numéro de la ligne associée à la tâche dans le tableau.

Mon problème est que ce numéro d'index ne reste pas attachée à sa tâche après un classement par ordre alphabétique par exemple.
Je connais la source du problème : dans ma formule de la colonne Rang le numéro de ligne n'est pas figée (après un classement, c'est le numéro de ligne courante qui est pris en compte).

Question : Comment puis-je faire pour que le numéro d'index créé reste attaché à la tâche ?

Merci de votre aide,

Heodrene
 

Pièces jointes

Bonjour
Je n'ouvre jamais les classeurs tiers et n'ai pas ouvert le tien
On peut facilement deviner que ces indexes sont le résultat de formules Excel.
Donner à la propriété Value d'une plage... la propriété Value, figera en tant que constantes les résultats de formules dans cette plage

exemple :
VB:
Range("A1:A20").Value = Range("A1:A20").Value
A exécuter AVANT le tri (bien évidemment)
Le beurre et l'argent du beurre n'existant pas ensemble, il te faudra probablement penser à un autre mécanisme d'attribution d'indexes pour les nouveaux articles.
 
Bonsoir Heodrene,
Votre rang est fonction du numéro de ligne, donc en cas de tri le rang change.
L'index est fonction du rang, donc en cas de tri l'index change.
La solution serait que le rang soit indépendant du numéro de ligne. Mais je ne sais pas si c'est possible.
Ou vous calculez un index fonction de la colonne ouvert sans passer par le rang.
 
Bonjour
Je n'ouvre jamais les classeurs tiers et n'ai pas ouvert le tien
On peut facilement deviner que ces indexes sont le résultat de formules Excel.
Donner à la propriété Value d'une plage... la propriété Value, figera en tant que constantes les résultats de formules dans cette plage

exemple :
VB:
Range("A1:A20").Value = Range("A1:A20").Value
A exécuter AVANT le tri (bien évidemment)
Le beurre et l'argent du beurre n'existant pas ensemble, il te faudra probablement penser à un autre mécanisme d'attribution d'indexes pour les nouveaux articles.

Merci @jmfmarques, c'est parfait !
J'ai intégré ce morceau de code dans un évènement Worksheet pour m'assurer qu'il s'applique à chaque ajout d'index et ca semble fonctionner.
 
Bonsoir Heodrene,
Votre rang est fonction du numéro de ligne, donc en cas de tri le rang change.
L'index est fonction du rang, donc en cas de tri l'index change.
La solution serait que le rang soit indépendant du numéro de ligne. Mais je ne sais pas si c'est possible.
Ou vous calculez un index fonction de la colonne ouvert sans passer par le rang.

C'était en effet mon diagnostic que tu as bien mieux formulé que moi 🙂
Merci pour ta contribution.
 
Pouvez vous nous expliquer la formule bizarre de rang ?
Je suppute que vous utilisez le N° de ligne pour en faire un Rang unique ?
Si c'est le cas, rajoutez une colonne avec N°.
L’avantage c'est que cette colonne suivra le tri.
 
S'agissant d'un tableau, les cellules sont adressées avec le nom de l'entête.
La formule :
Code:
=SI([@Ouvert]="";"";[@Ouvert]+LIGNE($A2)/10000000)

Signifie :
  • Si la cellule "Ouvert" de la ligne courante est vide alors ne faire aucun calcul
  • Sinon prendre la valeur de la cellule "Ouvert" de la ligne courante et ajouter le quotient du numéro de ligne courante par 10000000. Et ce pour obtenir une décimale unique pour différencier des entiers identiques
La solution proposée est une piste que j'avais exploré mais je voudrais que cette colonne soit alimentée automatiquement.
Si c'est le faire manuellement, autant renseigner l'index à la main directement… 😉
 
Re le fil,
Peux être une solution en PJ.
J'ai rajouté une colonne N°.
Un appui sur N° en A1 insère le N° de ligne en "dur". La formule de Rang utilise cette valeur, donc plus de souci.
reste à savoir si cette solution vous va. D'autre part je ne sais pas si la colonne Index a encore une utilité.
La macro utilisée est très simple :
VB:
Sub InsereNo()
    DerLig = Application.WorksheetFunction.CountA(Range("A1:A10000"))
    Range("A" & DerLig + 1) = 1 + Application.Max(Range("A2:A" & DerLig))
End Sub
 

Pièces jointes

Merci à tous pour vos aides, voici un code qui répond à mon besoin :
  • Incrémentation automatique de la colonne Index
  • S'assure que la nouvelle ligne renseignée fasse bien partie du tableau sinon aucune incrémentation possible
  • L'incrémentation se déclenche dès qu'une cellule à partir de la colonne B est sélectionnée
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim LastLig As Long
    Dim LastCol As String
    Dim ActiveTable As ListObject
        
    On Error Resume Next
    Set ActiveTable = ActiveCell.ListObject
    On Error GoTo 0
    
    With ThisWorkbook.Sheets("Actions Log")
        LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
        LastCol = Split(Cells(1, .Cells(1, .Columns.Count).End(xlToLeft).Column).Address, "$")(1)

        If ActiveTable Is Nothing Then
            Exit Sub
            Else
            If Not Application.Intersect(Target, Range("B:" & LastCol)) Is Nothing Then
                If IsEmpty(Range("A" & Target.Row)) Then
                    Range("A" & Target.Row) = Application.Max(Range("A2:A" & LastLig)) + 1
                    .ListObjects("_Tab_ActionsLog").ListRows.Add
                End If
            End If
        End If
    End With
End Sub
 
- 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
11
Affichages
125
P
Réponses
7
Affichages
711
Pilliars
P
Réponses
7
Affichages
339
Réponses
1
Affichages
715
Réponses
90
Affichages
5 K
Réponses
9
Affichages
379
Retour