Probléme avec un formulaire

jmercanton

XLDnaute Nouveau
Bonjour à tous,
j'ai réalisé une feuille de calcul que devrait pouvoir être remplie avec un formulaire.

Le probléme est le suivant:
lorsque je rentre la première saisie, tout se passe normalement car la saisie rentre dans la première ligne libre de la feuille de calcul.

Par contre si je rentre une nouvelle saisie, cette dernière va se placer sur la ligne 312. Cette ligne 312 est la dernière ligne qui contient une formule.
Ma question est la suivante:
Comment puis je faire pour que ma feuille se remplisse normalement et progressivement en ajoutant une saisie en dessous de la dernière, et non pas, que cette saisie aie se placer en bas de ma feuille.
En fait j'aimerai que les saisies se place les une une en desous des autres en commancant par le haut de la feuille et en descendant progressivement à chaque saisie.

Je joint le fichier en question.
Pour ouvrir le tableau de commande
cliquer sur le bouton portant le même nom en haut à gauche.

Merci à toutes les personnes qui s'arrêteront sur ce message.
Bonne journée à tous.
Jean-Michel [file name=trimestre.zip size=31042]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/trimestre.zip[/file]
 

Pièces jointes

  • trimestre.zip
    30.3 KB · Affichages: 22
  • trimestre.zip
    30.3 KB · Affichages: 24
  • trimestre.zip
    30.3 KB · Affichages: 25

lio

XLDnaute Occasionnel
Bonjour jmercanton,

Bon, je suis débutant en VBA et je ne trouve pas ton USF de saisie :eek:
Mais bon, tu peux essayer ceci:
Dim L As Integer
Set WS = ThisWorkbook.Sheets('Eleves')
L = WS.Range('A65536').End(xlUp).Row +1

With WS
.Range('A' & L).Value = TxtNom.Value
.Range('B' & L).Value = TxtPrenom.Value
.Range('C' & L).Value = TxtSommeDue.Value
.Range('D' & L).Value = TxtSommePayée.Value
Etc...
End With

Salutations. Lio
 

jmercanton

XLDnaute Nouveau
Salut Lio, salut le forum,
tout d'abbord merci pour ton code.

Si toi tu es débutant, moi je suis super novice!!
Donc je ne sais pas comment et a quel endroit je vais pouvoir installer ton code afin de pouvoir l'essayer.

Mon formulaire de saisie (trouvé dans le menu Donnée; formulaire; etc) s'ouvre en 2 manipulations. En premier si tu cliques sur le texte tableau de commande en haut a gauche. il y a un USF qui s'ouvre. Sur ce USF il y a en bas un bouton marqué formulaire de saisie. Tu clic et ensuite le formulaire s'affiche.

merci pour le coup de main c'est super gentil

jean-michel
 

Jacques87

XLDnaute Accro
Bonsoir JmerCanton, bonsoir Lio

Jmercanton je crois que Lio te demande comment accéder à ta grille de saisie (et non ton userform) non pas en mode utilisation, mais en mode création.
C'est logique car elle voudrait comprendre comment tu l'as construite

Amitiés Lio
Bon courage JmerCanton
 

lio

XLDnaute Occasionnel
Re,

Un exemple vite fait en passant par un USF.

Salutations. [file name=Exemple_20060129224429.zip size=13591]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Exemple_20060129224429.zip[/file]

EDITION: Bonsoir Jacques, c'est bien ça qui m'intéressé. Bonne semaine. Lio.

Message édité par: lio, à: 29/01/2006 22:49
 

Pièces jointes

  • Exemple_20060129224429.zip
    13.3 KB · Affichages: 21

lio

XLDnaute Occasionnel
Re,

Tu peux rajouter la partie en rouge pour faire un peu mieux:
Private Sub CmdValider_Click()
Dim L As Integer
Dim WS As Worksheet

Set WS = ThisWorkbook.Sheets('Eleves')
L = WS.Range('A65536').End(xlUp).Row + 1

With WS
.Range('A' & L).Value = TxtNom.Value
.Range('B' & L).Value = TxtPrenom.Value
.Range('C' & L).Value = TxtSommeDue.Value
.Range('D' & L).Value = TxtSommePayee.Value
End With
TxtNom = ''
TxtPrenom = ''
TxtSommeDue = ''
TxtSommePayee = ''

