Tri d'une plage avec lignes masquées (VBA)

hoerwind

XLDnaute Barbatruc
Bonjour,

J'aimerai une petite aide pour modifier ou compléter la macro sous la pièce jointe.

Cette macro (JNP, kjin ou autre ?) permet par double-clic dans la colonne B d'afficher et de masquer des lignes sur base de l'arborescence en colonne A.
Elle fonctionne parfaitement.

Le problème :
Lorsqu'une nouvelle ligne est saisie au bas de la plage (ABCD sous l'exemple joint), que la feuille est triée (menu Données - Trier) sans afficher préalablement toutes les lignes masquées, le tri ne se fait pas correctement et la macro ne remplit plus son rôle.

La solution que j'entrevois :
Empêcher le tri par la barre d'outils, uniquement pour cette feuille.
A l'enregistrement du fichier, afficher les lignes masquées, trier et afficher ce qui était affiché avant la sauvegarde.
Je n'y arrive pas par l'enregistreur de macro.

Il y a peut-être d'autres procédures pour obtenir le même résultat, mais je souhaiterai ne pas créer de bouton pour activer la macro, ni une macro qui fait le travail à chaque validation d'une saisie en colonne A.

Je vous en remercie d'avance.
 

Pièces jointes

  • TriBaseDeDonnees.zip
    21.1 KB · Affichages: 84

Victor21

XLDnaute Barbatruc
Re : Tri d'une plage avec lignes masquées (VBA)

Re, hoerwind.


Cela ne m'empêchera pas de boire un petit coup (avec modération) à ta santé.
Je me sens mieux, tout d'un coup.:)

Un essai avec la hauteur des lignes copiée en colonne J, (qu'on pourra masquer) qui permet la mémorisation avant le tri, et le même réaffichage après.
En espérant qu'un VBAiste passe par là pour te proposer une solution moins inélégante.

Edit : nouveau test (j'ai modifié le fichier joint : protection UserInterfaceOnly dans Workbook_Open)
Re-Edit : Bonjour, Modeste. Attendons de voir ce qu'hoerwind en pensera dès que les brûmes de ses libations dominicales se seront estompées.:):)
 

Pièces jointes

  • BaseDeDonneesMaconnerie.xls
    131 KB · Affichages: 128
  • BaseDeDonneesMaconnerie.xls
    131 KB · Affichages: 137
  • BaseDeDonneesMaconnerie.xls
    131 KB · Affichages: 142
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : Tri d'une plage avec lignes masquées (VBA)

Re-bonjour,

Pendant qu'hoerwind picole (modérément, j'en suis certain ;)) et que Victor21 s'échine (modérément, j'espère :p), une contribution, qui pourrait répondre à la dernière interrogation de Victor, sans pour autant que je sois vbaïste, ni que je considère sa solution comme inélégante :)

[...]

Edit: ... code supprimé, en définitive (si un tri a lieu entretemps, les n° de lignes ne sont plus les bons et si le fichier est fermé en outre, une variable tableau n'y survivrait pas. Ce serait cruel de ma part :()
 
Dernière édition:

hoerwind

XLDnaute Barbatruc
Re : Tri d'une plage avec lignes masquées (VBA)

Bonjour,

Il a fait chaud hier après-midi, hier soir aussi, heureusement que la température était clémente !

Fo_rum,
Merci, ton idée du double-clic en A3 est excellente, à retenir !
Par contre le tri ne s'effectue pas correctement, il y a un décalage des données entre les colonnes A et B.
Si tu ne vois pas ce dont je parle, je te mets un petit extrait en pièce jointe.

Victor,
Merci, on y est presque !
La seule petite remarque : pourquoi ne pas effacer en fin de macro les données de la colonne J ?
Je peux les déplacer dans une autre colonne (j'ai vu où cela se passe), mais tout simplement effacer n'est-ce pas plus simple ?

Modeste,
Merci à toi aussi d'avoir essayé.

Conclusion :
Il faudra absolument que je m'y mette aussi aux macros ... à votre aide !
Première petite question : quand ou pourquoi faut-il mettre une macro dans la feuille, dans un module ou dans ThisWorkbook ?

Merci encore et au plaisir (avec impatience) de vous relire.
 

Victor21

XLDnaute Barbatruc
Re : Tri d'une plage avec lignes masquées (VBA)

Bonjour, hoerwind.

La seule petite remarque : pourquoi ne pas effacer en fin de macro les données de la colonne J ?
Je peux les déplacer dans une autre colonne (j'ai vu où cela se passe), mais tout simplement effacer n'est-ce pas plus simple ?

Mais bon sang, mais c'est bien sûr... C'est fait.

Il faut évidemment protéger les formules, et même les masquer, mais comment fait-on alors pour supprimer une ligne ?
Les macros se moquent de la protection avec UserInterfaceOnly.
Tu peux supprimer une ligne en cliquant droit sur la cellule concernée (toujours colonne B, mais on peut aussi changer).
 

Pièces jointes

  • BaseDeDonneesMaconnerie.xls
    132.5 KB · Affichages: 152
  • BaseDeDonneesMaconnerie.xls
    132.5 KB · Affichages: 157
  • BaseDeDonneesMaconnerie.xls
    132.5 KB · Affichages: 159

hoerwind

XLDnaute Barbatruc
Re : Tri d'une plage avec lignes masquées (VBA)

Re,

C'est ce qu'on appelle du "beau travail !", bravo et merci pour ton implication.

La seule chose qui me dérange encore fortement, c'est de devoir dépendre de quelqu'un d'autre pour réaliser ce dont j'ai envie, mais là tu n'y peux rien, cela dépend uniquement de moi.

Je ne suis pas du type "assisté", et j'aurai déjà du m'y habituer depuis que ma femme m'a donné deux fils, mais non, je ne m'y fais pas.
 

Discussions similaires

Statistiques des forums

Discussions
312 611
Messages
2 090 224
Membres
104 452
dernier inscrit
hamzamounir