Fichier Excel qui s'ouvre avec la touche entrée

Bonjour,

J'ai récemment créé un fichier de Base de Données avec un Userform de Saisie de données.

J'ai plusieurs options pour chaque TextBox.

Je rencontre actuellement un souci avec ce fichier sur le PC de ma collègue.

Sur le mien, pas de souci, je ferme et ré-ouvre le fichier sans souci.

En revanche, sur le PC de ma collègue, elle peut fermer le fichier sans problème. MAIS dès qu'elle va sur un autre fichier excel et appuie sur la touche entrée le fichier se ré-ouvre automatiquement, et ceci à chaque fois en réponse à l'appui sur la touche entrée.

Première question 1) Comment se fait-il que le bug se produise sur son PC et non pas le mien ? (les macros ont été créées sur mon poste)

2) Comment puis-je résoudre ce problème assez gênant ?

Voici la macro de mon Userform : Peut-être y verrez vous le pourquoi du comment.

Private Sub TextBox1_Change()

End Sub

Private Sub TextBox7_Change()

End Sub

Private Sub CommandButton3_Click()

Unload Me

End Sub

Private Sub Label7_Click()

End Sub

Private Sub CommandButton1_Click()

If UserForm1.TextBox1 = "" Then

MsgBox "N° du dossier manquant!"

Exit Sub

End If

If UserForm1.TextBox2 = "" Then

MsgBox "Collaborateur manquant !"

Exit Sub

End If

If UserForm1.TextBox3 = "" Then

MsgBox "Nom du client manquant !"

Exit Sub

End If

If UserForm1.TextBox4 = "" Then

MsgBox "Ville du client manquante !"

Exit Sub

End If

If UserForm1.TextBox5 = "" Then

MsgBox "Contribuable manquant !"

Exit Sub

End If

If UserForm1.TextBox6 = "" Then

MsgBox "Nom du contact manquant !"

Exit Sub

End If

If UserForm1.TextBox7 = "" Then

MsgBox "Date du dossier manquante !"

Exit Sub

End If

If Range("A2") = "" Then

Range("A2").Select

Else

Range("A1").End(xlDown).Select

ActiveCell.Offset(1, 0).Range("A1").Select

End If

ActiveCell = UserForm1.TextBox1.Value

ActiveCell.Offset(0, 1) = UserForm1.TextBox2.Value

ActiveCell.Offset(0, 2) = UserForm1.TextBox3.Value

ActiveCell.Offset(0, 3) = UserForm1.TextBox4.Value

ActiveCell.Offset(0, 4) = UserForm1.TextBox5.Value

ActiveCell.Offset(0, 5) = UserForm1.TextBox6.Value

ActiveCell.Offset(0, 6) = UserForm1.TextBox7.Value

End Sub

Private Sub UserForm_Initialize()

Application.OnKey "{ENTER}", "valider"

TextBox1 = Range("A" & Rows.Count).End(xlUp) + 1

Exit Sub

End Sub

Private Sub UserForm_Click()

End Sub

Private Sub Workbook_Open()

UserForm1.Show

End Sub

Private Sub TextBox2_Change()

Dim A As Variant

A = Me.TextBox2

A = UCase(A)

Me.TextBox2 = A

End Sub

Private Sub TextBox3_Change()

Dim A As Variant

A = Me.TextBox3

A = UCase(A)

Me.TextBox3 = A

End Sub

Bonjour,

A quoi ça sert de mettre des macros vides ???

Utiliser la balise Code que la lecture soit agréable, et l'indentation conservée.

Le plus étonnant c'est que ça ne le fasse pas sur le tien.

Application.OnKey "{ENTER}", "valider"

Il faudrait peut-être l'annuler à la fermeture du fichier, voire même dès que ce n'est plus utile. A savoir si ça l'est réellement (???).

Regarde l'aide sur OnKey, tout est expliqué.

eric

Bonjour eskate,

Tu a écrit :

Je rencontre actuellement un souci avec ce fichier sur le PC de ma collègue.

Sur le mien, pas de souci, je ferme et ré-ouvre le fichier sans souci.

