Mise à jour du sommaire ( noms de feuilles)

fi0011 Messages postés 2 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 17 septembre 2006 - 16 sept. 2006 à 22:42
FMatrix07 Messages postés 233 Date d'inscription mercredi 26 février 2003 Statut Membre Dernière intervention 21 février 2009 - 17 sept. 2006 à 15:47
Bonjour,

Ce site m'a été très utile depuis quelques jours, depuis que je
travaille sur un fichier excel. Pourtant je suis sur un probème que je
n'arrive pas à resoudre:

Je veux récuperer la
liste des feuilles sur une des feuille dont le nom est fixe. Le nombre
de feuilles, et les noms des autres feuilles varient ( fichier destiné
à des utilisateurs).
 
Piste 1 : faire une macro de mise à jour de la liste muni de la commande application.volatile.
Seul solution trouvé pour l'instant mais le fichier est lourd (beaucoup
de calcul qui dépendent des noms de feuilles, et une dizaine de macros)
et cette solution peu élégante ralenti l'utilisation du fichier.

 
Piste 2 : utiliser un evenement worksheet_change()
mais cette procedure demande une plage de donnée. j'ai donc utiliser la
formule magique qui permet d'avoir le nom de la feuille dans une
cellule :STXT(CELLULE("Filename";A1);TROUVE("]";CELLULE("Filename" )) + 1;31) mais worksheet_change() n'est pas actif sur le changement de la valeur de la cellule par l'intermediaire d'une formule.

 
Piste 3 : mettre des formules dans les cases pour recuperer le
nom de la feuille sur chaque feuille mais pour cela on a besoin ... du
nom de la feuille : ='Tableau de donnée'!D19Quel est la syntaxe pour utiliser plutot le numéro de la feuille ou le nom interne ( feuilx ) ?
 
Merci d'avance pour votre participation à la résolution de mon problème.

3 réponses

Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
16 sept. 2006 à 22:49
Salut,
Heu je comprends qu'à moitié tes pistes, mais pourquoi pas tout simplement :

dim i as integer
For i=0 to thisWorkbook.Worksheets.Count - 1
'Et ici tu énumère tes feuilles avec thisWorkbook.Worksheets(i)
'Tu peux récupérer leur nom avec thisWorkbook.Worksheets(i).Name
'Par exemple
thisWorkbook.Worksheet("FeuilleNomFixe").Cells(1, i).Formula = thisWorkbook.Worksheets(i).Name
Next
0
fi0011 Messages postés 2 Date d'inscription lundi 9 mai 2005 Statut Membre Dernière intervention 17 septembre 2006
17 sept. 2006 à 01:18
bon, je n'ais pas été assez explicite. En fait cette macro je l'ais faite depuis le debut mais je veux savoir comment faire pour qu'elle se lance automatiquement à chaque fois qu'un onglet est modifié.
0
FMatrix07 Messages postés 233 Date d'inscription mercredi 26 février 2003 Statut Membre Dernière intervention 21 février 2009 2
17 sept. 2006 à 15:47
Tu peux à l'ouverture lister en memoire le nom des onglets
et ajouter dans Workbook

Soit un timer qui test toutes les X secondes compar le nom de tes onglets a ceux de la liste

ou dans

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)


'test des noms onglets si different de la liste sauvegardé alors excute macro sinon exit sub
End Sub

Sinon je ne vois pas d'autres solutions
0
Rejoignez-nous