Trier après ajout de données dans une database

SUNLIFE2009

XLDnaute Nouveau
Bonjour,

J'ai un problème avec le tri de ma colonne A dans une base de données. Via un formulaire, je peux ajouter des données à ma base, données qui sont rajoutées en dernière ligne du tableau sur ma page. Une fois ajoutées, en fermant mon formulaire, je voudrais trier cette colonne A, et étendre le tri également à la colonne B.

Malheureusement, lorsque le tri s'exécute, il ramène en ligne 2 les dernières données ajoutées, et exécute le tri uniquement sur les anciennes données rentrées manuellement (sans utiliser le formulaire).

Je vous donne en vert le code utilisé pour le tri, qui s'exécute lorsque je ferme le formulaire.

Range("A2:B1000").Select
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal

Voici également en rouge une partie du code, servant à ajouter les nouvelles données dans la base de sonnées, via mon formulaire.

Private Sub CommandButton1_Click()
'Boutton "Add employee"
Dim derLig As Long

'Je rentre les infos des "Nouveaux clients"
With Sheets("Staff Info")

If TEAM.Value = " " Then
MsgBox "Please, select a Team"

Else
' Dernière ligne en colonne A
derLig = .Range("A" & Cells.Rows.Count).End(xlUp).Row + 1

.Range("A" & derLig).Value = TOA.Value
.Range("B" & derLig).Value = TEAM.Value

MsgBox "TOA has been added to Database"

End If
End With

TOA.Value = " "
TEAM.Value = " "
NEWTEAM.Value = " "

NEWTEAM.Visible = False

End Sub


Merci pour votre aide. J'espère vous fournir suffisamment d'infos pour solutionner ce problème.
 

Etienne2323

XLDnaute Impliqué
Re : Trier après ajout de données dans une database

Salut SUNLIFE2009,
Pourquoi ne pas intégrer ton tri directement dans l'action de ton commandbutton ? J'imagine que c'est le résultat que vous cherchez à obtenir non ?

Par exemple :

Code:
Private Sub CommandButton1_Click()
'Boutton "Add employee"
Dim derLig As Long

'Je rentre les infos des "Nouveaux clients"
With Sheets("Staff Info")

If TEAM.Value = " " Then
MsgBox "Please, select a Team"

Else
' Dernière ligne en colonne A
derLig = .Range("A" & Cells.Rows.Count).End(xlUp).Row + 1

.Range("A" & derLig).Value = TOA.Value
.Range("B" & derLig).Value = TEAM.Value
[COLOR="Red"].Range("A2:B" & derLig).Sort Key1:=Range("A2"), Order1:=xlAscending, Header:= _
        xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal[/COLOR]
MsgBox "TOA has been added to Database"

End If
End With

TOA.Value = " "
TEAM.Value = " "
NEWTEAM.Value = " "

NEWTEAM.Visible = False

End Sub
À vous relire pour plus,

Cordialement,

Étienne
 

SUNLIFE2009

XLDnaute Nouveau
Re : Trier après ajout de données dans une database

Salut Etienne 2323,

J'ai déplacé la commande tri comme tu me l'as suggéré. C'est effectivement plus logique de l'insérer dans ce morceau de code.
Par contre, ça ne règle pas le problème. Chaque ajout de donnée est inséré en A2 et B2 (ma base ne contient que 2 colonnes). Et malgré le déplacement de la commande de tri associé au bouton ajout d'un employé, le tableau ne se trie pas automatiquement.
C'est vraiment bizarre?
 

SUNLIFE2009

XLDnaute Nouveau
Re : Trier après ajout de données dans une database

Rebonjour Etienne 2323,

Je viens de résoudre mon probleme. Un espace s'insérait automatiquement a l ouverture du formulaire. Et donc chaque ajout commencait par un espace, et prenait place dans le haut du formulaire.
Merci en tout cas pour tes conseils.

Bonne soirée.
 
Haut Bas