Comment détecter un tri ?

B

bobbob

Guest
Bonjour,

J'ai un petit problème avec ce fichier excel.
Je ne fais du VBA que depuis 3 jours, mais je pense que ma question peut concerner d'autres utilisateurs.
Voici mon problème:
J'ai un classeur excel qui possède plusieurs feuilles différentes dont une qui s'appelle "instruments". Sur cette feuille, il me faut absolument détecter si l'utilisateur a effectué un tri de données. J'ai créé deux évènements sheetChange(...) et sheetCalculate(...) pour voir si j'arrivais à capter ce type d'évènement. Hélas, après le tri, je ne recoit pas l'évènement change (ce qui est bien dommage vu que la feuille est effectivement modifiée).
Je fait donc une autre hypothèse qui est qu'il existe peut-être d'autres évènements gérant ce type de cas. Je ne connais effectivement pas les autres évènements vu que je n'ai pas de bouquin la dessus.
Ma question étant : Existe t'il un évènement pour detecter ce cas ? Sinon je suis pas dans la m... !!
Si oui, lequel et puis si vous pouviez m'envoyer une liste d'évènements ou une adresse les recencant (je suis pas difficile!) ca serait super gentil.

Merci
J'espère que j'ai pas fait trop long ;)
 

Pièces jointes

  • LastImport.zip
    29.7 KB · Affichages: 28
@

@+Thierry

Guest
Bonjour Bobbob et le Forum

J'ai testé, il est exact que l'action "Tri" ne déclenche pas d'évènement Change ou Calculate.

Il faut trouver une astuce un peu tordue pour contourner ce problème... Voici ce que j'ai trouvée...

Admettons en colonne "A" tu as des données de A1 à A50 que tu vas donc trier....

En A51 (ou ailleurs) tu mets une somme =SUM(A1:A50) (même si c'est du texte qui est contenu dans la plage, ce n'est pas important, d'ailleurs tu peux masquer la ligne 51 car elle ne servira qu'à déclencher un évènement "Calculate"... Peut-être il y a plus "catholique" comme moyen, mais celà fonctionne.

Pour la liste des évènements et bien c'est sîmple VBA te les met tout prèt à utiliser sans même à avoir à les taper toi-même!

Quand tu es dans VBE, sur un private module de Feuille (ou autres Private Module) tu as deux ListBoxes en top du module...
Dans ce cas Private Module de Feuille tu as à droite dans la ListBox :
(General)
et à Gauche dans la ListBox :
(Declaration)

Il te suffit d'aller dans la ListBox de gauche et de choisir "WorkSheet" ... puis la ListBox de droite te listera tous les évènement applicables pour "WorkSheet"...

Ceci est également valable pour tous les évènmements (ThisWorkBook, UserForm)

Bonne Journée
@+Thierry
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 847
dernier inscrit
Djigbenou