Textbox n'accepte pas les nombres

18essaifinal.xlsm (88.36 Ko)

Bonjour,

J'ai un petit souci que je n'arrive pas à résoudre et surtout je ne comprends pas pourquoi cela ne marche pas.

Mon fichier (qui est en PJ) permet de rajouter des contrôles les uns à la suite des autres en choisissant chacun des critères et un chiffre lui correspondant. Le problème est que quand j'arrive au contrôle 10 le bouton valider reste bloqué et pas moyen de savoir pourquoi.

Merci d'avance pour votre aide,

Bonjour Bouillou,

Il est préférable pour la prochaine fois que tu nous dises quelles sont les manips à faire ! Car on est pas aussi habitués que toi à ton fichier... qui a été téléchargé 9 fois au moment où j'écris... Et pas de réponse encore. C'est parce qu'on s'y perd un peu !

Pour ma part je ne comprends quasiment rien...

En regardant ton bouton Valider de ton Userform1, on s'aperçoit que lorsque ton textbox n'est pas vide, tu commences tous tes tests par :

If ((Me.TextBox1 = 1) And . . . . 

C'est donc normal que si tu ne rentres pas un 1 dans ton textbox, la validation ne marchera jamais !!

Bonjour,

Code: Tout sélectionner

If ((Me.TextBox1 = 1) And . . . .

C'est donc normal que si tu ne rentres pas un 1 dans ton textbox, la validation ne marchera jamais !!

Je peux rentrer les chiffres 1, 2, 3, 4, 5, 6, 7, 8 ou 9 dans mon textbox sans aucun souci mais c'est à partir de 10 que je ne peux pas valider. Ta remarque aurait été bonne je pense si mon code avait ressemblé à ça : If ((Me.TextBox1 = "1") And...

Pour être plus clair je vais essayer d'expliquer plus clairement mon fichier et mon problème :

Le but est d'ajouter des points de contrôle avec l'userform1 et qui se rajoutent dans la feuille "RS11" et dans le même temps cela compte le nombre de contrôle que l'on a par journée. On renseigne s'il s'agit d'un contrôle production, 5S, maintenance ou sécurité puis on renseigne si on veut le faire une fois par semaine, par mois ou par jour et on renseigne le numéro de ce contrôle. Dans cet userform1 je ne peux valider si un élément n'est pas coché (sauf si ils sont grisés).

Mon problème dans cet userform1 est que je ne peux pas valider un contrôle si dans ma textbox1 je mets un nombre. Je peux mettre 1, 2, 3, 4, 5, 6, 7, 8 ou 9 je n'aurais aucun problème pour valider mais lorsque je passe à 10, 11... impossible de valider mais je n'ai pas de message d'erreur, je clique dessus mais rien ne se passe. Ce qui est bizarre c'est que dans mon userform2 je n'ai pas du tout ce problème (Cet userform me sert pour modifier ou supprimer un contrôle rajouté).

Je pense que le souci pourrait venir de cette ligne de code dans mon CommandButton49_Click :

If ((Me.TextBox1 = 1) And (CPRS11.Value = True Or CSRS11.Value = True Or C5SRS11.Value = True Or CMRS11.Value = True) And (QuoRS11.Value = True Or MenRS11.Value = True) And (MatinRS11.Value = True Or AMRS11.Value = True Or NuitRS11.Value = True)) Then

Je suis bien conscient que mon fichier n'est pas très clair car je suis débutant en VBA (Ah bon ??) et qu'il n'est pas tout à fait finaliser dans la mise en forme mais j'espère que j'ai été clair dans ce que j'ai pu expliquer et que quelqu'un pourra m'aider.

Ok je comprends un peu mieux.

Mais je maintiens. "Chez moi", quand je mets autre chose que 1, rien ne se crée...!

Je ne comprends pas comment ça peut marcher chez toi avec le test que tu fais...

Que tu mettes =1 ou ="1", le résultat devrait être le même car lorsqu'Excel détecte quelque chose qui ressemble à un chiffre, il peut le considérer comme un chiffre même s'il est sous format texte...

On est d'accord, je vais dans l'onglet Accueil, je clique sur le bouton 'Ajouter un point de contrôle', je sélectionne des options, je rentre un chiffre dans le textbox et je clique sur Valider ? C'est la manip que j'ai fait.

Mea culpa tu as effectivement raison, je ne sais pas pourquoi cela fonctionnait j'ai du rêver je pense ^^

Finalement ça marche j'ai rajouté ceci devant :

If (Len(Me.TextBox1 = 1) And...

MAIS j'avais déjà essayé ça sur mon ordi au boulot qui a excel 2007 et là j'ai fait le test sur mon ordi perso avec excel 2010 donc à voir demain matin si ça venait de ma syntaxe ou bien de la version (ce qui m'étonnerait un peu quand même)

En tout cas merci pour ton aide

Bonjour,

Effectivement c'était une erreur de syntaxe finalement ^^

J'ai une autre demande par contre ce serait de pouvoir empêcher l'ajout de doublons au niveau des chiffres/nombres et seulement au niveau des chiffres/nombres et je ne sais pas comment m'y prendre.

Est ce que quelqu'un aurait une idée ? Merci,

Bouillou a écrit :
If (Len(Me.TextBox1 = 1) And...
Si tu as ajouté exactement ce code, alors il y a une erreur de syntaxe!

Quelque chose comme ça plutôt :

If (Len(Me.TextBox1) = 1) And...

Encore une fois, si c'est ce code que tu as ajouté, c'est normal qu'à partir de 10 ça ne marche plus ! Car tu testes le nombre de chiffres et non le chiffre. S'il y a plus de 1 chiffre dans ton chiffre, tu n'exécutes pas le code...

Bouillou a écrit :

J'ai une autre demande par contre ce serait de pouvoir empêcher l'ajout de doublons au niveau des chiffres/nombres et seulement au niveau des chiffres/nombres et je ne sais pas comment m'y prendre.

Je te redis ça ce soir. Je dois m'absenter.

Peux-tu déjà me rappeler où trouver la liste des chiffres/nombres déjà rentrés ? Le test sera de regarder si le nombre entré existe déjà dans la liste des nombres existants. Regarde du côté de countif ou match mais en VBA...

Si tu n'arrives pas à trouver je te donne la syntaxe ce soir.

Merci pour ta réponse,

J'ai finalement mis ça à la place : If (IsNumeric(TextBox1.Value) And... et là je n'ai plus aucun problème (Ouais je sais je change vite d'avis ^^)

Les chiffres sont ajoutés dans la colonne A de la feuille RS11bis. Je vais essayer ce que tu m'as dit si j'ai le temps cette après midi.

Merci pour ton aide,

Re

Bouillou a écrit :

Je vais essayer ce que tu m'as dit si j'ai le temps cette après midi.

Bon je vois que tu n'as pas eu le temps

Voici une solution en mettant le bout de code suivant au début de la procédure de Validation :

    'on regarde si le numéro de contrôle existe déjà
    If Application.CountIf(Sheets("RS11bis").Range("A4:A" & Rows.Count), Me.TextBox1.Value) <> 0 Then
        MsgBox "Le contrôle " & Me.TextBox1.Value & " existe déjà"
        Exit Sub
    End If

J'utilise ici la fonction NB.SI pour compter le nombre de ton textbox dans la plage des numéros de contrôle. S'il est supérieur à 0 c'est que ton chiffre existe. Donc pas de validation.

Bonjour,

Non effectivement je n'ai pas eu le temps ^^

Je viens de tester ton code et ça marche nickel ! Un grand merci et bon week end

Rechercher des sujets similaires à "textbox accepte pas nombres"