End Sub

Salutations.
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir Lio, Jacques, Jean Michel, le Forum

En fait il s'agit du 'ShowDataForm' qui est la grille de saisie par défaut proposée par Excel (Menu Donnée => Grilles).

Par contre si le tableau contient des formules, cette grille de saisie automatiques, se verra automatiquement perturbée...

Non la solution sera bien un UserForm de Saisie comme Lio te l'a montré en traquant la dernière ligne vide avec un code comme Lio :

L = WS.Range('A65536').End(xlUp).Row + 1

(Si la colonne A ne contient pas de formule)

Bonne Nuit
[ol]@+Thierry[/ol]
 

jmercanton

XLDnaute Nouveau
Salut à tous, salut le forum,
Merci beaucoup pour l'exemple,

j'ai réussi à comprendre comment faire pour adapter le code de Lio.

Vraiment un très grand Merci à tous

Mais je vais devoir encore avoir besoin de vous car je pense déjà à quelques améliorations.
Notament j'aimerai bien que le bouton valider me vide les zone de saisie et me replace le cursseur en tête de formulaire pour que je puisse inscrire la saisie suivante.

Je vais chercher un peu
et si j'arrive pas a trouver une solution,
je reviendrai faire un appel.

merci encore
voici mon bébé en version améliorée[file name=trimestre_20060130000832.zip size=36212]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/trimestre_20060130000832.zip[/file]

Jean-michel
 

Pièces jointes

  • trimestre_20060130000832.zip
    35.4 KB · Affichages: 18

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir StrangeDove, re Jean Michel, Lio, le Forum

Très interessant ton code StrangeDove ;)

Bon voici assez rapidement une petite amélioartion de ton code :

Option Explicit

Private Sub CmdValider_Click()
TheController
End Sub

Private Sub TheController()
Dim CTRL As Control
Dim AlertNum As Byte
Dim AlertNam As String
Dim Question As Byte

For Each CTRL In Me.Controls
   
If TypeOf CTRL Is MSForms.TextBox Then
       
If CTRL.Value = '' Then
            AlertNum = AlertNum + 1
            AlertNam = AlertNam & CTRL.Name & vbCrLf
           
           
Select Case CTRL.Name
               
Case 'TxtPrenom', 'TxtNom'
                   
'Il ne passe rien
               
Case Else
                   
If Not IsNumeric(CTRL) Then
                        MsgBox 'Il n
'y a pas de valeur numérique dans les sommes', vbCritical
                       
Exit Sub
                   
End If
               
End Select
           
       
End If
   
End If
Next

   
If Not AlertNum = 0 Then
        Question = MsgBox('Les ' & AlertNum & ' TextBox sont vides ' & vbCrLf & AlertNam & _
                          'Voulez vous continuer ?', vbQuestion + vbYesNo)
   
           
If Question = vbYes Then
                TheFiller
           
End If
   
Else
        TheFiller
   
End If


End Sub

Private Sub TheFiller()
Dim L As Integer
Dim WS As Worksheet

Set WS = ThisWorkbook.Sheets('Eleves')
L = WS.Range('A65536').End(xlUp).Row + 1

   
With WS
        .Range('A' & L).Value = TxtNom.Value
        .Range('B' & L).Value = TxtPrenom.Value
        .Range('C' & L).Value = TxtSommeDue1.Value
        .Range('D' & L).Value = TxtSommePayee1.Value
        .Range('F' & L).Value = TxtSommeDue2.Value
        .Range('G' & L).Value = TxtSommePayee2.Value
        .Range('I' & L).Value = TxtSommeDue3.Value
        .Range('J' & L).Value = TxtSommePayee3.Value
   
End With

TheCleaner
End Sub


Private Sub TheCleaner()
Dim CTRL As Control

For Each CTRL In Me.Controls
   
If TypeOf CTRL Is MSForms.TextBox Then
        CTRL.Value = ''
   
End If
Next

Me.TxtNom.SetFocus
End Sub


Bonne Nuit
[ol]@+Thierry[/ol]
 

lio

