Valider une textbox avec entrée et déclencher macro qui renvoie à une cellule

georgespompidou

XLDnaute Nouveau
Bonjour,

Débutant en macro excel, je m'adresse à vous après 2 jours de recherche sur internet infructueuse.
Je vous explique mon souci :

J'ai une feuille excel sur laquelle j'ai mis l'un en dessous de l'autre 53 tableaux pour rentrer des données à l'intérieur selon les 53 semaines de l'année.
J'aimerai avoir une textbox dans laquelle je tape le numéro de la semaine, je fais "enter" pour valider la donnée et cela me renvoie directement au tableau de la semaine correspondante.
merci de votre aide.

Je vous met le code que j'ai essayé :
La macro qui définit que je dois rentrer que des chiffres dans ma textbox et qui doit déclencher ma recherche après avoir taper sur entrée :

Private Sub Text1_Keypress(KeyAscii As Integer)
If InStr("1234567890" & Chr(8), Chr$(KeyAscii)) = 0 Then
If KeyAscii = vbKeyReturn Then
CommandButton2_Click
End If
End If
End Sub

La macro qui m'emmène sur le tableau correspondant au numéro de semaine que j'ai tapé. La case que je sélectionne est la première du tableau :
Private Sub CommandButton2_Click()
Select Case TextBox1.Value
Case "1"
Worksheet("Suivi J+1 et Surstock").Cells("A8").Select
Case "2"
Worksheet("Suivi J+1 et Surstock").Cells("A25").Select
Case "3"
Worksheet("Suivi J+1 et Surstock").Cells("A42").Select
Case "4"
Worksheet("Suivi J+1 et Surstock").Cells("A59").Select
 

Cousinhub

XLDnaute Barbatruc
Re : Valider une textbox avec entrée et déclencher macro qui renvoie à une cellule

Bonjour,

Plusieurs petites erreurs..

Code:
Cells("A8")

n'est pas correcte, on utilise Range dans ce cas-là
Cells(NuméroDeLigne, NuméroDeColonne) est la syntaxe exacte
On peut aussi utiliser Cells(1, "A")

Code:
Private Sub Text1_Keypress(KeyAscii As Integer)

Définition de KeyAscii incorrecte :

Code:
Private Sub Text1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

Le "Return" n'est pas intercepté par l'évènement plus haut...

Par contre, tu peux utiliser l'Exit du TextBox

Code:
Private Sub Text1_Exit(ByVal Cancel As MSForms.ReturnBoolean)

ainsi, ton code pourrait devenir ceci :

Code:
Private Sub CommandButton2_Click()
If Not IsEmpty(Me.Text1) Then
    Worksheets("Suivi J+1 et Surstock").Cells(Val((Me.Text1 - 1) * 17) + 8, 1).Select
End If
End Sub

Private Sub Text1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsEmpty(Me.Text1) Then CommandButton2_Click
End Sub
 
Private Sub Text1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not IsNumeric(Chr(KeyAscii)) Then KeyAscii = 0
End Sub

Dans le KeyPress, je contrôle que c'est bien une valeur numérique qui est entrée (essaie une lettre, tu verras..)

Lors de l'appui sur "Entrer", on quitte donc le TextBox, et si celui-ci n'est pas vide, on provoque l'action du Commandbutton2

dans le code du bouton, j'ai rajouté la condition, au cas où tu utiliserais ta souris pour appuyer dessus..

Et enfin, le calcul suivant :

Code:
Val((Me.Text1 - 1) * 17) + 8

te donne le numéro de ligne correspondant

Bonne journée
 

georgespompidou

XLDnaute Nouveau
Re : Valider une textbox avec entrée et déclencher macro qui renvoie à une cellule

Merci pour ton aide bhbh !
J'ai essayé ce que tu m'as proposé mais la macro ne trouve pas la valeur de ma textbox1. a ce jour je peux taper des chiffres et des lettres dans ma textbox. est ce que textbox1 est relié à Me.text1
merci de continuer à m'aider je suis vraiment une brelle
 

