Feuille invisible et active...et vice-versa
Bonjour à tous
Je vais essayer de résumer mon problème. J'utilise une boite de dialogue pour afficher des feuilles dans un fichier Excel. La macro fonctionne mais quand j'essaie de saisir quoi que ce soit dans la feuille visible, les données sont en fait saisies sur la feuille masquée sur laquelle est le bouton d'ouverture de la boite de dialogue. J'ai vu un post très proche de mon problème sur le forum, mais il n'était pas résolu.
Plus en détail :
Je souhaite que l'utilisateur de mon fichier n'ait toujours qu'une feuille visible : celle sur laquelle il travaille.
J'ai donc une feuille "Accueil" sur laquelle il y a 2 boutons :
- l'un permet de choisir une des feuilles de travail (fiches), nommée du nom de chaque individu "membre". Je précise que dans le fichier ci-joint les noms sont totalement bidon. Je précise aussi que c'est une version light. Dans la version complète, on peut créer une feuille pour chaque membre à partir d'un modèle.
- l'autre permet d'aller à une feuille comprenant le récapitulatif des scores de chaque membres : la feuille "Suivi". Elle comprend aussi la liste des membres. Il n'y a pas de saisie sur cette feuille. Elle est alimentée par toutes les fiches des membres.
- une comboBox reliée à la liste des membres sur la feuille "Suivi" qui permet de choisir dans la liste des noms des membres.
- un bouton OK qui lance le code qui semble poser problème (que j'ai récupéré sur internet sans totalement bien le comprendre)
- un bouton Annuler qui permet de sortir de la boite de dialogue sans qu'il ne se passe rien.
Private Sub OkButton_Click()
Unload SearchUF
Dim Feuil as Object
Dim strSheetToShow As String
strSheetToShow = MemberCB.Text
' Accélérateur de macro : non affichage des écrans
Application.ScreenUpdating = False
' Affiche toutes les feuilles du classeur
For Each Feuil In ThisWorkbook.Sheets
Feuil.Visible = True
Next Feuil
' Cache toutes les feuilles du classeur sauf la feuille choisie
For Each Feuil In ThisWorkbook.Sheets
If Feuil .Name <> strSheetToShow Then
Feuil.Visible = False
End If
Next Feuil
Sheets(strSheetToShow).Activate
' Réaffichage des écrans
Application.ScreenUpdating = True
End Sub
SearchUF est la boite dialogue. MemberCB est la valeur du ComboBox (chaine de caractère "NOM Prénom" du membre qui est aussi le nom de sa fiche. Je précise que ce code permet de choisir parmi des noms de feuilles qu'on ne connait pas à l'avance car des membres peuvent être créés ou supprimés en permanence dans la version complète du fichier.
Au final, quand on est sur la fiche d'un membre, c'est comme si on restait sur la page d'accueil. Celle-ci est invisible mais reste active alors que la feuille visible n'est pas active. Je précise que quand on fait les opérations afficher/masquer à la main (clic droit sur le nom de la feuille -> afficher/masquer) tout fonctionne parfaitement.
Merci pour votre aide, je bute sur ce problème depuis plusieurs semaines maintenant.
bonjour,
La feuille visible est toujours la feuille active.
Une feuille invisible ne peut jamais active.
Mais cela n'empêche pas de la lire ou d'y écrire.
Pour reformuler ma réponse : Qu'une feuille ou un classeur soit visible ou actif n'empêche pas de travailler dessus.
C'est la programmation qui détermine quelle est la feuille cible, mais ni le select, ni le activate ni le visible.
A+
Bonjour Galopin
Merci pour la réponse
En fait, le code que j'avais rédigé fonctionne très bien...sur mon ordinateur de bureau mais pas sur mon PC perso. La faute à une version d'Excel non compatible ?
Comme j'avais le même problème sur l'ordinateur sur lequel je devais installer le fichier contenant la boite de dialogue qui posait problème, j'ai remplacé la boite de dialogue par une liste déroulante dans la feuille de calcul. Cela fonctionne très bien.
Encore merci pour les explications.