Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

[RESOLU]Afficher mon UF uniquement quand je suis dans le bon classeur Excel

  • Initiateur de la discussion Initiateur de la discussion alex53
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

alex53

XLDnaute Junior
Bonjour le forum,

J'ai un userform qui fonctionne comme je le souhaite (au passage merci au forum pour votre aide). Cet UF me permet de rentrer des donnees de maniere ordonnee dans un classeur excel
J'ai cependant un petit souci: Pour remplir mon UF, je suis amene a ouvrir d'autres classeur excel. Or, si par inadvertance je valide mon UF alors que je ne suis pas dans le bon classeur excel (=celui ou sont enregistre les donnees), alors j'ai un message d'erreur qui s'affiche et je dois recommencer toute la saisie de mon UF.

Par consequent, j'aimerais pouvoir afficher mon UF que lorsque je suis dans le bon classeur. Pouvez vous m'aider?

J'ai 1 question liee a ce sujet:
-ce qui se passe avec mon UF, est-ce le fonctionnement "par defaut" , ou bien est-ce du a mon code?

Merci pour votre aide
Alex53
 
Dernière édition:
Re : Afficher mon UF uniquement quand je suis dans le bon classeur Excel

Bonjour,

peut être avec un test comme celui-ci :
Code:
If ActiveWorkbook.Name = "monclasseur.xls" Then UserForm1.Show

peut être faire aussi un test sur la feuille active avec le même principe...

bonne journée
@+
 
Re : Afficher mon UF uniquement quand je suis dans le bon classeur Excel

Salut alex53 et le forum
-ce qui se passe avec mon UF, est-ce le fonctionnement "par defaut" , ou bien est-ce du a mon code?
Les deux : Juste une question... c'est quoi ton code ? Personnellement, n'étant ni devin ni télépathe, j'ai du mal à lire ta troisième ligne de la seconde macro ! 😀

Si tu ne précise pas le classeur, Excel prend par défaut celui actif.

Il te reste à lui préciser dans quel classeur, dans quelle feuille tu doit mettre tes données : Si tu as une "erreur de classeur", la même chose pourra arriver pour la feuille, même si aujourd'hui tu n'en as qu'une.