georgespompidou

XLDnaute Nouveau
Re : Valider une textbox avec entrée et déclencher macro qui renvoie à une cellule

merci pour ton aide.
J'ai essayé le code que tu m'as proposé mais il ne trouve pas la valeur que je rentre dans la textbox. j'arrive à mettre les lettres et des chiffres dans la textbox. Quand je fais enter rien ne se passe et c'est quand je clique sur le bouton que ça plante
je te remet le code que j'ai pour être sur que ce soit ça :

Private Sub Text1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not IsNumeric(Chr(KeyAscii)) Then KeyAscii = 0
End Sub

Private Sub Text1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Not IsEmpty(Me.Text1) Then CommandButton2_Click
End Sub

Private Sub CommandButton2_Click()
If Not IsEmpty(Me.Text1) Then
Worksheets("Suivi J+1 et Surstock").Cells(Val((Me.Text1 - 1) * 17) + 8, 1).Select
End If
End Sub

Merci de continuer à m'aider car je nage
 

georgespompidou

XLDnaute Nouveau
Re : Valider une textbox avec entrée et déclencher macro qui renvoie à une cellule

je suis d'accord avec toi et c'est ce que je ferais si c'était moi qui utiliserait le tableau cependant c'est pour une secrétaire pas forcément douer la dedans et j'essaye de simplifier au mieux le tableau. Si tu as une idée pour continuer dans la démarche des macros excel ?
 

georgespompidou

XLDnaute Nouveau
Re : Valider une textbox avec entrée et déclencher macro qui renvoie à une cellule

je t'envoie mon onglet concerné par le problème
merci encore
 

Pièces jointes

  • mes tableaux.zip
    24.2 KB · Affichages: 97
  • mes tableaux.zip
    24.2 KB · Affichages: 103
  • mes tableaux.zip
    24.2 KB · Affichages: 110

Cousinhub

XLDnaute Barbatruc
Re : Valider une textbox avec entrée et déclencher macro qui renvoie à une cellule

Bonsoir,

Scuse, décalage horaire, un peu de boulot (eh oui....), donc pas eu le temps...

Euh, dans ton code, tu parlais d'une textbox nommée "Text1"

Code:
Private Sub Text1_Keypress(KeyAscii As Integer)

(J'ai repris ton message de 19H37, en date du 25/07/2010)

Si maintenant, ton TextBox s'appelle autrement, c'est sûr qu'il vaut en tenir compte....

PS, dans ton fichier exemple, pas de trace d'useform, ni de textbox....

Donc, si tu n'as pas réussi, en changeant le nom de l'objet (TextBox), reviens, mais avec tes objets (UserForms et autres), ainsi que les codes...

Bonne soirée
 

Cousinhub

XLDnaute Barbatruc
Re : Valider une textbox avec entrée et déclencher macro qui renvoie à une cellule

Re-,

J'étais parti sur un TextBox sur Userform...;

Enlève tous les codes d'avant, et mets ceux-ci :

Code:
Private Sub TextBox1_GotFocus()
Me.TextBox1.Value = ""
End Sub

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then CommandButton1_Click
End Sub

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not IsNumeric(Chr(KeyAscii)) Then KeyAscii = 0
End Sub
Private Sub CommandButton1_Click()
If Not IsEmpty(Me.TextBox1) Then
    Worksheets("Suivi J+1 et Surstock").Cells(Val((Me.TextBox1 - 1) * 17) + 8, 1).Select
End If
End Sub

Ici, tu ne peux pas taper autre chose qu'un chiffre

Dès que tu entres dans le TextBox, celui-ci s'efface

Dès que tu appuies sur Enter, tu vas à la plage considérée

Je te laisse tester...

Bonne soirée
 

Discussions similaires

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87