XL 2013 Désélectionner suite tri vba

zizan

XLDnaute Nouveau
Bonjour,
D'une feuille nommée "donnée" je transfère les saisies vers un tableau en générant un tri sur une colonne.
Le problème est que la zone reste sélectionnée.
Je voudrais que se soit la dernière ligne vide et cela sur toutes les feuilles sauf la feuille "donnée"
voir fichier joint

Merci
 

Pièces jointes

  • gestion.xlsm
    944.3 KB · Affichages: 12

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Zizan,
Une solution simple en sélectionnant la première cellule vide de la feuille concernée:
VB:
...
...
End With
Application.ScreenUpdating = False
Sheets(f.[B7].Value).Activate
Range("A" & Application.CountA(Range("A:A")) + 1).Select
Sheets("Donnée").Activate
...
...
 

job75

XLDnaute Barbatruc
Bonjour zizan, salut sylvanu,

J'ai fait un sérieux ménage dans votre fichier, son poids passe de 944 Ko à 53 Ko...

D'abord voyez ce code qui ne sélectionne rien du tout :
VB:
Sub Ajouter_trier()
Dim f As Worksheet
Set f = Sheets("Donnée")
On Error Resume Next 'si la feuille n'existe pas
With Sheets(f.[B7].Value)
    .Cells(Rows.Count, 1).End(xlUp)(2).Resize(, 7) = f.[A2:G2].Value
    With .[A1].CurrentRegion.Offset(2)
        With .Resize(.Rows.Count - 2)
            .Sort .Cells(1), xlAscending, Header:=xlNo
            .Columns(8) = "=IF(A3="""","""",N(H2)+G3-F3)" 'formule du cumul en colonne H
        End With
    End With
End With
f.[B7,B10,D10,B14,D14,F14,B18,D18] = Empty
End Sub
Il entre en même temps la formule de cumul en colonne H, ce qui est quand même mieux que de l'entrer sur plus de 30 000 lignes comme vous l'aviez fait !!!

Ensuite si vous tenez à sélectionner la 1ère cellule vide placez ce code dans ThisWorkbook :
Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name <> "Donnée" Then Application.Goto Sh.[A:A].Find("", , xlValues)
End Sub
A+
 
Dernière édition:

zizan

XLDnaute Nouveau
Bonjour,

Fascinant, je n'en demandais pas tant.
pourriez vous m'expliquer step by step votre code.
J'ai créé ce fichier, comme un débutant en prenant des codes par ci par là des codes.
cela fonctionne, mais j'avoue c'est un lourd.

Merci
 

job75

XLDnaute Barbatruc
Bonjour zizan, le forum,

Dans ce fichier (2) les tableaux sont sous forme de tableaux structurés (menu Insertion-Tableau).

Ils s'agrandissent automatiquement avec formule et MFC et le code est plus simple :
VB:
Sub Ajouter_trier()
Dim f As Worksheet
Set f = Sheets("Donnée")
On Error Resume Next 'si la feuille n'existe pas
With Sheets(f.[B7].Value)
    .Cells(Rows.Count, 1).End(xlUp)(2).Resize(, 7) = f.[A2:G2].Value
    With .ListObjects(1).Range 'tableau structuré
        .Sort .Cells(1), xlAscending, Header:=xlYes
        .Cells(2, 8) = "=IF(A3="""","""",N(H2)+G3-F3)" 'sécurité, formule en colonne H
    End With
End With
f.[B7,B10,D10,B14,D14,F14,B18,D18] = Empty
End Sub
A+
 

Pièces jointes

  • gestion(2).xlsm
    54.3 KB · Affichages: 6

Discussions similaires

Réponses
25
Affichages
655

Statistiques des forums

Discussions
312 204
Messages
2 086 198
Membres
103 154
dernier inscrit
jefferson6488