[Résolu] Faire un Tri entre With et End with

Webperegrino

XLDnaute Impliqué
Supporter XLD
Bonjour Le Forum,
Je vous présente ci-dessous un extrait de macro.
Au début de la macro (5 lignes) un tri doit se réaliser dans la feuille fc pour que la suite de la macro s’opère correctement.
L’inconvénient avec que pour la première programmation (qui fonctionne) cette feuille fc apparaît à l’écran pendant le tri.
VB:
With Application: .EnableEvents = False: .ScreenUpdating = False: End With
j = fc.[B518].End(xlUp).Row
fc.Select

fc.Unprotect ("abc")
Rows("3:" & j).Sort Key1:=Range("B3"), Order1:=xlAscending, Key2:=Range("D3") _
        , Order2:=xlAscending, Key3:=Range("E3"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
        False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
        :=xlSortNormal
Range("A3").Select
ActiveSheet.Protect ("abc"), DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFiltering:=True
With Application: .EnableEvents = True: .ScreenUpdating = True: End With
… suite de la macro

J’essaie (ci-après) de faire tourner la macro sans faire apparaître la feuille fc en mettant With.
Mais cela m’affiche << erreur d’exécution 1004 : La méthode SORT de la Classe a échoué >>

VB:
[I]With fc[/I] '
.Unprotect ("abc")
Rows("3:" & j).Sort Key1:=Range("B3"), Order1:=xlAscending, Key2:=Range("D3") _
        , Order2:=xlAscending, Key3:=Range("E3"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
        False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
        :=xlSortNormal
Range("A3").Select
.Protect ("abc"), DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFiltering:=True
[I]End With[/I]

… suite de la macro

Je suis preneur d’une solution de ligne de programmation permettant le tri sans que la feuille fc s’affiche à l’écran avant l’exécution de la suite de la programmation non indiquée ici ?
Cordialement,
Webperegrino
 
Dernière édition:

Roland_M

XLDnaute Barbatruc
Re : Faire un Tri entre With et End with

Bonjour,

essayer de travailler sur la feuille en la nommant et sans l'activer !

pas de fc.Select

et partout à la place de ActiveSheet. . . . ceci Sheets(TaFeuille). . . .

qq dans le genre !?
j'ai pas compris tu as un code différent à Unprotect et Protect !? j'ai remis idem "abc" au deux !

Code:
Sub DDDDDDDDDDDD()
With Application: .EnableEvents = False: .ScreenUpdating = False: End With
Feuil$ = "NomDeTaFeuille"

J& = Sheets(Feuil$).[B518].End(xlUp).Row

Sheets(Feuil$).Unprotect ("abc")
Sheets(Feuil$).Rows("3:" & J).Sort Key1:=Sheets(Feuil$).Range("B3"), Order1:=xlAscending, Key2:=Sheets(Feuil$).Range("D3"), _
        Order2:=xlAscending, Key3:=Sheets(Feuil$).Range("E3"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
        Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal

Sheets(Feuil$).Protect ("abc"), DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFiltering:=True
With Application: .EnableEvents = True: .ScreenUpdating = True: End With
End Sub

'suite ...
 
Dernière édition:

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Faire un Tri entre With et End with

Bonjour Le Forum,
Bonjour Roland_M,
Le idem "abc" c'est exact : j'ai fait une faute de frappe. Je corrige dans le message 1.

La proposition que vous me faites est concluante.
Tout est entré dans l'ordre, le tri se fait en "caché" et la suite de la programmation s'exécute parfaitement.
Merci à vous et au Forum,
Bonne soirée et Cordialement,
Webperegrino
 
Dernière édition:

Discussions similaires

Réponses
3
Affichages
547

Statistiques des forums

Discussions
311 709
Messages
2 081 769
Membres
101 816
dernier inscrit
Jfrcs