UserForm de Saisie

jeje.77

XLDnaute Nouveau
Bonjour à tous

Étant nouveau sur le forum, j'espère que je post au bon endroit.

Après avoir étudié différents tutos et leçons sur le site, tache ardue pour un néophyte qui se lance dans les formulaires de saisie, J’ai réussi à sortir quelque chose.

Voila j’ai créé un UsF multipage (5 pages) avec copies de ces données sur différentes feuilles du classeur.
Dans ces pages, il y a 13 TextBox.

Pour la réalisation j’ai arrangé les codes que j’ai trouvés dans le pack « Thierry Démos Pack II : fichier USF-Rudiments-Basic.xls », mais je n’arrive pas à comprendre pourquoi on est obligé de remplir la TextBox1 pour pouvoir valider la saisie.
Est-il possible de pouvoir ne rien mettre dans cette TextBox pour pouvoir valider et qu’ensuite les prochaines saisies puissent se faire à la suite sans probleme.

dans les feuilles je comptabilise les cellules avec des données mais comme la cellule de la 3eme colonne correspond à la TextBox1, je tape un espace mais dans les calculs, l'espace est considéré comme un caractère et forcement même si rien n'apparait dans la cellule celle-ci est comptabilisée.

en espérant avoir été clair dans le topo merci pour votre aide.
 

fhoest

XLDnaute Accro
Re : UserForm de Saisie

Bonjour,
je vais tenter de t'aider mais sans le code pas facile,
bienvenu sur XLD ,
il faut utilisé le "isnumeric" pour comparer cellule texte ou numérique, tu peux également utiliser "cdbl(valeur)" ou "val(qqch)",
mais comme je n'ai aucun support difficile de t'aidé plus.
A bientôt.
 

jeje.77

XLDnaute Nouveau
Re : UserForm de Saisie

Bonsoir fhoest

merci pour la réponse, je voulais joindre le fichier mais il es trop volumineux

je joint un partie du code du bouton de validation.
les commentaires ne sont pas de moi ils sont d'origine je les ai laissés pour mémoire.


Private Sub UsFValid_Click()
Dim L As Integer 'Déclaration de variable "L" pour connaitre la Ligne Numéro

'ici je repère la dernière ligne vide pour la Collections des données
L = Sheets("Extincteurs").Range("Extincteurs!C65536").End(xlUp).Row + 1

'ici un Test exemple pour la TextBox1, si elle est vide on est viré !!!
If TextBox1 = "" Then
MsgBox "Vous n'avez rien saisi dans la case 7eme !"
TextBox1.SetFocus
Exit Sub
End If

'Pour voir se qui se passe je bascule sur la feuille "Collection"
'Sheets("Extincteurs").Activate

'Ici c'est le report de la saisie dans la feuille
With Sheets("Extincteurs")
.Range("B" & L).Value = TextBox14.Value
.Range("C" & L).Value = TextBox1.Value
.Range("D" & L).Value = TextBox2.Value
.Range("E" & L).Value = TextBox3.Value
.Range("F" & L).Value = TextBox4.Value
.Range("G" & L).Value = TextBox5.Value
.Range("H" & L).Value = TextBox6.Value
.Range("I" & L).Value = TextBox7.Value
.Range("J" & L).Value = TextBox8.Value
.Range("K" & L).Value = TextBox9.Value
.Range("L" & L).Value = TextBox10.Value
.Range("M" & L).Value = TextBox11.Value
.Range("N" & L).Value = TextBox12.Value
.Range("O" & L).Value = TextBox13.Value

End With


'Ici je vide les TextBox
TextBox1.Value = ""
TextBox2.Value = ""
TextBox3.Value = ""
TextBox4.Value = ""
TextBox5.Value = ""
TextBox6.Value = ""
TextBox7.Value = ""
TextBox8.Value = ""
TextBox9.Value = ""
TextBox10.Value = ""
TextBox11.Value = ""
TextBox12.Value = ""
TextBox13.Value = ""
'TextBox14.Value = ""




'ici je remets le curseur en textbox1
TextBox1.SetFocus

End Sub

en espérant que cela vous aide.
 

fhoest

XLDnaute Accro
Re : UserForm de Saisie

Bonjour ,
il faut enlever cette partie:
Code:
'ici un Test exemple pour la TextBox1, si elle est vide on est viré !!!
If TextBox1 = "" Then
MsgBox "Vous n'avez rien saisi dans la case 7eme !"
TextBox1.SetFocus
Exit Sub
End If
A+
 

jeje.77

XLDnaute Nouveau
Re : UserForm de Saisie

Merci pour la réponse, mais quand je saisie les données, la copie se fait mais façon Tetris si je ne renseigne pas la TextBox1 du 7eme.
Étant donné que la 1ere cellule (Date) est toujours remplie par la TextBox14, je l'ai prise en référence.

donc j'ai modifié :

'ici je repère la dernière ligne vide pour la Collections des données
L = Sheets("Extincteurs").Range("Extincteurs!C65536"). End(xlUp).Row + 1 Col B en Ref

'ici un Test exemple pour la TextBox1, si elle est vide on est viré !!!
If TextBox1 = "" Then ( TextBox14)
MsgBox "Vous n'avez rien saisi dans la case Date !"
TextBox1.SetFocus ( TextBox14)
Exit Sub
End If

Je vais essayer de mettre le fichier en pièce jointe pour que vous puissiez le visualiser
 
Dernière édition:

fhoest

XLDnaute Accro
Re : UserForm de Saisie

