Macro Excel 2007 : Faire réagir un UF avec sélection sur une feuille quel quelco [Résolu]

Messages postés
8
Date d'inscription
dimanche 15 mai 2011
Statut
Membre
Dernière intervention
23 mai 2011
- - Dernière réponse : Gyfo
Messages postés
8
Date d'inscription
dimanche 15 mai 2011
Statut
Membre
Dernière intervention
23 mai 2011
- 23 mai 2011 à 14:42
Bonjour le forum !

Je souhaiterais savoir si il est possible de faire réagir un Userform en Show modal false juste en sélectionnant une ou des cellules sur une feuille quelconque?

Pour faire simple, il faudrait que l'UF ouvert sache que je travaille sur la feuille !

Merci pour votre réponse!!
Afficher la suite 

7 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
3
Merci
Bonjour,

il faudrait que l'UF ouvert sache que je travaille sur la feuille


Ben !
Il te suffit peut-être d'utiliser l'évènement
Worksheet_Activate()
Et ton UserForm apparaîtra à chaque activation de ta feuille
Si_, maintenant, c'est à chaque fois que tu rentre dans une cellule, que tu veux finalement afficher cet Userform, utilise alors l'évènement :
Worksheet_SelectionChange


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 139 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
3
Merci
Un UserForm peut toujours être chargé (Load) et non visible
Il semble que tu veuilles gérer depuis l'UserForm lui-même et non en repérant un changement de cellule depuis les feuilles, si je t'ai compris.

Alors (mais assez cher en ressources) :
Tu peux toujours, depuis un UserForm, lire le nom de la feuille active (ActiveSheet.Name) et l'adresse de la cellule active(ActiveCell.Address)
Il te faudra toutefois, puisque non directement dépendant des évènements de feuille, inévitablement faire un test pour voir périodiquement sur quelle feuille et quelle cellule tu es !
Une espèce de Timer, donc, que tu peux réaliser à l'aide de Application.Ontime (voir dans ton aide VBA ce que c'est)
A toi de définir maintenant la fréquence de ce "timer". Plus elle sera haute, plus tu dépenseras en ressources, bien évidemment !
Pour la gestion : mécanisme simple :
utilisation de 2 Variables générales dans ton module et, dans ta procédure de vérif :
- si lecture de activesheet.name et/ou activecell.address # du contenu des variables : ===>> montrer l'UserForm et donner à ceds deux variables la valeur de ces nouvelles données
- si toujours les mêmes ===>> ne rien faire
A toi de jouer, maintenant (si tu tiens vraiment à un tel mécanisme)



____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 139 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
8
Date d'inscription
dimanche 15 mai 2011
Statut
Membre
Dernière intervention
23 mai 2011
0
Merci
Merci Ucfoutu,

Mais, ça je le fais déja, mais j'aurais voulu ne rien inscrire en code sur la feuille, vu que cet UF va fonctionner sur plusieurs classeur et plusieurs feuilles. La seule chose que je voudrais c'est simplement faire réagir mon UF à chaque fois que je fais quelque chose!

Mais sans rien écrire sur la feuille cela n'est sans doute pas possible!!
Commenter la réponse de Gyfo
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
212
0
Merci
à chaque fois que je fais quelque chose

quoi, par exemple (petite liste) ?

Et qu'entendrais-tu alors (petite liste également) par ne rien faire ?

Précise donc ces deux points.
Certains, par exemple, considèreront que le seul fait de déplacer une souris (sans en utiliser le bouton), c'est faire quelque chose ... et d'autres considèreront que non !
____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
Commenter la réponse de ucfoutu
Messages postés
8
Date d'inscription
dimanche 15 mai 2011
Statut
Membre
Dernière intervention
23 mai 2011
0
Merci
Re bonjour Ucfoutu,

Oui, pas facile te transcrire ma pensée!

Je t’explique: ds cet Userform qui me donne la somme de la sélection :"TextBox1 = Application.Subtotal(109, Selection)"

Mais sans toucher ou passer sur celui-ci, je voudrais qu'il me donne la somme de la sélection en instantané! Je sais qu'en mettant ce code dans la feuille ça marche,
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If UF.Visible = False Then GoTo fin1

UF.TextBox1 = Application.Subtotal(109, Selection)
fin1:

Mais il m'est compliqué d'inscrire ça sur des feuilles que je ne connais pas. Puisque cet Uf est partagé à tous mes classeurs.

Donc pour ta question, je voudrais savoir si ma sélection change, et ça de l'UF !
Mais plus ça va et je pense que ce n'est pas possible, car l'UF n'est pas actif lorsque je suis sur la feuille!
Commenter la réponse de Gyfo
Messages postés
8
Date d'inscription
dimanche 15 mai 2011
Statut
Membre
Dernière intervention
23 mai 2011
0
Merci
Merci Ucfoutu,

Tu as raison! Je vais quand même essayer ta formule et on verra bien! Surtout que pour ce qui est tu timer je ne connnais pas! alors ça me fera un exercice! Sinon pour le moment je fonctionne de la sorte :
Private Sub UserForm_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)


UF1.TextBox5 = Application.Subtotal(109, Selection)
UF1.TextBox5.Value = Format(UF1.TextBox5, "##0.00")
End Sub

Mais comme de bien entendu, il faut passer sur l'UF !

Donc si pas d'autre solution j'essaye !

à la suite !
Commenter la réponse de Gyfo
Messages postés
8
Date d'inscription
dimanche 15 mai 2011
Statut
Membre
Dernière intervention
23 mai 2011
0
Merci
Ucfoutu,

Merci pour ton conseil, ça fonctionne plutôt bien, de plus j'ai réglé mon timer à 0.5 pour avoir plus de réactivité.Mais pour le lancer, j'utilise UserForm_MouseMove car je trouve ça plus pratique!

Merci à toi, ce petit utilitaire va certainement nous servir souvent ds nos applications.

A bientôt si tu n'as pas de nvl remarques !
Commenter la réponse de Gyfo