Utiliser donnée de TextBox

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
michdenis
Le #20992371
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"
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
Daniel.C
Le #20992741
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


Tendasque
Le #20993021
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"
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" 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



michdenis
Le #20996441
| 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 !
Publicité
Poster une réponse
Anonyme