Re, ton fichier me cause des soucis pour travailler il met énormément de temps a remplir les cellules,même en mettant le calcul en mode manuel,est il long chez toi??
Car la vu la rapidité pas moyen de faire un test et de comprendre le vrai problème,
si ton fichier est plus rapide chez toi retire celui ci puis remet le si pas essai d'expliquer le plus clairement possible ton problème rencontrer afin de pouvoir t'aider le mieux possible,
désolé pour le moment je ne peux te venir plus en aide... a suivre
 

fhoest

XLDnaute Accro
Re : UserForm de Saisie

Re,
En espérant avoir répondu a ton attente:
Code:
Private Sub UsFValid_Click()
Dim L As Integer 'Déclaration de variable "L" pour connaitre la Ligne Numéro

'ici je repère la dernière ligne vide pour la Collections des données
L = Sheets("Extincteurs").Range("Extincteurs!B65536").End(xlUp).Row + 1

'ici un Test exemple pour la TextBox1, si elle est vide on est viré !!!
If TextBox14 = "" Then
MsgBox "Vous n'avez rien saisi dans la case Date !"
TextBox14.SetFocus
Exit Sub
End If

'Pour voir se qui se passe je bascule sur la feuille "Collection"
'Sheets("Extincteurs").Activate

'Ici c'est le report de la saisie dans la feuille

With Sheets("Extincteurs")
For i = 1 To 13
If Controls("TextBox" & i) <> "" Then .Cells(L, i + 2).Value = Val(Controls("TextBox" & i).Value)
Next
.Range("B" & L).Value = TextBox14.Value
End With

'Ici je vide les TextBox
For i = 1 To 14
Controls("TextBox" & i) = ""
Next

'ici je remets le curseur en textbox1
TextBox1.SetFocus

End Sub
Au plaisir.
 

jeje.77

XLDnaute Nouveau
Re : UserForm de Saisie

Voila j'ai allégé le fichier de quelque pages et des codes qui allaient avec.

Chez moi le fichier tourne à merveille sans aucun ralentissement.

donc j'ai modifié le code pour la page Extincteurs en recopiant ton code.

Le problème qui survient et que je ne comprends pas, est que les données saisies dans les TextBox sont retranscrites en 0 dans les cellules de la page Extincteurs.

Pour la page Colonnes, j'ai changer en fait la reference de la 1ere cellule dansle code du bouton de validation:

'ici je repère la dernière ligne vide pour la Collections des données
L = Sheets("Colonnes").Range("Colonnes!B65536").End(xlUp).Row + 1

et comme je veux que la date soit inscrite dans la 1ere colonne, j'ai gardé ce code mais la référence maintenant est la textBox de la Date

'ici un Test exemple pour la TextBox28, si elle est vide on est viré !!!
If TextBox28 = "" Then
MsgBox "Vous n'avez rien saisi dans la case Date !"
TextBox28 .SetFocus
Exit Sub
End If

je joint le nouveau fichier.

Merci
 

Pièces jointes

  • CONTROLE ANOMALIES.xlsm
    67.1 KB · Affichages: 110

jeje.77

XLDnaute Nouveau
Re : UserForm de Saisie

J'ai regardé le code et je l'ai comparé avec celui que j'ai mis dans mon UsF mais c'est le même aussi je ne comprend pas pourquoi des 0 s'affiche dans les cellules de la feuille Extincteurs.

Ne faut-il pas faire une initialisation quelconque concernant les TextBox ?
 

Fo_rum

XLDnaute Accro
Re : UserForm de Saisie

Bonjour,

Ce doit-être à cause de "Val(Controls("TextBox" & i).Value)". Je pense que tu saisis du texte non ?

Tiens-tu au Multipage (plus de contrôles : plus de lignes de code et plus de risques d'erreur) ?
Tu as un exemple avec un Usf simple.

Remarque, maintenant, je préfère

  1. Passer par un contrôle Listbox plutôt que des boutons d'option
  2. Utiliser la croix (puisqu'elle est faite pour cela) plutôt qu'un bouton supplémentaire pour fermer l'Usf.

corrections : la liste était mal initialisée (il faut respecter les noms des onglets)
 

Pièces jointes

  • UsFpour 3 onglets.xls
    88.5 KB · Affichages: 102
Dernière édition:

jeje.77

XLDnaute Nouveau
Re : UserForm de Saisie

Tip Top c'est tout à fait ce que je voulais faire au départ mais trouvais pas comment réaliser un seul UsF pour plusieurs feuilles dans le classeur.

C'est vraiment plus lisible comme code mais quand on est novice on va à la pêche (à la ligne) de codes :D et on essaye de les adaptés comme on peut.

En fait maintenant je peux ajouter d'autres feuilles à mon classeur et les déclarer dans le Private Sub UserForm_Initialize() pour qu'elles soient reconnues et êtres incrémentées de données ?

Je vais abuser mais pourrais-tu m'expliquer la ligne ' Dim Nom As String, n As Byte, V As Byte ' qui est en premier je ne comprend pas à quoi correspond le (n As Byte, V As Byte)

Merci pour cette aide salvatrice. Il me resteras des ongles à ronger pour une autre prise de tête.:)
 

jeje.77

XLDnaute Nouveau
Re : UserForm de Saisie

Re,
oui je l'avais vu et je l'ai corrigé mais je ne voulais pas ennuyé le monde pour ce petit soucis qui était à ma portée.

Merci encore pour la feuille d'explication.

Mon problème est résolu

Longue vie au forum et à ceux qui le font vivre :cool:
 

Discussions similaires

Réponses
6
Affichages
344

Statistiques des forums

Discussions
312 228
Messages
2 086 421
Membres
103 205
dernier inscrit
zch