Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Utiliser donnée de TextBox

4 réponses
Avatar
Tendasque
Bonjour et bonne année à tous !

Dans la colonne A, j'ai la liste de numéros de dossards
Dans la TextBox Dossard je saisis un numéro de dossard; à validation, je
voudrais récupérer dans la variable B le numéro de ligne qui correspond au
numéro de dossard saisi pour passer à une macro et l'exécuter, puis remettre
le focus sur Dossard. Voici mon code:

Private Sub Dossard_AfterUpdate()
'ceci fonctionne:
Range("A1").Value = Dossard.Value 'juste pour vérifier

'récupérer le num de ligne du dossard saisi; ceci ne fonctionne pas et
plante Excel:
B = Application.VLookup(Dossard, Feuil5.[A3:A1000], 1, False).Row

'exécuter la macro chrono, qui elle fonctionne:
chrono

'remise à blanc de Dossard:
Dossard.Value = ""

'remettre le focus dans Dossard: ???

End Sub

Merci de votre aide

4 réponses

Avatar
michdenis
Bonjour,

Pour obtenir ce que tu désires, tu devrais changer d'événement...

As-tu essayé ceci :

Le nom de la procédure est explicit, il s'exécute chaque fois que
l'usager décide de sortir du textbox.
'------------------------------------
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Appel des procédures que tu veux

'Tu peux ajouter une (des conditions) à savoir si tu veux que les lignes
'suivantes s'exécutent...
'Annule l'événement "Exit
Cancel = True
'Sélectionne le textbox
Me.TextBox1.SetFocus

End Sub
'------------------------------------



"Tendasque" <unss34(a_enlever)@free.fr> a écrit dans le message de groupe de discussion :

Bonjour et bonne année à tous !

Dans la colonne A, j'ai la liste de numéros de dossards
Dans la TextBox Dossard je saisis un numéro de dossard; à validation, je
voudrais récupérer dans la variable B le numéro de ligne qui correspond au
numéro de dossard saisi pour passer à une macro et l'exécuter, puis remettre
le focus sur Dossard. Voici mon code:

Private Sub Dossard_AfterUpdate()
'ceci fonctionne:
Range("A1").Value = Dossard.Value 'juste pour vérifier

'récupérer le num de ligne du dossard saisi; ceci ne fonctionne pas et
plante Excel:
B = Application.VLookup(Dossard, Feuil5.[A3:A1000], 1, False).Row

'exécuter la macro chrono, qui elle fonctionne:
chrono

'remise à blanc de Dossard:
Dossard.Value = ""

'remettre le focus dans Dossard: ???

End Sub

Merci de votre aide
Avatar
Daniel.C
Bonjour.
B = Application.Match(CDbl(Dossard), [A1:A1000], 0)
Cordialement.
Daniel

Bonjour et bonne année à tous !

Dans la colonne A, j'ai la liste de numéros de dossards
Dans la TextBox Dossard je saisis un numéro de dossard; à validation, je
voudrais récupérer dans la variable B le numéro de ligne qui correspond au
numéro de dossard saisi pour passer à une macro et l'exécuter, puis remettre
le focus sur Dossard. Voici mon code:

Private Sub Dossard_AfterUpdate()
'ceci fonctionne:
Range("A1").Value = Dossard.Value 'juste pour vérifier

'récupérer le num de ligne du dossard saisi; ceci ne fonctionne pas et plante
Excel:
B = Application.VLookup(Dossard, Feuil5.[A3:A1000], 1, False).Row

'exécuter la macro chrono, qui elle fonctionne:
chrono

'remise à blanc de Dossard:
Dossard.Value = ""

'remettre le focus dans Dossard: ???

End Sub

Merci de votre aide


Avatar
Tendasque
Merci de vos réponses,

Michdenis, je ne souhaite pas sortir du TextBox, qui est affiché en
permanence pour saisie des dossards; c'est pour cela que je pensais utiliser
AfterUpdate qui valide la valeur du TextBox dès que j'appuie sur Entrée.

La solution de Daniel.C fonctionne:

Private Sub Dossard_AfterUpdate()
B = Application.Match(CDbl(Dossard), [A1:A1000], 0)

'focus sur Dossard, ce qui permet de ressaisir un autre dossard sans
cliquer:
Application.SendKeys "{TAB}"

'appel de la procédure qui valide le temps de passage:
Temps

End Sub

Sauf si je saisis un dossard inexistant (il faudrait ajouter un traitement
d'erreur qui me remette le focus dans le textbox sans valider le temps);
savez-vous comment faire ?


"michdenis" a écrit dans le message de news:

Bonjour,

Pour obtenir ce que tu désires, tu devrais changer d'événement...

As-tu essayé ceci :

Le nom de la procédure est explicit, il s'exécute chaque fois que
l'usager décide de sortir du textbox.
'------------------------------------
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
'Appel des procédures que tu veux

'Tu peux ajouter une (des conditions) à savoir si tu veux que les lignes
'suivantes s'exécutent...
'Annule l'événement "Exit
Cancel = True
'Sélectionne le textbox
Me.TextBox1.SetFocus

End Sub
'------------------------------------



"Tendasque" <unss34(a_enlever)@free.fr> a écrit dans le message de groupe
de discussion :

Bonjour et bonne année à tous !

Dans la colonne A, j'ai la liste de numéros de dossards
Dans la TextBox Dossard je saisis un numéro de dossard; à validation, je
voudrais récupérer dans la variable B le numéro de ligne qui correspond au
numéro de dossard saisi pour passer à une macro et l'exécuter, puis
remettre
le focus sur Dossard. Voici mon code:

Private Sub Dossard_AfterUpdate()
'ceci fonctionne:
Range("A1").Value = Dossard.Value 'juste pour vérifier

'récupérer le num de ligne du dossard saisi; ceci ne fonctionne pas et
plante Excel:
B = Application.VLookup(Dossard, Feuil5.[A3:A1000], 1, False).Row

'exécuter la macro chrono, qui elle fonctionne:
chrono

'remise à blanc de Dossard:
Dossard.Value = ""

'remettre le focus dans Dossard: ???

End Sub

Merci de votre aide



Avatar
michdenis
| Sauf si je saisis un dossard inexistant (il faudrait ajouter un traitement
| d'erreur qui me remette le focus dans le textbox sans valider le temps);
| savez-vous comment faire ?

J'ai lu rapidement la question initiale, je n'avais pas vu qu'il y avait un
problème de formule. Merci à Daniel, il s'en est chargé.

Lorsque l'évènement "AfterUpdate" est déclenché, il doit poursuivre
son exécution. Contrairement à l'événement "Exit" il n'a pas un paramètre
"Cancel". Et quoi tu fasses, le processus de l'événement va te sortir du
Textbox vers le contrôle suivant... C'est ce pourquoi je te suggérais de
changer l'événement. Peux-tu l'adapter à ton application, à toi de voir !