Bonjour,

Le pb auquel je me heurte est le suivant.

Je suis positionné sur une feuille. Je désire en appuyant sur un bouton placé sur cette feuille lancer sa copie, puis trier un tableau placé dans cette feuille.

La procédure associé au boton est la suivante. Tout fonctionne jusqu'à la ligne tableau.sort ... ou une erreur est remontée.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Private Sub CommandButton1_Click()
 
    ' Fonction d'initialisation des variables, en particulier l_f_plan feuille a copier ici
    Initialisation
 
    ' Copie de la feuille l_f_plan sur laquelle je veux travailler
    Worksheets(l_f_Plan.Name).Copy Before:=Worksheets(l_f_Plan.Name)
    ActiveSheet.Name = "Planning_Trie"
 
    ' Creation d'un objet feuille correspondant a la feuille qui vien d'etre copiee
    Dim l_f_Temp As Worksheet
    Set l_f_Temp = ThisWorkbook.Sheets("Planning_Trie")
 
    ' Insertion d'une colonne
    l_f_Temp.Columns("A:A").Insert Shift:=xlToRight
 
    ' Comptage du nombre de lignes de la feuille
    Dim nb_doc As Variant
    nb_doc = l_f_Temp.Range("B65536").End(xlUp).Row
 
    ' Remplissage de la colonne crée avec le numero de ligne
    For num_doc = 1 To nb_doc
      l_f_Temp.Cells(num_doc, 1) = num_doc
    Next
 
    ' Creation du tableau à trier
    Dim tableau As Range
    Set tableau = l_f_Temp.Rows("5:" & nb_doc)
 
    ' Tri de ce tableau
    tableau.Sort Key1:=Range("F5"), Order1:=xlAscending, Key2:=Range("D5") _
        , Order2:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:=False _
        , Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:= _
        xlSortNormal
 
End Sub
Ce que je ne comprends pas c'est qu'en reprenant quasiment le même code placé dans la feuille copiée associé au même bouton que la feuille initiale, j'arrive trier les données désirées:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Private Sub CommandButton1_Click()
 
    Dim l_f_Temp As Worksheet
    Set l_f_Temp = ThisWorkbook.Sheets("Planning_Trie")
 
    ' Comptage du nombre de lignes de la feuille
    Dim nb_doc As Variant
    nb_doc = l_f_Temp.Range("B65536").End(xlUp).Row
 
    ' Creation du tableau à trier
    Dim tableau As Range
    Set tableau = l_f_Temp.Rows("5:" & nb_doc)
 
    ' Tri de ce tableau
    tableau.Sort Key1:=Range("F5"), Order1:=xlAscending, Key2:=Range("D5") _
        , Order2:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:=False _
        , Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:= _
        xlSortNormal
End Sub
C'est comme si la fonction de tri ne fonctionnait qu'à partir du moment ou elle est lancée dans une procédure ou fonction dont le code est placé dans la feuille ou sont situés les données à trier, et non pas dans une autre feuille.

Quelqu'un a-t-il déjà rencontré ce problême ???

Merci d'avance pour vos réponses,