Problème Userform et focus récalcitrant [Résolu]

Chamanoob 2 Messages postés lundi 9 janvier 2012Date d'inscription 26 février 2012 Dernière intervention - 26 févr. 2012 à 20:49 - Dernière réponse : ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention
- 26 févr. 2012 à 22:31
Bonjour à tous,
Je suis débutant (ou presque) sur vba et me suis inconsciemment lancé dans la programmation bénévole pour un collègue .
Celui-ci utilise une balance reliée à un PC via usb et les mesures sont enregistrées sur un classeur Excel. J'ignore comment est paramétrée la balance (et je ne veux surtout pas rentrer la dedans) et tout ce que je sais, c'est que la valeur de la pesée s'affiche dans la cellule active (quelle qu'elle soit).
Je souhaite simplement afficher à l'écran lors de l'enregistrement un message du type "veuillez patienter..." lors de la saisie automatique. Du fait du caractère modal des boites de dialogue classiques j'utilise plutôt un userform non modal. Le problème est que lorsque l'userform est affichée, c'est elle qui est active. Pour être plus clair c'est elle qui reçoit l'info de la balance et donc, message d'erreur, sortie de la macro... Or lorsqu'après l'ouverture de l'userform, je clique sur une cellule tout se passe normalement.
J'ai essayé des commandes du type "activate" et même "AppActivate Microsoft Excel" pour redonner le focus à la feuille de calcul mais rien n'y fait.
Seul le clique réel permet au classeur de reprendre le focus. Je suis très contrarié ...
Y'aurait-il un moyen de simuler un click ou quelque chose d'un peu plus élégant pour pallier à mon problème?
Merci par avance pour votre aide
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 26 févr. 2012 à 20:57
3
Merci
Bonjour,
1) Rien de cela ne me parait être du VB6 (la présente section). Cette discussion aurait du être ouverte dans la section Langages dérivés > VBA. Note le pour la prochaine fois
2) le fait que tu aies à faire cela pour un collègue ne nous regarde pas et ne nous éclaire en rien.
3) affiche donc ce message dans un simple label sur ta feuille, avec sa propriété enabled = False (il ne prendra jamais le focus).


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient

Merci ucfoutu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de ucfoutu
Meilleure réponse
Utilisateur anonyme - 26 févr. 2012 à 21:02
3
Merci
Bonjour,
Je ne sais pas si j'ai tout compris, mais la ça me rappelle un lecteur de code à barres qui était connecté sur le port PS2 (en parallèle avec le clavier) et il envoyait les chiffres sur le contrôle qui avait le focus...
Ton "veuillez patienter" devrait s'afficher dans une cellule tout en gardant le focus sur une autre (celle qui attend les données), non?


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique

Merci Utilisateur anonyme 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de Utilisateur anonyme
Meilleure réponse
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 26 févr. 2012 à 21:05
3
Merci
ou encore :
Application.StatusBar = "Veuillez patienter"
parmi des milliers de solutions sans donner le focus !


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient

Merci ucfoutu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de ucfoutu
Meilleure réponse
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 26 févr. 2012 à 22:31
3
Merci
Bon.
Le label, oui.
Et pour interrompre : fastoche, puisque la donnée reçue modifie une cellule :
Evènement WorkSheet_Change ====>> label1.visible = False
Marchera forcément à tous coups
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient

Merci ucfoutu 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 101 internautes ce mois-ci

Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 26 févr. 2012 à 21:20
0
Merci
Tiens ====>> en voilà encore une autre, qui aurait toutefois le don de me donner envie de donner un coup de poing à l'écran :
titi = ActiveWindow.Caption
 For i = 1 To 20
   If ActiveWindow.Caption <> "Veuillez patienter" Then
     ActiveWindow.Caption = "Veuillez patienter"
   Else: ActiveWindow.Caption = "Compris ?"
    
   End If
    deb = Timer
   Do While Timer < deb + 0.5
       DoEvents
   Loop
 Next
 ActiveWindow.Caption = titi
*

question : comment peut-on raisonnablement perdre son temps sur de telles "bébelles" à 4 sous qui n'apportent rien ?

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Commenter la réponse de ucfoutu
Chamanoob 2 Messages postés lundi 9 janvier 2012Date d'inscription 26 février 2012 Dernière intervention - 26 févr. 2012 à 22:23
0
Merci
Désolé pour l'erreur de section je ne suis pas encore un familier du site.
Merci à vous pour ces réponses, je crois que j'ai compris et je vais essayer de mettre en pratique... (sauf pour ton dernier code ucfoutu, qui provoque en moi la même émotion).
Avec un bémol car je ne vous ai pas donné toutes les infos : je dois pouvoir interrompre (bouton sur UF) en fin de saisie car la macro protège le document, le copie et l'enregistre...
En fait, cette bébelles n'est qu'un détail de l'enregistrement, lui même une petite partie du futur traitement des données. Et je sais que c'est lourdingue mais le document sur lequel je travaille est enregistré dans un système normé ISO, figé, lourd et sécurisé à outrance. Chaque manip doit donc être sécurisée un milliard de fois, l'opérateur doit guidé et avoir le moins de latitude possible.
Merci en tout cas, je vais explorer la piste du label,

Cordialement
Commenter la réponse de Chamanoob
Utilisateur anonyme - 26 févr. 2012 à 22:29
0
Merci
je vais explorer la piste du label

Oui, c'est encore le plus visible et tu peux le placer où tu veux avec la taille que tu veux...


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Commenter la réponse de Utilisateur anonyme

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.