Texte non accepté

Ozons123

XLDnaute Junior
Bonsoir,

dans la macro que j'essaye désespérement de mettre au point, lorsque je valide
le bouton du userform, le texte n'est pas accepté seul des nombres peuvent être accepté.
C'est malheureusement normal car je lui indique de faire (val(texbox1). Si je supprime val et laisse textbox1 il plante. Pouvez-vous m'aidez à résoudre ce problème en modifiant directement la macro?

Deuxième question ,pour accepter des nombres décimaux que dois-je documenter? Car seul les nombres entiers fonctionnent.

Merci pour tout car là je bloque littéralement.

Ludovic
 

Pièces jointes

  • Exemple 01.zip
    14.8 KB · Affichages: 37

Robert

XLDnaute Barbatruc
Repose en paix
Re : Texte non accepté

Bonsoir Ozons, bonsoir le forum,

Il y a une anomalie dans ton code :
Code:
Private Sub CommandButton1_Click()
If TextBox1 = True Then
    If ligne < 4 Then ligne = 4
End If

Là Ok ! Si tu tapes du numérique la variabe ligne est définie. Quelle que soit la valeur tapée elle vaut 4 (puisque tu ne l'a initialisée nulle part)

(Si tu as un moment soit gentil de m'expliquer à quoi correspond TextBox1 = True parce que je t'avoue que je ne le sait pas)

Mais si tu tapes de l'alphanumérique cette condition n'étant pas vérifiée on passe à la ligne suivante

Code:
If Cells(ligne, 2) <> "" Then

Ton planton vient de là... la variable ligne vaut zéro et Cells(0, 2) provoque le bug de l'âne d'émile...

Je pense qu'il faudrait :

Code:
If TextBox1 = True Then
    If ligne < 4 Then ligne = 4
Else
    ligne = x (une autre valeur entre 1 et 65536)
End If
 

bynabik

XLDnaute Nouveau
Re : Texte non accepté

Bonjour,

Je n'ai pas bien compris le but de la variable ligne dans ta macro?
je te propose ceci :
Private Sub CommandButton1_Click()
If TextBox1 <> "" Then
Range("B11").End(xlUp).Select
ligne = Selection.Row + 1 'selection 1ère ligne vide
Cells(ligne, 2).Value = CDbl(TextBox1) 'si tu veux rentrer un nombre décimal (n'oublie pas de mettre ton format de cellule à plusieurs décimales)
Cells(ligne, 4).Value = TextBox1 &" " & "c'est du texte" 'du texte
Sheets("STOCKAGE").Cells(ligne, 2).Value = Range("c13")
Sheets("STOCKAGE").Cells(ligne, 3).Value = "E"
End If
End Sub
 

Ozons123

XLDnaute Junior
Re : Texte non accepté

Bonjour au forum

tout d'abord merci pour l'ensemble de vos réponses. La mienne est un peu tardive face à votre réactivité car j'ai souhaité bien comprendre l'ensemble de vos codes avant d'y répondre.

a) Robert:

- TextBox1 = True va permettre par la suite de tester si dans Textbox1 l'utilisateur a documenté du texte. Si il n'y a rien il y aura un message d'erreur.Pour lemoment elle ne sert à rien :)
- Ton code ne fonctionne pas. J'ai mis la solution en fin de poste.

b) bebere : Quelle variable ligne = 0 ?

c) Bynabik

Commencant en Vba je ne maîtrise pas encore l'intégralité des commandes. Pour palier à ce manque de connaissances je me sers d'autres languages que j'ai appris et j'ai réalisé une incrémentation de lignes par la variable ligne.
J'initialise mon programme en lui disant tu vas dans la cellule B4 donc ligne = 4 et si tu commences à documenter une ligne donc <>"" alors tu fais ligne=ligne + 1 donc ligne devient ligne =4+1 et cells(4+1,2) et ainsi de suite.
Donc le but de la variable ligne est de servir à incrémenter la ligne de la colonne B.

En conclusion il y a un point important dans le module, il faut déclarer la variable ligne de cette manière: Public ligne As Integer sinon le programme ne fonctionne pas.

Ensuite et me servant de ce que vous m'avez apporté je vous propose le code suivant:

Private Sub CommandButton1_Click()
If ligne < 4 Then ligne = 4
If Cells(ligne, 2) <> "" Then
ligne = ligne + 1
End If
Cells(ligne, 2).Value = TextBox1 & " "
Sheets("STOCKAGE").Cells(ligne, 2).Value = Val(Range("c13"))
Sheets("STOCKAGE").Cells(ligne, 3).Value = "E"
End Sub


Merci encore pour tout.

Je souheterais pas la suite faire appel à une autre userform pour modifier les datas rentrés ou les effacer. Avez-vous des exemples ou des liens ou je peux
me plonger dans les codes ?


Bonne journée Ludovic
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Texte non accepté

Bonjour le fil, bonjour le forum,

