OVH Cloud OVH Cloud

erreur dans une macro

4 réponses
Avatar
dd
bonjour,

j'ai la macro suivante qui fonctionnait très bien jusque-là...:
Private Sub Workbook_Open()
Sheets(Format(Date, "mmmm")).Select
End Sub

Mais depuis qq jours le message d'erreur suivant apparaît :

"erreur d'excéution '9'
L'indice n'appartient pas à la sélection".

Le fichier a peut-être modifié par qq'un (c'est un fichier partagé), sans
m'en avertir, ce qui pourrait expliquer le mauvais fonctionnement depuis qq
jours, mais a priori j'ai rien vu de spécial. C'est un fichier avec 12
feuilles chacune représentant le planning d'un mois, le but de la macro étant
de faire ouvrir le fichier sur le mois en cours...

Qq'un a t-il une solution pour régler mon pb?

merci
dd

4 réponses

Avatar
michdenis
Bonjour DD,


Format(Date, "mmmm") retourne le mois (écris en long) de la date courante. Tu dois t'assurer que ton classeur contient réellement
une feuille à ce nom et que ce nom est écrit correctement.

Salutations!


"dd" a écrit dans le message de news:
bonjour,

j'ai la macro suivante qui fonctionnait très bien jusque-là...:
Private Sub Workbook_Open()
Sheets(Format(Date, "mmmm")).Select
End Sub

Mais depuis qq jours le message d'erreur suivant apparaît :

"erreur d'excéution '9'
L'indice n'appartient pas à la sélection".

Le fichier a peut-être modifié par qq'un (c'est un fichier partagé), sans
m'en avertir, ce qui pourrait expliquer le mauvais fonctionnement depuis qq
jours, mais a priori j'ai rien vu de spécial. C'est un fichier avec 12
feuilles chacune représentant le planning d'un mois, le but de la macro étant
de faire ouvrir le fichier sur le mois en cours...

Qq'un a t-il une solution pour régler mon pb?

merci
dd
Avatar
michdenis
Bonjour DD,

Si tu veux éviter que des petits comiques modifient l'onglet de tes feuilles et fassent planter ta procédure, utilise ceci à la
place de ta ligne de code :

'Ceci ne forme qu'une ligne de code

Sheets(Worksheets(ThisWorkbook.VBProject. _
VBComponents(Format(Date, "mmmm")). _
Properties("Index")).Name).Select

Et dans la fenêtre VBE(visual basic editor) tu renommes tes 12 feuilles par un mois correspondant.

Feuil1(Feuil1") deviendrait : janvier(Feuil1)
février(feuil2")

Même si tes usagers modifient le nom des onglets des feuilles, ta procédure va continuer de fonctionner et d'afficher la bonne
feuille à l'ouverture.


Salutations!




"michdenis" a écrit dans le message de news:
Bonjour DD,


Format(Date, "mmmm") retourne le mois (écris en long) de la date courante. Tu dois t'assurer que ton classeur contient réellement
une feuille à ce nom et que ce nom est écrit correctement.

Salutations!


"dd" a écrit dans le message de news:
bonjour,

j'ai la macro suivante qui fonctionnait très bien jusque-là...:
Private Sub Workbook_Open()
Sheets(Format(Date, "mmmm")).Select
End Sub

Mais depuis qq jours le message d'erreur suivant apparaît :

"erreur d'excéution '9'
L'indice n'appartient pas à la sélection".

Le fichier a peut-être modifié par qq'un (c'est un fichier partagé), sans
m'en avertir, ce qui pourrait expliquer le mauvais fonctionnement depuis qq
jours, mais a priori j'ai rien vu de spécial. C'est un fichier avec 12
feuilles chacune représentant le planning d'un mois, le but de la macro étant
de faire ouvrir le fichier sur le mois en cours...

Qq'un a t-il une solution pour régler mon pb?

merci
dd
Avatar
dd
bonjour,
ta première suggestion fonctionne, j'ai trouvé 2 anomalies, un "2005" ajouté
sur l'onglet "janvier", et l'accent circonflexe du mois d'août qui était
absent. Donc ça refonctionne...

pour la forme je vais qd même réécrire la macro avec ta deuxième solution,
mais comment renomme t-on les feuilles sous VBE (d'ailleurs moi je trouve VBA
mais pâs VBE?). J'ai fait clic droit, mais je n'ai pas d'option "renommer"...
Désolé si mes questions sont neuneus, mais je suis pas pro des macros...

Question subsidiaire : la ligne de code c'est bien la ligne du milieu? donc
qd tu dis "ceci ne constitue qu'une ligne de code", ça signifie qu'il faut
l'écrire sur une seule ligne (le _ signifie qu'il faut en fait écrire à la
suite?)


A+
dd
Avatar
michdenis
Bonjour DD,

Dans VBA, si tu préfères,

Tu sélectionnes ta feuille, et dans la fenêtre des propriétés que tu peux afficher à partir du menu si elle n'est pas déjà présente,
tu peux modifier le nom des objets "Feuille" par la propriété Name

Les noms des objets feuille se présente de cette façon

Feuil1(Feuil1)

La propriét Name modifiera Feuil1 pour le nom du mois, Ce qui est entre parenthèse représente le nom de l'onglet de la feuille.

Pour ce qui est du code : si je n'avais pas mis de "_" , tout le code devrait être écrit sur une seule et même ligne. Cependant, tu
peux te contenter d'en faire un copier-coller.

Sheets(Worksheets(ThisWorkbook.VBProject. _
VBComponents(Format(Date, "mmmm")). _
Properties("Index")).Name).Select


Salutations!




"dd" a écrit dans le message de news:
bonjour,
ta première suggestion fonctionne, j'ai trouvé 2 anomalies, un "2005" ajouté
sur l'onglet "janvier", et l'accent circonflexe du mois d'août qui était
absent. Donc ça refonctionne...

pour la forme je vais qd même réécrire la macro avec ta deuxième solution,
mais comment renomme t-on les feuilles sous VBE (d'ailleurs moi je trouve VBA
mais pâs VBE?). J'ai fait clic droit, mais je n'ai pas d'option "renommer"...
Désolé si mes questions sont neuneus, mais je suis pas pro des macros...

Question subsidiaire : la ligne de code c'est bien la ligne du milieu? donc
qd tu dis "ceci ne constitue qu'une ligne de code", ça signifie qu'il faut
l'écrire sur une seule ligne (le _ signifie qu'il faut en fait écrire à la
suite?)


A+
dd