XLDnaute Occasionnel
Bonjour le fil,

Ci joint le code de Thierry, légèrement modifié:

Private Sub TheController()
Dim CTRL As Control
Dim AlertNum As Byte
Dim AlertNam As String
Dim Question As Byte

For Each CTRL In Me.Controls
If TypeOf CTRL Is MSForms.TextBox Then
If CTRL.Value = '' Then
AlertNum = AlertNum + 1
AlertNam = AlertNam & CTRL.Name & vbCrLf

Select Case CTRL.Name
Case 'TxtPrenom', 'TxtNom'
'Il ne passe rien
Case Else
If Not IsNumeric(CTRL) Then
MsgBox 'Il n'y a pas de valeur numérique dans les sommes', vbCritical
Exit Sub
End If
End Select

End If
End If
Next

If Not AlertNum = 0 Then
Question = MsgBox('Les ' & AlertNum & ' TextBox sont vides ' & vbCrLf & AlertNam & _
'Voulez vous continuer ?', vbQuestion + vbYesNo)

If Question = vbYes Then
TheFiller
'End If (enlevé)
Else
TheCleaner '(rajouté)
'TheFiller ( enlevé)
End If
End If '(rajouté)

End Sub

Cordialement. Lio

Message édité par: lio, à: 30/01/2006 08:28
 

jmercanton

XLDnaute Nouveau
Salut à tous du fil

Je suis déjà dépassé par vos compétences à tous.
Tout d'abord un super grand merci pour ce super travail.
En plus je crois que j'ai appris à comprendre comment foctionne un formulaire.
Ce qui fait beaucoup pour un novice comme moi.

Par contre mes compétences sont encore un peu dépassées par mes ambitions.
Je m'explique:
Je remarque qu'il serait confortable que chaque enregistrement, déjà saisi puisse apparaite dans le formulaire. De cette manière si je dois apporter un ajout d'information ou une modifiaction en cours d'année pour un élève déjà saisi, de manière compléte ou partielle, il me sera plus facile de le faire au travers du formulaire.

J'ai essayé je faire une approche de cette modifacation mais je vois mes limites personnelles arriver à trés grand pas!!!

Es ce que techniquement c'est possible d'avoir un tel affichage, et si oui , pouriez vous m'aider avec quelques précieux conseils pour modifier mon code actuel.

Merci d'avance à tous et toutes pour votre disponibilité.

Bonne journée à tous.

Jean-Michel

voilà où j'en suis [file name=trimestre_20060130182919.zip size=42304]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/trimestre_20060130182919.zip[/file]
 

Pièces jointes

  • trimestre_20060130182919.zip
    41.3 KB · Affichages: 23

lio

XLDnaute Occasionnel
Salut le fil, jmercanton,

Bien sur, c'est possible en VBA. Bon à vrai dire je n'ai pas trop le temps de t'aider.

Par contre, dans la zone de téléchargement, tu peux déjà regarder les fichiers 'base de données' pour te donner une idée.

Tu as aussi le fichier BDD de Ti sur le site VeriTi2 (plus complexe je pense).

Tu as aussi un fichier de @T... qui s'appelle 'Contact' et qui me sert de référence pour la gestion de base de donnée.( Merci beaucoup au passage).

Bon avec un peu de patience et recul, tu devrais trouver ton bonheur.

N'oublie pas également les archives du forum ...

J'essaierai si les questions sont ponctuelles de te venir en aide ( dans la limite de mes compétences qui ne sont pas très grande a vrai dire ;) ).

Salutations.

Message édité par: lio, à: 30/01/2006 19:48
 

jmercanton

XLDnaute Nouveau
Salut le fil, Lio,

Merci pour toutes ces infos,
je vais aller voir sur ces liens pour essayer de trouver une maniére de progresser.

Si je vois que je ''plafonne'' trop longtemps dans mon évolution, je reviendrai faire un tour sur le fil pour lancer un nouvel 'appel au secours'.

en attendant un grand merci

Bonne soirée.

Jean-Michel
 

Discussions similaires

Réponses
3
Affichages
351
Réponses
17
Affichages
673

Statistiques des forums

Discussions
312 321
Messages
2 087 266
Membres
103 502
dernier inscrit
talebafia