3 petites questions

  • Initiateur de la discussion lo
  • Date de début
L

lo

Guest
Salutations à tous!


Trois petites questions pour votre plus grand plaisir ;-) Mais avant toutes choses voici une copie de mon code :

'page saisie
Private Sub Valider_Click()
Dim sjour As String
Dim qu As String
Dim nom As String
Dim adress As String
Dim cour As String
Dim net As String
Dim pt As String
Dim lp As String
Dim un As String
Dim ept As String
Dim sept As String
Dim laforetpt As String
Dim artlp As String
Dim laforetlp As String
Dim capeblp As String
Dim intun As String
Dim perun As String

On Error GoTo Err
sjour = TBsjour.Value
qu = TBqu.Value
nom = TBnom.Value
adress = TBadress.Value
cour = TBcour.Value
net = TBnet.Value
pt = TBpt.Value
lp = TBlp.Value
un = TBun.Value
ept = TBept.Value
sept = TBsept.Value
laforetpt = TBlaforetpt.Value
artlp = TBartlp.Value
laforetlp = TBlaforetlp.Value
capeblp = TBcapeblp.Value
intun = TBintun.Value
perun = TBperun.Value

ligne = Sheets("Feuil1").Range("D65536").End(xlUp).Row + 1
Worksheets(1).Activate
Cells(ligne, 1).Value = sjour
Cells(ligne, 2).Value = qu
Cells(ligne, 4).Value = nom
Cells(ligne, 5).Value = adress
Cells(ligne, 6).Value = cour
Cells(ligne, 7).Value = net
Cells(ligne, 8).Value = pt
Cells(ligne, 9).Value = lp
Cells(ligne, 10).Value = un
Cells(ligne, 11).Value = ept
Cells(ligne, 12).Value = spt
Cells(ligne, 13).Value = laforetpt
Cells(ligne, 14).Value = artlp
Cells(ligne, 15).Value = laforetlp
Cells(ligne, 16).Value = capeblp
Cells(ligne, 17).Value = intun
Cells(ligne, 18).Value = perun

ligne = ligne + 1

Exit Sub
Err:
MsgBox "Erreur"
End Sub

Private Sub Quit2_Click()
Unload tpo
End Sub



So,
1/ Est-il possible de saisir dans une textbox une value automatic, à savoir la date du jour (d'après winxp?)?
2/ Avec ce code, après chaque validation les valeurs saisies sont alors rentrées dans leurs cels respectives sous excel. Pb, elles restent apparentes sur la fiche. Est-il possible de vider les textbox entre deux validations?
3/ Il y a une petite err dans le code que je n'arrive à résoudre. Imaginons que la saisie commence ligne 7, après avoir cliquer sur valider une premiere fois les valeurs sont inscrites ligne 7, une seconde fois elles le sont tjs ligne 7, or elles devraient l'être ligne 8 :(

Plz help :)

Bonne journée à tous!
 
@

@+Thierry

Guest
Bonjour LO, le Forum

Vite Fait car il est 14:00 et j'ai plein de taff là...

Pour 1)
TextBox1.value = Format(Now, "DD/MM/YYYY")

Pour 2)
Dim CTRL As Control
For Each CTRL In Controls
If TypeOf CTRL Is MSFORMS.TextBox Then
CTRL = ""
End If
Next CTRL

Pour 3)
Supprime la Ligne : "ligne = ligne + 1"
qui fait double emploi, puisque tu as déjà initilaisé Ligne avec
"ligne = Sheets("Feuil1").Range("D65536").End(xlUp).Row + 1"
De plus je ne vois pas le "Dim" de Ligne ?
Ajoute : "Dim Ligne As Integer" en début de procédure ...

Bon Aprèm
@+Thierry
 
L

lo

Guest
Bonjour LO, le Forum
=> Bonjour Thierry, et merci de m'avoir accorder un peu de ton temps

Vite Fait car il est 14:00 et j'ai plein de taff là...
=> voir plus haut :eek:)

Pour 1)
TextBox1.value = Format(Now, "DD/MM/YYYY")
=> j'ai bien tenté d'utiliser cette formule mais je ne sais pas ou la mettre. Explication: au démarrage la case est vide, quelque soit la valeur que je rentre une fois cliquer sur valider j'ai un retour d'err mais la valeur change pour la date du jour. En gros comme faire pour que des le chargement la valeur s'inscrire sans quelle ne puisse être changé en fait...


Pour 2)
Dim CTRL As Control
For Each CTRL In Controls
If TypeOf CTRL Is MSFORMS.TextBox Then
CTRL = ""
End If
Next CTRL
=> TextBox = ? Je n'ai pas saisi ou placer ces lignes ni que renomer pour que cela fonctionne ;(

