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.
Pour ouvrir les fiches des membres, j'utilise une boite de dialogue. Celle-ci contient :
  • 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.
Le code qui semble poser problème est le suivant :

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.

Rechercher des sujets similaires à "feuille invisible active vice versa"