Probleme classeur actif

Hello, J'ai commencé a me lancer dans la VBA grâce a vos tutos mais aussi au forum qui permet de résoudre bien des problèmes !!

Cependant je rencontre un problème qui a mon avis viens de la sélection du classeur actif (pas sur non plus )

Le topo j'ai crée un programme qui recalcule certaines pages d'un classeur toutes les 3 secondes tout marche lorsque le classeur est ouvert en premier plan mais si j'ouvre ou travail sur un autre classeur un message d'erreur apparaît. J'ai réfléchi à des solutions possibles et je me dits qu'il faudrait que mon programme s'applique uniquement a cet unique classeur. Enfin je débute alors je me trompe peut être

Voici mon programme :

Sub Actualisation()

' Définit l'intervalle avec l'heure actuelle + dix secondes

DansTrenteSecondes = TimeSerial(Hour(Time), Minute(Time), Second(Time) + 3)

' Appel récursif de la fonction Actualisation

Application.OnTime DansTrenteSecondes, "Actualisation"

' Appel de la fonction EnregistrerEnPageWeb

For Each Name In Array("Départs", "Vols_2", "Vols", "Links", "Lignes")

Sheets(Name).Calculate

Next Name

End Sub

merci d'avance pour votre réponse

Théotime 74

Bonjour Theotime74,

Peux-tu indiquer le message d'erreur que tu reçois?

Bonjour,

le message d'erreur est le suivant (il s'ouvre dans une pop up ) :

Erreur d'exécution '9':

L'indice n'appartient pas à la sélection

Deux options me sont ensuite proposé : FIN ou DEBOGAGE

Merci de votre aide

Théotime74

Bonjour,

Tu illustres les problèmes qui se posent quand on néglige de prendre la peine de qualifier ses expressions.

Une plage (expression qui renvoie un objet Range) doit toujours référer explicitement à la feuille où elle se trouve.

Une feuille (expression qui renvoie un objet Worksheet) doit référer à son classeur, dès lors que l'on travaille avec plusieurs classeurs.

L'erreur 9 le confirme.

Cordialement.

Bonjour,

En effet je comprends bien que le problème vient de mon référencement au niveau du nom des feuilles car le programme marche lorsque ce classeur est actif. Je conçois le problème et je vois a peu près comment on pourrait le résoudre : je pense qu'il faut assigne le programme à travailler uniquement sur le classeur en question et non le classeur actif. Mon problème est désormais plus de l'ordre technique car je vois pas du tout comment le faire ( j'ai essayer avec des FOR mais Excel n'aime pas vraiment ^^ )

Si quelqu'un aurait une idée.

merci pour votre aide

Théotime74

Je pensais utiliser cela :

Workbooks("Classeur2.xlsx").Sheets("Feuil2") le problème c'est que ca ne marche pas avec :

For Each Name In Array("Départs", "Vols_2", "Vols", "Links", "Lignes")

Sheets(Name).Calculate

Donc je sais pas trop comment faire , je vais continuer de tester ca finiras bien par y arriver

OK c'est bon ca a l'air de marcher merci à vous

    ThisWorkbook.Sheets(Name).Calculate

Tu auras peut-être aussi à indiquer le nom de module, voire de projet dans la procédure rappelée... à voir si elle ne se redéclenche pas.

OK merci pour votre aide je vais regarder cela.

et je vous redit

Théotime74

Rechercher des sujets similaires à "probleme classeur actif"