Microsoft 365 Tentative d'utilisation du contrôle RefEdit

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 !

Hecatonchire

XLDnaute Nouveau
Bonjour à tous,

Je suis confronté à quelques disfonctionnements/difficultés avec ce contrôle (que j'ai peu utilisé) et j'aimerais avoir des conseils/partage d'expérience sur l'utilisation de cette "superbe" fonctionnalité (c'était ironique, si vous avez autre chose je suis largement preneur 😰).

La situation de départ : Un formulaire UF1 ouvre un UF2 contenant un RefEdit (version simplifiée du cas réel).
Les problèmes rencontrés et mes solutions (pas sur de ne être en train de creuser ma propre tombe avec) :
1-J'ouvre UF1 puis UF2, RefEdit prend le focus et c'est mort (blocage sur mon poste) ! => Ok, je place un contrôle textbox qui prend le focus => ça marche !
2-Si j'utilise le RefEdit pour sélectionner une plage, c'est UF1 qui reprend le focus m'empêchant de retourner sur UF2 et là je suis bloqué => Ok, j'ouvre UF1 en non modale => ça marche !
3-Si j'ouvre UF1, puis UF2, puis le ferme et le réouvre (UF2) => blocage (l'évènement initialize ne se fait même pas) => J'ai tenté hide pour UF2 au lieu de unload sans succès.

A coté de quoi je passe (à part une formation sur les USERFORM) ?

Un petit fichier de test (minimum de code).

Merci à ceux qui prendrons un peu de temps pour se pencher sur mes difficultés.
(version 365 insider beta)

Bonnes fêtes
 

Pièces jointes

Solution
Bonsoir.
Moi non plus je n'utilise jamais ce contrôle, et il me semble qu'il y a très longtemps il me posait des problèmes. Je préfère un UserForm avec ShowModal à False et soit un CommandButton qui récupère ActiveCell, soit même un Private WithEvent Wsh As Worksheet en surveillant Wsh_SelectionChange.
Si ça vous intéresse j'ai un vieil UserForm UFmSelect qui utilise carrément un WithEvents Excel As Application, permettant de sélectionner toutes sortes de plages pour un certain traitement lancé à la fin.
1735519677759.png
@ Dranreb : Merci du partage, je vais regarder ça (je n'ai pas oser faire la vieille blague pourri "l'année prochaine").
Je pense avoir déjà pas mal de pistes à explorer.

Je sais déjà que je ne dois plus m'obstiner avec ce "*#!-¤µ" de contrôle (j'espère que "*#!-¤µ" n'est pas contraire à la charte du forum).

Bon réveillon.
 
Bonjour et bonne année.
En écrivant mon poste #12 je croyais qu'on parlais de quelque chose qui devait s'afficher dans l'UserForm utilisateur à la place des contrôles RefEdit. Je ne pensais pas à ce qui s'affiche quand on le sollicite. Pour ça j'ai bien maintenant un UFmRefEdit
Il a bien changé mon classeur de démo sur ce sujet …
 

Pièces jointes

Bonjour Dranreb et bonne année,

Merci pour ce partage que je vais garder, ça peut toujours être utile. Je n'ai pu tester la partie Valeur cible (macro externe au fichier)

Je me suis fais une petite solution basée sur WithEvents Excel As Application, qui me va bien pour remplacer mes 7 refEdit (correspondant à ton UFmRefEdit).

Pour me faire plaindre, je galère pas mal avec ce UF (merci Micros....😭) : Apres les RefEdit,
> C'est le treeview (compatibilité 64bits) => heureusement j'ai trouvé https://jkp-ads.com/articles/treeview.aspx
> Puis la gestion des groupes de formes (shapes) => Le treeview doit récupérer la hiérarchisation (groupe/sous groupe) d'une partie des formes mais ça bug (cf https://excel-downloads.com/threads/formes-groupe-de-formes-groupe-de-groupes-etc.20082612/) => je vais (pas encore fait) utiliser une partie du nom des formes pour mémoriser cette hiérarchisation vu que c'est mon application qui génères les formes).

Encore merci pour ton aide.
 
C'est accidentel, il y a un lien avec mon classeur de macros, je ne sais pas pourquoi.
Ah, si, c'est le bouton "Valeur cible" qui a pour action la macro MaValeurCible de mon classeur de macros au lieu de celle du classeur !
Affectez simplement la macro du classeur, et ça devrait être bon.
Mais, considérant vos galères, mes 2 outils ne sont-ils pas suffisamment plus simple d'emploi pour que vous remplaciez les vôtres par les miens ?
 
3-Si j'ouvre UF1, puis UF2, puis le ferme et le réouvre (UF2) => blocage (l'évènement initialize ne se fait même pas) => J'ai tenté hide pour UF2 au lieu de unload sans succès.

Sauf que vous relancez le premier USF en modale et le code reste bloqué sur cette ligne dans Terminate jusqu'a la fermeture de USF1 qui ne se produira jamais on peut dire que c'est un blocage mutuel

donc relancer le premier forme en non modale

VB:
Private Sub UserForm_Terminate()
UF1NM.Show 0
End Sub
 
Bonjour et bonne année.
Si l'UserForm utilisateur est modal, il peut s'en sortir en faisant Me.Hide juste avant d'invoquer un UserForm non modal, puis Me.Show dès que l'autre n'est plus affiché, ou en tout cas que ses vertus non modales n'ont plus d'utilité. C'est comme ça que fonctionnent mes démos avec UserForm dans mon UFmSelect.xlsm
VB:
Option Explicit
Private Rng As Range
Private Sub CBnSelect_Click()
   Me.Hide
   UFmRefEdit.Init Titre:="Test 1 sélect en UFm", Requis:=False, _
      Range:=Rng, RelatifÀ:=ThisWorkbook
   Set Rng = UFmRefEdit.Range
   If Rng Is Nothing Then
      Label1.Caption = "La plage n'a pas été définie."
   Else
      Label1.Caption = Rng.Address(False, False, xlA1, True)
      End If
   Me.Show
   End Sub
 

Pièces jointes

Notre forum d’entraide est 100 % gratuit et le restera.
Aucune formation payante, aucun fichier à acheter, rien à vendre. Mais comme tout site, nous devons couvrir nos frais pour continuer à vous accompagner.
Soutenez-nous en souscrivant à un compte membre : c’est rapide, vous choisissez simplement votre niveau de soutien et le tour est joué.

Je soutiens la communauté et j’accède à mon compte membre
Retour