Merci quand même d'avoir répondu.
Ca fait 2 jours que je cherche des erreurs dans mon code, et je viens de retester l'histoire de la ligne Cells(0, xxx) et effectivement ça ne marche plus.
C'est à ne rien y comprendre car je jure qu'avant j'avais evidemment mis la ligne 1 et qu'il me renvoyait les données de la ligne 2 !!! En mettant 0 j'obtenais alors les données de la ligne 1 !
Je viens de vérifier quand même, et là Cells(1, xxx) renvoie bien les données de la ligne 1 
Concernant la ligne suivante :
Set CdC = Worksheets("Tabelle1").AutoFilter.Range.SpecialCells(xlCellTypeVisible)
Ca provient du net, les quelques codes que j'ai trouvé font tous la même chose. Le but est de définir une plage de données qui correspondant aux résultat de l'autofiltre sur une feuille (données visibles donc).
La différence entre la sub et la function, c'est que la sub s'éxecute de n'importe ou.
Tu crées une sub dans un moduile : tu l'enregistres. Cette sub tu peux l'éxécuter dans tous le classeur, sur n'importe quelle feuille, avec l'option macro, ou bien à partir d'un bouton, ou encore je ne sais quoi. La sub est enregistrée et n'a pas de point d'atache en gros.
Ta fonction, tu as beau l'avoir mis dans le module 1, elle est appelée à chaque fois depuis la céllule dans laquelle tu l'appelles ("=tafonction(xxx)"). Je ne sais pas comment te l'expiquer mais tant que la fonction n'est pas terminée, il y a une espèce de point d'ancrage sur ta feuille contrairement à une sub. La preuve c'est qu'un autofiltre ne perdure pas et n'est pas visible, l'activation d'une sheet n'est pas visible / ne fonctionne pas, etc...
Enfin, pour le moment j'ai toujours un problème avec l'instruction Set CdC ou l'autofilter qui ne se met pas en place.
Partager