En revanche, sur le PC de ma collègue, elle peut fermer le fichier sans problème. MAIS dès qu'elle va sur un autre fichier excel et appuie sur la touche entrée le fichier se ré-ouvre automatiquement, et ceci à chaque fois en réponse à l'appui sur la touche entrée.

1) Comment se fait-il que le bug se produise sur son PC et non pas le mien ?

2) Comment puis-je résoudre ce problème assez gênant ?

Il me semble que ta collègue et toi vous n'avez pas le même paramétrage d'Excel ;

regarde sur la copie d'écran jointe ci-dessous l'option entourée en rouge.

Cordialement

copie d ecran

Bonjour, et merci pour votre réponse.

Pour tout vous dire, je suis loin d'être une pro du VBA, malheureusement!

A vrai dire, c'est mon premier formulaire de saisie.

Nous venons de remarquer quelque chose avec ma collègue. Sur mon poste, je valide avec "Entrée" (la grande touche, entrée, classique)

Elle, sur son poste, elle valide avec la petite touche entrée qui est à côté du + sous le pavé numérique.

J'ai donc testé en validant avec la touche entrée sous le pavé numérique et la, effectivement, le souci arrive.

C'est vraiment bizarre, car normalement, ces 2 touches Entrée ont le même code ASCII : 13 ;

par contre, je pense qu'elles ont un Scan Code différent, mais je serais bien étonné que

ton classeur Excel teste le Scan Code et pas le code ASCII !

NB : le Scan Code est le code de balayage des touches du clavier.


Regarde mon message précédent, avec la copie d'écran

et l'option entourée en rouge.

Cordialement

dhany a écrit :

C'est vraiment bizarre, car normalement, ces 2 touches Entrée ont le même code ASCII : 13 ;

par contre, je pense qu'elles ont un Scan Code différent, mais je serais bien étonné que

ton classeur Excel teste le Scan Code et pas le code ASCII !

NB : le Scan Code est le code de balayage des touches du clavier.


Regarde mon message précédent, avec la copie d'écran

et l'option entourée en rouge.

Cordialement

Merci pour votre réponse.

J'ai testé la touche entrée du pavé numérique sur mon poste et j'ai le même souci. En fait la différence venait de là. Le souci vient donc de la touchée entrée du pavé numérique :/

J'ai compris ! dans ta sub UserForm_Initialize(), tu as cette ligne : Application.OnKey "{ENTER}", "valider"

Je viens de consulter l'aide VBA sur OnKey : il différencie les 2 touches Entrée (code Touche différent) :

Entrée (pavé numérique) : {ENTER}

Entrée : ~ (tilde)

dhany a écrit :

J'ai compris ! dans ta sub UserForm_Initialize(), tu as cette ligne : Application.OnKey "{ENTER}", "valider"

Je viens de consulter l'aide VBA sur OnKey : il différencie les 2 touches Entrée (code Touche différent) :

Entrée (pavé numérique) : {ENTER}

Entrée : ~ (tilde)

Effectivement, je ne connaissais pas cette précision!

J'ai donc fait quelques tests.

Ce qui est étonnant, c'est que si je mets du coup Application.Onkey {~}.... c'est donc la touche entrée du pavé numérique qui doit valider. Or ça ne fonctionne pas. Par contre, j'ai toujours le souci et je peux quand même valider avec la touche entrée classique.

Si je garde le Application.Onkey (Entrée)... je peux valider avec entrée, mais quand j'appuie sur la touche entrée du pavé numérique c'est la que le fichier s'ouvre.

La logique ne devrait-elle pas être que lorsque je configure le tilde (entée pavé numérique), ce soit elle qui potentiellement fasse ouvrir le fichier, et que quand je configure la touche entrée, idem ?

⚠ selon l'aide VBA, pour la touche :

Entrée : Application.OnKey "{ENTER}", "valider"

Entrée (pavé numérique) : Application.OnKey "~", "valider"

sans accolades pour la 2ème ligne !

Je te laisse refaire le test.

dhany a écrit :

⚠ selon l'aide VBA, pour la touche :

Entrée : Application.OnKey "{ENTER}", "valider"

Entrée (pavé numérique) : Application.OnKey "~", "valider"

sans accolades pour la 2ème ligne !

Je te laisse refaire le test.

J'ai fait le test en mettant " Application.Onkey "~", "valider" puis en faisant "Application.Onkey "{ENTER}", "valider"