Désolé Ozons, nous sommes plusieurs à t'avoir indiqué le problème mais tu ne sembles pas avoir compris. La seule chose que je peux te proposer est de relire nos différentes réponses.
 

Gorfael

XLDnaute Barbatruc
Re : Texte non accepté

Ozons123 à dit:
Bonsoir,

dans la macro que j'essaye désespérement de mettre au point, lorsque je valide
le bouton du userform, le texte n'est pas accepté seul des nombres peuvent être accepté.
C'est malheureusement normal car je lui indique de faire (val(texbox1). Si je supprime val et laisse textbox1 il plante. Pouvez-vous m'aidez à résoudre ce problème en modifiant directement la macro?

Deuxième question ,pour accepter des nombres décimaux que dois-je documenter? Car seul les nombres entiers fonctionnent.

Merci pour tout car là je bloque littéralement.

Ludovic
Salut à tous
Ludo, je ne comprends pas ce que tu veux faire, mais c'est pas grave :)
j'ai déclaré ligne pour tester mon code
PHP:
Private Sub CommandButton1_Click()
On Error GoTo Err_CommandButton1_Click
Dim ligne As Long
If TextBox1 <> "" Then
If ligne < 4 Then ligne = 4
   End If
   If Cells(ligne, 2) <> "" Then
        ligne = ligne + 1
    End If
TextBox1 = Application.WorksheetFunction.Substitute(TextBox1, ".", ",", 1)

Cells(ligne, 2).Value = CDec(TextBox1)
Sheets("STOCKAGE").Cells(ligne, 2).Value = Val(Range("c13"))
Sheets("STOCKAGE").Cells(ligne, 3).Value = "E"
Sort_CommandButton1_Click:
    Exit Sub
Err_CommandButton1_Click:
    If Err.Number = 13 Then
        Cells(ligne, 2).Value = TextBox1
        Resume Next
    End If
    MsgBox (Err.Number & " - " & Err.Description)
    Resume Sort_CommandButton1_Click
End Sub
Comme ça a l'air d'être un extrait de code, je me suis contenté de modifier pour que les valeurs numériques soient inscries en nombres décimaux et que le texte reste en texte.
plutôt que l'instruction ligne=ligne+1, il me semblerait plus fonctionnel de rechercher la dernière ligne inscrite : ton code du départ regarde si la cellule destination est vide, si elle ne l'est pas, on inscrit à la ligne suivante, même si celle-ci n'est pas vide !!!
au lieu de :
If Cells(ligne, 2) <> "" Then
ligne = ligne + 1
End If
moi je mettrais (avec ton exemple - à adapter aux besoins)
if Range("B12").End(Xlup).row>11 then
msgbox("lignes jusqu'à 12 pleines")
Exit sub
End if
et
soit ligne=Range("B12").End(Xlup).row+1
soit Cells(lRange("B12").End(Xlup).row+1, 2).Value = CDec(TextBox1)
soit Range("B" & (Range("B12").End(Xlup).row +1)).Value = CDec(TextBox1)

A+
 

Ozons123

XLDnaute Junior
Re : Texte non accepté

Bonjoir le forum,

merci pour ton code argumenté Gorfael, je vais l'analyser.

Robert je me suis peut-être mal exprimé sur le sujet, donc je te livre le programme que j'ai modifié. Tu peux l'essayer il fonctionne parfaitement.
Seul le bouton DOCUMENTER fonctionne ainsi que la colonne code.
Si dans celle-ci aucun texte n'est documenté alors tu as une fenêtre qui apparaît.

Ce que mon fichier ne montre pas car je ne me suis pas exprimé sur ce sujet c'est que je ne souhaite pas m'arrêter seulement dans la documentation à la colonne 12. L'incrémentation va continuer par la suite ce fichier étant un fichier test pour le moment.

J'attaque la partie modification pour apprendre à effacer une ligne à partir de la sélection dans une listebox du code ou de la modification des données. Je posterais le fruits de mes travaux sur le forum en faisant évoluer ce fichier.

Bonne soirée et encore merci à tous ou toutes pour votre aide.

Ludovic
 

Pièces jointes

  • MODELE.zip
    22.4 KB · Affichages: 29
  • MODELE.zip
    22.4 KB · Affichages: 31
  • MODELE.zip
    22.4 KB · Affichages: 32

Robert

XLDnaute Barbatruc
Repose en paix
Re : Texte non accepté

Bonsoir le fil, bonsoir le forum,

Oui comme ça il fonctionne puisque, que ce soit du texte ou du numérique, tu passes par If ligne < 4 Then ligne = 4, tu ne risques plus de provoquer l'erreur Cells(0, 4).value. Ce qui m'inquiète le plus c'est que tu n'aies pas compris ton erreur. Où bien c'est moi qui ne comprend pas. Ça m'arrive souvent, tu sais...
 

Statistiques des forums

Discussions
312 406
Messages
2 088 137
Membres
103 739
dernier inscrit
x.grange