Porblème de tri automatique

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

K

korady91

Guest
Bonjour,

Tout d'abord merci, de l'aide que vous m'avez déjà apporté. Je suis stagiaire et je n'avais jamais fait d'excel avant. Sans le forum je ne sais pas comme j'aurai fait...

Je suis confronté à un problème de trie automatique.
J'ai une feuille protégée qui constitue ma base de données avec chaque ligne qui contient des informations allant de la colonne A à la colonne BZ.
L'edition de la base passe par un formulaire

Je souhaite trier automatiquement à chaque fois qu'une modification est apportée à la base.
Je dois trier chaque ligne en fonction de la colonne A puis B puis D (numero de dossier, code région, année).

J'ai alors incorporé ce code :

'Private Sub Worksheet_Change(ByVal adrcel As Range)
'Worksheets("Synthese").Unprotect ("password")
'Range("Synthese").Sort Key1:=Range("A"), Order1:=xlAscending, _
'Key2:=Range("B"), Order2:=xlAscending, _
'Key3:=Range("D"), Order3:=xlAscending, _
'Header:=xlYes, OrderCustom:=1, MatchCase:=False, _
'Orientation:=xlTopToBottom
' Worksheets("Synthese").Protect ("password"), DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFiltering:=True
'
'End Sub

Malheuresement, il me signale une erreur "la methode range a échoué".
alors j'ai essayé le range de la forme Range("A9:BZ2600") au lieu de Range("Synthese") mais j'ai toujours la même erreur.

Quelqu'un a une idée ?

Merci merci merci

-- Armand
 
Re : Porblème de tri automatique

Salut Korady91,

Il faut indiquer le numéro de la ligne de départ dans les Key
et bien être sur la feuille synthèse quand tu lances le tri, ou alors le stipuler dans le code

Code:
Private Sub Worksheet_Change(ByVal adrcel As Range)
  Worksheets("Synthese").Unprotect ("password")
  Range("Synthese").Sort Key1:=Range("A[B][COLOR=blue]1[/COLOR][/B]"), Order1:=xlAscending, _
                         Key2:=Range("B[COLOR=blue][B]1[/B][/COLOR]"), Order2:=xlAscending, _
                         Key3:=Range("D[B][COLOR=blue]1[/COLOR][/B]"), Order3:=xlAscending, _
                         Header:=xlYes, OrderCustom:=1, MatchCase:=False, _
                         Orientation:=xlTopToBottom
  Worksheets("Synthese").Protect ("password"), DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFiltering:=True
End Sub

A+
 
Re : Porblème de tri automatique

Salut Korady91,

Il faut indiquer le numéro de la ligne de départ dans les Key
et bien être sur la feuille synthèse quand tu lances le tri, ou alors le stipuler dans le code

Code:
Private Sub Worksheet_Change(ByVal adrcel As Range)
  Worksheets("Synthese").Unprotect ("password")
  Range("Synthese").Sort Key1:=Range("A[B][COLOR=blue]1[/COLOR][/B]"), Order1:=xlAscending, _
                         Key2:=Range("B[COLOR=blue][B]1[/B][/COLOR]"), Order2:=xlAscending, _
                         Key3:=Range("D[B][COLOR=blue]1[/COLOR][/B]"), Order3:=xlAscending, _
                         Header:=xlYes, OrderCustom:=1, MatchCase:=False, _
                         Orientation:=xlTopToBottom
  Worksheets("Synthese").Protect ("password"), DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFiltering:=True
End Sub

A+
Merci de la réponse rapide mais après avoir essayé, j'ai toujours la même erreur 1004 et range qui échoue.

Que faire !?
 
Re : Porblème de tri automatique

En réponse au MP

Problème : nom zone de tri "Synthese" non définit

Résolution :
Code:
Private Sub Worksheet_Change(ByVal adrcel As Range)
  Dim DerLig As Long
  With Sheets("Synthese")
    DerLig = .Range("A" & Rows.Count).End(xlUp).Row
    .Unprotect ("password")
    .Range("A9:BZ" & DerLig).Sort Key1:=Range("A9"), Order1:=xlAscending, _
                         Key2:=Range("B9"), Order2:=xlAscending, _
                         Key3:=Range("D9"), Order3:=xlAscending, _
                         Header:=xlYes, OrderCustom:=1, MatchCase:=False, _
                         Orientation:=xlTopToBottom
    .Protect ("password"), DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFiltering:=True
  End With
End Sub

A+
 
Re : Porblème de tri automatique

En réponse au MP

Problème : nom zone de tri "Synthese" non définit

Résolution :
Code:
Private Sub Worksheet_Change(ByVal adrcel As Range)
  Dim DerLig As Long
  With Sheets("Synthese")
    DerLig = .Range("A" & Rows.Count).End(xlUp).Row
    .Unprotect ("password")
    .Range("A9:BZ" & DerLig).Sort Key1:=Range("A9"), Order1:=xlAscending, _
                         Key2:=Range("B9"), Order2:=xlAscending, _
                         Key3:=Range("D9"), Order3:=xlAscending, _
                         Header:=xlYes, OrderCustom:=1, MatchCase:=False, _
                         Orientation:=xlTopToBottom
    .Protect ("password"), DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFiltering:=True
  End With
End Sub

A+


Merci beaucoup de ton aide j'allais m'arracher les cheveux.
J'ai une dernière question, maintenant ma fonction d'ajout ne marche plus parce que le tri a lieu avant que tout les champs soient ajoutés.
Donc je devrais plutôt trier à l'ouverture ou à la fermeture.
Que dois je modifier sur le code pour cela ?

Promis après ça je t'embête plus.

Merci encore de ta rapidité de réponse.

--Armand
 
Re : Porblème de tri automatique

Re,

Pour éviter ce problème, tu peux mettre au début de ta procédure
Code:
Private Sub UserForm_Initialize()

' Désactiver les évènements pour pouvoir remplir la ligne
application.EnableEvents = False
...

Ensuite dans l'évènement fermeture
Code:
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
' Réactiver la ligne
  Application.EnableEvents = True
  ' Ré-inscrire le numéro de dossier pour lancer Worksheet_change()
  d.Offset(1, 0).Value =   d.Offset(1, 0).Value
End Sub
Ou alors intégrée ta procédure de tri dans ton USF, dans la procédure ci-dessus

A+
 
Dernière modification par un modérateur:
- 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

Réponses
4
Affichages
245
Retour