Dans les deux cas, je peux valider mon formulaire avec la touche entrée pavé numérique MAIS AUSSI avec la touche entrée principale (?!)

Quand je vais sur un nouveau fichier et que je fais entrée avec la touche principale, pas de souci, et quand j'appuie sur la touche entrée du pavé numérique, bim ca m'ouvre le 1er fichier, c'est à n'y rien comprendre


Ah bah maintenant les deux touches font ouvrir le fichier ahah

Je pensais que tu allais faire un essai avec les 2 lignes en même temps :

Application.OnKey "{ENTER}", "valider"
Application.OnKey "~", "valider"

Ainsi, la macro valider() sera appelée par un appui sur la grosse touche Entrée,

et aussi par un appui sur la plus petite du pavé numérique (l'une ou l'autre,

pas en même temps).

dhany a écrit :

Je pensais que tu allais faire un essai avec les 2 lignes en même temps :

Application.OnKey "{ENTER}", "valider"
Application.OnKey "~", "valider"

Ainsi, la macro valider() sera appelée par un appui sur la grosse touche Entrée,

et aussi par un appui sur la plus petite du pavé numérique (l'une ou l'autre,

pas en même temps).

Mille merci, ca a l'air de fonctionner!!!

Vous venez de sauver ma journée, je n'y croyais plus !

J'ai vraiment l'impression d'être transparent...

Rajouter un autre OnKey a vraiment résolu ton pb ???

Qui était je le rappelle :

MAIS dès qu'elle va sur un autre fichier excel et appuie sur la touche entrée le fichier se ré-ouvre automatiquement

eskate a écrit :

Mille merci, ça a l'air de fonctionner !!!

Vous venez de sauver ma journée, je n'y croyais plus !

Je suis ravi d'avoir pu t'aider, et merci d'avoir passé le sujet en résolu. Je te souhaite un bon weekend !

Bonjour,

Après que le fichier ait fonctionné pendant une semaine, je reviens vers vous.... Car le problème est revenu!

J'ai désormais comme macro :

Private Sub UserForm_Initialize()

Application.OnKey "{ENTER}", "valider"

Application.OnKey "~", "valider"

TextBox1 = Range("A" & Rows.Count).End(xlUp) + 1

Exit Sub

End Sub

Et dès qu'on valide n'importe quelle cellule avec la touche entrée du pavé numérique, le fichier s'ouvre automatiquement.

Je précise qu'on avait pas eu besoin d'ouvrir ce fichier depuis plusieurs jours, nous venons de le faire ce matin, ce qui a relancé le problème.

Autre détail, j'ai déplacé le fichier qui pose problème de notre serveur pour le mettre uniquement sur notre bureau, en me disant que comme ça, impossible pour excel d'aller chercher le fichier.

Résultat, quand ma collègue appuie sur entrée, excel essaye toujours de chercher le fichier, mais indique juste quelque chose du genre " le fichier n'est plus à l'endroit spécifié...."

Et si tu lisais TOUTES les réponses ????

Depuis le début je t'ai dit ce qui clochait et aucun retour malgré 2 rappels.

Bonjour eskate,

Tu as indiqué cette macro :

Private Sub UserForm_Initialize()
Application.OnKey "{ENTER}", "valider"
Application.OnKey "~", "valider"

TextBox1 = Range("A" & Rows.Count).End(xlUp) + 1
Exit Sub
End Sub

1) Ta ligne Exit Sub juste avant End Sub ne sert à rien, puisque même sans, on sort de la sub aussitôt ; tu peux donc

l'enlever sans que ça pose aucun souci !

2) TextBox1 = Range("A" & Rows.Count).End(xlUp) + 1 ; oui, tu peux le faire, effectivement, mais n'oublie pas qu'une

TextBox est toujours une valeur de type Texte ➯ ton dernier n° de ligne + 1 (nombre) sera automatiquement converti

en texte ; aussi, il serait plus judicieux d'utiliser une variable numérique Long ; mais peut-être que tu veux seulement

l'afficher dans ton formulaire ?

3) Déplace tes 2 lignes Application.OnKey dans le code de ThisWorkbook :