Deux solutions à envisager pour le classeur :
- WorkBooks("X")
ou
- ThisWorkbook (si le USF est dans le classeur désiré)
La première fige "définitivement" le nom de ton classeur, la seconde, permet de changer le nom du classeur, ou de copier ton USF dans un autre classeur (dans lequel s'enregistreront les données).

Donc tes macros devront avoir la syntaxe suivante pour un Range("A1")
- ThisWokBook.Sheets(Y).range (A1")
ou
- WorkBooks("X").Sheets("Y").Range ("A1")

Comme vraisemblablement tu n'as pas qu'un range par macro, je conseillerais d'utiliser With... End With
A+
 
Dernière édition:
Re : Afficher mon UF uniquement quand je suis dans le bon classeur Excel

Bonjour Pierrot, bonjour Gorfael et merci pour vos reponses.

Gorfael,
Ta solution fonctionne, cependant, ce n'est pas exactement ce que je souhaite faire. En effet je souhaite que le USF ne soit plus visible quand je passe sur un autre workbook excel. (Avec ta solution, je peux valider mon USF tout en etant sur un autre classeur excel et sans avoir le message d'erreur, ce qui est en soi deja une bonne nouvelle)

Pierrot,
le probleme avec ce genre de solution est que cela ouvre automatiquement le USF quand je vais sur le workbook en question, ce que je ne souhaite pas.

Si vous avez d'autres idees...
Je mets un exemple simple en PJ.


Merci
 

Pièces jointes

Re : Afficher mon UF uniquement quand je suis dans le bon classeur Excel

Re,

essaye avec ceci, à placer dans le module "thisworkbook" :
Code:
Private Sub Workbook_Deactivate()
Unload UserForm1
End Sub
 
Re : Afficher mon UF uniquement quand je suis dans le bon classeur Excel

Bonjour
En complément avec la proposition de Gorfael :
Il te suffit de préciser l'adresse complète des cellules dans lesquelles tu écris. Nul besoin d'activer ou pire encore de sélectionner un classeur pour écrire dedans
with workbooks("monclasseur.xls").sheets("mafeuille")
.cells(1,2) = txtbox1
end with

de la sorte quel que soit le classeur qui est affiché "derrière" ton USF, ça remplira le bon.
 
Re : Afficher mon UF uniquement quand je suis dans le bon classeur Excel

Re-
Bonjour Misange,

Pierrot,
ok, mais ca ne fontionne pas jusqu au bout. Si je vais sur un autre classeur Excel, alors grace a ton code le USF n'est plus visible. Mais si je reviens sur mon classeur ou j enregistre l'information, alors le USF est ferme et il faut tout remplir a nouveau. C'est comme ci le Hide fonctionnait comme un unload

Misange,
Merci pour ta reponse, mais je souhaite plus precisement a cacher le USF quand je ne suis pas sur le bon classeur.

Alex53
 
Re : Afficher mon UF uniquement quand je suis dans le bon classeur Excel

Re,
C'est comme ci le Hide fonctionnait comme un unload
bah en l'état c'est un 'unloa" mais tu peux utiliser un "hide"
Code:
Private Sub Workbook_Deactivate()
UserForm1.Hide
End Sub

et pour l'afficher à la réactivation du classeur :
Code:
Private Sub Workbook_Activate()
UserForm1.Show
End Sub
 
Re : Afficher mon UF uniquement quand je suis dans le bon classeur Excel

Merci Pierrot,

En fait j 'avais deja essaye ton code, mais il y a un petit souci :
-Supposons que j'ai 2 classeurs ouverts, j'ouvre le USF dans mon classeur 1 et je rempli la case prenom. Ensuite je fais un tour dans mon classeur 2, puis revient dans mon classeur 1: alors je suis bloque=je ne peux plus aller dans mon classeur 2
-De plus le USF s'ouvre automatiquement a l'ouverture du classeur, ce que je ne souhaite pas...

Alex53
 
Re : Afficher mon UF uniquement quand je suis dans le bon classeur Excel

Re,

pour le 2ème point :
-De plus le USF s'ouvre automatiquement a l'ouverture du classeur, ce que je ne souhaite pas...

modifie comme suit :
dans un module standard :
Code:
Public b As Boolean
dans le module "thisworkbook" :
Code:
Private Sub Workbook_Deactivate()
UserForm1.Hide
b = True
End Sub
Private Sub Workbook_Activate()
If b Then UserForm1.Show
End Sub
 
Re : Afficher mon UF uniquement quand je suis dans le bon classeur Excel

Merci pour la solution au 2 eme probleme.

Pour le 1er probleme, je me re-explique:
Si j ai plusieurs classeur excel ouvert (y compris celui avec le USF), alors si j'ouvre le USF et que ensuite je navigue entre les classeurs excel, puis je reviens a mon classeur qui possede le USF alors je ne peux plus changer de classeur excel (=plus possible de naviguer entre les classeurs)

J espere que c est plus clair
 

Pièces jointes

Dernière édition:
Re : Afficher mon UF uniquement quand je suis dans le bon classeur Excel

Re,

Aarf j'ai compris le 1er point, il faut que l'usf soit toujours non modal :
Code:
Private Sub Workbook_Activate()
If b Then UserForm1.Show 0
End Sub

Edition : regarde également le post 11, vient en complément....
 
Re : Afficher mon UF uniquement quand je suis dans le bon classeur Excel

Bonjour,
Il semblerait que j'ai parle un peu trop vite. Il reste un petit bug que je n'arrive pas a resoudre.
Si j'ai 2 fichiers excel ouvert (dont celui avec la macro), alors quand je passe d'un fichier excel lambda vers le fichier excel avec la macro, alors le USF s'ouvre automatiquement....
Une idee?

Ci-joint le fichier exemple

Merci
Alex53
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…