Pour 3)
Supprime la Ligne : "ligne = ligne + 1"
qui fait double emploi, puisque tu as déjà initilaisé Ligne avec
"ligne = Sheets("Feuil1").Range("D65536").End(xlUp).Row + 1"
De plus je ne vois pas le "Dim" de Ligne ?
Ajoute : "Dim Ligne As Integer" en début de procédure ...

=> j'ai supprimé la ligne "ligne = ligne+1" et intégré la dim ligne as integer que j'avais oublié oups... ça semble fonctionner bien mieux!

thk!
 
A

Arnaud

Guest
salut,


pour 1) :
met le par ex ds l'évènement active de ton userform ce qui permet de mancer le code a chaque activation du userfrom
Private Sub UserForm_Activate()
TextBox1.Value = Format(Now, "DD/MM/YYYY")
TextBox1.Enabled = False ' empèche toute modification sur le textbox
End Sub


pour le 2) :
en fais tu n'a rien a changer. TextBox correspond au type de composant sur lequel tu souhaite travailler.
tu dois placer ce code a l'endroi ou tu souhaite que la réinitialisation de tes textbox se fasse par ex sur le click d'un bouton :

Private Sub CommandButton1_Click()
Dim CTRL As Control
For Each CTRL In Controls
If TypeOf CTRL Is MSFORMS.TextBox Then
CTRL = ""
End If
Next CTRL
End Sub
 
L

lo

Guest
excellent ! tout fonctionne... sauf un petit soucis qui devrait être relativement simple à réparer.

Lorsque je lance le formulaire, un valeur (la date) est inscrite par défaut et ne peut être changé, une seconde (qu) est seulement inscrite par défaut et peu varier. Jusque là aucun soucis. Sauf qu'une fois cliquer sur valider, tout s'efface, or j'aimerai récup ces deux valeurs automatiquement...

que faire?

Merci encore ...
 
A

Arnaud

Guest
donc la le plus simple c que si tu a plein de textbox tu fais :

Private Sub CommandButton1_Click()

Dim CTRL As Control
For Each CTRL In Controls
If TypeOf CTRL Is MSFORMS.TextBox Then
If CTRL.Name <> "TextBox1" and CTRL.Name <> "TextBox2" Then CTRL = "" ' Nom des textBox a ne pas vider
End If
Next CTRL

End Sub


si tu as peu de TextBox :

Private Sub CommandButton1_Click()

'nom des TextBox a vider
TextBox4 = ""
TextBox5 = ""

End Sub
 
@

@+Thierry

Guest
Re Lo, Arnaud, le Forum

Merci Arnaud pour le complément d'info, c'est bien de travailler en équipe

Pour ta dernière question Lo, imaginons que les TextBox de Dates se nomment :
TextBox1 pour la Date Valeur (auto) locked
TextBox2 pour la Date (auto) unlocked
TextBox3 pour autre chose...

Sur chacune de ces TextBox, en mode Design sous VBE, tu fais [F4] pour avoir la fenetre propriété ... Dans cette fenêtre tu cherches la propriété TAG... Tu y tapes "NonReset" (Par exemple)

Et donc dans la boucle que je t'ai proposée plus haut tu modifies :
Private Sub CommandButton1_Click()
Dim CTRL As Control
For Each CTRL In Controls
If TypeOf CTRL Is MSFORMS.TextBox Then
If Not CTRL.Tag = "NonReset" Then CTRL = ""
End If
Next CTRL
End Sub

Voilà ce devrait faire ce que tu souhaites...
Bon Aprèm
@+Thierry
 
L

lo

Guest
Arnaud,
Thierry,
Le forum
Merci,

Tout semble bien fonctionner. Ils manquaient ces petites choses pour en faire un logiciel pleinement actif. Merci encore.

Vais tenter de trainer ici plus souvent de façon à rendre la pareil dès que possible.

Bonne soirée,
Lo.


ps: le tag nonreset est une excellent idée :)
 
L

lo

Guest
dites puisque l'on est en plein dedans ... me souvient plus exactement du comment utiliser les somme.si et si.

Je pense qu'un exemple sera bcp plus parlant:

A | B | C
1 | | 1
1 | 1 | 1
1 | |

comment faire pour faire une somme uniquement si une valeur est inscrite en A & C ...

c con mais j'ai un trou :D

Bonne soirée les gars +++
 

Discussions similaires

Statistiques des forums

Discussions
312 715
Messages
2 091 265
Membres
104 826
dernier inscrit
SOUSMANE