Private Sub Workbook_Open()
  Application.OnKey "{ENTER}", "valider"
  Application.OnKey "~", "valider"
End Sub

et vérifie bien que maintenant, elles sont seulement là, et pas ailleurs.

⚠ Le code de Workbook_Open est exécuté à l'ouverture du classeur, donc pour que cette modif soit prise en compte,

il faudrait normalement que tu sauvegarde ton classeur Excel, que tu le ferme, et que tu l'ouvre à nouveau ; astuce :

place ton curseur de texte dans la sub Workbook_Open et appuie sur la touche F5 ➯ idem. mais à supposer que

ton code VBA n'est pas encore tout à fait au point et que ça bloque ton classeur, fais quand même une sauvegarde

préalable, par précaution.


Pour ton 2ème problème, je ne m'y connais pas en serveur de réseau, mais même si tu as déplacé le fichier Excel,

le code VBA qui cherche ce fichier doit être enlevé ! si ton problème persiste après avoir enlevé ce code,

alors c'est que ton programme VBA doit être hanté !!! il reste des lignes de code fantômes rémanentes !

solution n° 1 : appelle au plus vite un exorciste ou un sorcier chaman (au choix). solution n° 2 : prier

solution n° 3 : mets des gousses d'ail sur ton clavier pour éloigner les mauvais esprits.

Cordialement

dhany a écrit :

Bonjour eskate,

Tu as indiqué cette macro :

Private Sub UserForm_Initialize()
Application.OnKey "{ENTER}", "valider"
Application.OnKey "~", "valider"

TextBox1 = Range("A" & Rows.Count).End(xlUp) + 1
Exit Sub
End Sub

1) Ta ligne Exit Sub juste avant End Sub ne sert à rien, puisque même sans, on sort de la sub aussitôt ; tu peux donc

l'enlever sans que ça pose aucun souci !

2) TextBox1 = Range("A" & Rows.Count).End(xlUp) + 1 ; oui, tu peux le faire, effectivement, mais n'oublie pas qu'une

TextBox est toujours une valeur de type Texte ➯ ton dernier n° de ligne + 1 (nombre) sera automatiquement converti

en texte ; aussi, il serait plus judicieux d'utiliser une variable numérique Long ; mais peut-être que tu veux seulement

l'afficher dans ton formulaire ?

3) Déplace tes 2 lignes Application.OnKey dans le code de ThisWorkbook :

Private Sub Workbook_Open()
  Application.OnKey "{ENTER}", "valider"
  Application.OnKey "~", "valider"
End Sub

et vérifie bien que maintenant, elles sont seulement là, et pas ailleurs.

⚠ Le code de Workbook_Open est exécuté à l'ouverture du classeur, donc pour que cette modif soit prise en compte,

il faudrait normalement que tu sauvegarde ton classeur Excel, que tu le ferme, et que tu l'ouvre à nouveau ; astuce :

place ton curseur de texte dans la sub Workbook_Open et appuie sur la touche F5 ➯ idem. mais à supposer que

ton code VBA n'est pas encore tout à fait au point et que ça bloque ton classeur, fais quand même une sauvegarde

préalable, par précaution.


Pour ton 2ème problème, je ne m'y connais pas en serveur de réseau, mais même si tu as déplacé le fichier Excel,

le code VBA qui cherche ce fichier doit être enlevé ! si ton problème persiste après avoir enlevé ce code,

alors c'est que ton programme VBA doit être hanté !!! il reste des lignes de code fantômes rémanentes !

solution n° 1 : appelle au plus vite un exorciste ou un sorcier chaman (au choix). solution n° 2 : prier

solution n° 3 : mets des gousses d'ail sur ton clavier pour éloigner les mauvais esprits.

Cordialement

Bonjour,

Déjà, merci beaucoup pour toutes ces réponses et le temps pris pour me répondre

1) Merci, j'ai du coup supprimé.

2) Je veux effectivement uniquement afficher les données dans le formulaire, sans mise en page ni rien de particulier.

3) MERCI!!! J'ai suivi vos étapes et ça a l'air d'avoir enterré le problème.

Du coup, croisons les doigts, à priori peut-être pas besoin de vaudou et milles merci!

Rechercher des sujets similaires à "fichier qui ouvre touche entree"