Autres USERFORM Masque de saisie

domeli

XLDnaute Junior
Bonjour à tous.

J'ai besoin de faire un masque de saisie pour le CSE. J'ai fait une bonne partie du boulot mais il y a des choses que je ne sais pas faire.
Il y a des champs que je ne peux pas remplir tout de suite et ça me laisse des trous dans la ligne du dessus.
J'ai donc 2 problèmes à résoudre.

1- Quand je remplis une ligne avec la saisie, ça remonte sur les trous au dessus et je voudrais que ça reste sur la même ligne. Je sais que ça se passe au niveau "Range("H65536").End(xlUp).Offset(1, 0)" mais je n'arrive pas à comprendre le truc.
2- Comment revenir sur la saisie d'une ligne en particulier pour y ajouter de nouvelles informations ?

Mon fichier d'origine fait plus de 900 lignes avec beaucoup plus de colonne, mais j'ai simplifier au maximum pour aller à l'essentiel.
Un petit coup de main ne serait pas de refus.
 

Pièces jointes

  • Masque saisie.xls
    70 KB · Affichages: 62

patricktoulon

XLDnaute Barbatruc
non non non non
je te l'ai dit au début de cette conversation, quand tu ajoute une ligne tu te sert du numéro de ligne dans tout ton code et ton problème doit être là
si tu respecte ça ,il n'y a aucune raison que ça match pas

je viens de regarder ton code et c'est bien ca
PAS BON
Range("H65536").End(xlUp).Offset(1, 0).Value = UCase(Me.TxtNPère.Text)
Range("I65536").End(xlUp).Offset(1, 0).Value = Application.WorksheetFunction.Proper(Me.TxtEnfant1.Text)
Range("J65536").End(xlUp).Offset(1, 0).Value = UCase(Me.TxtNaissance1.Text)
Range("K65536").End(xlUp).Offset(1, 0).Value = Application.WorksheetFunction.Proper(Me.TxtEnfant2.Text)
Range("L65536").End(xlUp).Offset(1, 0).Value = UCase(Me.TxtNaissance2.Text)

TOUJOURS PAS BON
Range("A65536").End(xlUp).Offset(1, 0).Value = Userconverti
Range("B65536").End(xlUp).Offset(1, 0).Value = Me.TxtMatricule.Text
Range("C65536").End(xlUp).Offset(1, 0).Value = Me.TxtTéléphone.Text
Range("D65536").End(xlUp).Offset(1, 0).Value = UCase(Me.ComboBoxSite.Text)
Range("E65536").End(xlUp).Offset(1, 0).Value = UCase(Me.ComboBoxContrat.Text)
Range("F65536").End(xlUp).Offset(1, 0).Value = UCase(Me.TxtDateEntrée.Text)
Range("G65536").End(xlUp).Offset(1, 0).Value = UCase(Me.TxtDateSortie.Text)

a chaque fois tu choisi la derniere ligne de chaque colonne
c'est pas ca qu'il faut faire
 

ChTi160

XLDnaute Barbatruc
Bonjour
Bonjour le Fil ,le Forum

Peut être un mixe des deux :
soit :
VB:
Range("H65536").End(xlUp).Offset(1, 0)'pour les parents et 
Range(LigneSource,Columncount").End(xltoLeft).Offset(0,1) 'pour ajouter les enfant sur la Ligne
jean marie
 

patricktoulon

XLDnaute Barbatruc
Bonjour Chti160
le find previous byxlrows c'est pas pour rien ;)
est ce si difficile a comprendre??
VB:
Set c = Feuil1.Range("A:G").Find("*", , , , xlByRows, xlPrevious)
If Not c Is Nothing Then
ligne = c.Row + 1
    Range("A" & ligne).Value = Userconverti
    Range("B" & ligne).Value = Me.TxtMatricule.Text
    Range("C" & ligne).Value = Me.TxtTéléphone.Text
    Range("D" & ligne).Value = UCase(Me.ComboBoxSite.Text)
    Range("E" & ligne).Value = UCase(Me.ComboBoxContrat.Text)
    Range("F" & ligne).Value = UCase(Me.TxtDateEntrée.Text)
    Range("G" & ligne).Value = UCase(Me.TxtDateSortie.Text)
end if
 

patricktoulon

XLDnaute Barbatruc
et si tu dois avoir plusieurs enfants pour une ligne A:G donc plusieurs lignes enfant pour une ligne parent tu prends comme je disais le find previous de A:H pour les parents et les enfant et offset(1) pour enfant2 offset(2) pour enfant3 etc....

et il faudrait te mettre a la page sur les uses et coutumes de notre société même si j'en déplore certaines et te mettre au fait que 2 enfants de même parent pourrait ne pas avoir le même nom
donc ton interface (form enfant) est a revoir ;)
 
Dernière édition:

domeli

XLDnaute Junior
Bonsoir

Désolé j'ai été pris aujourd'hui.
Ok merci je regarde ça
Alors pour le nom des parents j'y ai déjà réfléchi et en fait on en a pas tant que ça qui n'ont pas le même nom...En tout cas de déclaré. Et du coup on les sépare avec un slash dans la case nom du père.
C'est pas très important pour notre gestion, l'essentiel étant le nom du salarié.
Le tableau est déjà important. Je gère jusqu'à 6 enfants, les ancv, les rentrées des classes et les chèques cadeau de Noel. Il va jusqu'à la colonne AO donc un parent de plus ou moins ce n'est pas la priorité.
Bon je regarde ça et je reviens :) Encore un grand merci.
 

domeli

XLDnaute Junior
Ok je vois T'as tout changé. LOL
Alors j'ai pas tout compris mais la gestion de la ligne fonctionne bien.
Maintenant je vais essayer d'intégrer ça à mon tableau.
Par contre tu as enlevé le nom du père qui était justement pour le cas ou le nom de l'enfant n'avait pas le nom du salarié et le format date en dd/mm/yyyy ne fonctionne plus. Le format Prénom pour les enfants aussi.
Bon y a du boulot encore avant de voir le point N° 2 :)
 

domeli

XLDnaute Junior
J'ai vois bien comment ranger le nom et prénom et je crois que je peux enlever :
' Range("A" & ligne).End(xlUp).Offset(1, 0).Value = Userconverti
' Range("H" & ligne) = UCase(Me.TxtNUser.Text)
pour remettre une combo dans la partie enfant pour le nom d'usage mais les dates se mettent en format texte ce qui est génant car j'ai des colonnes qui ont des fonctions qui donnent l'age de l'enfant. Et là je vois plus où tu mets les dates c'est entre les virgules ?
Set c = Feuil1.Range("A:H").Find("*", , , , xlByRows, xlPrevious)
Avant je pouvais mettre un CDate mais là je sais pas.
 

patricktoulon

XLDnaute Barbatruc
re
VB:
Private Sub CmdSaisieUserValider_Click()
    If Me.TxtNUser.Text = "" Then MsgBox "Vous devez entrer le nom de l'utilisateur.": Me.TxtNUser.SetFocus: Exit Sub
If Me.TxtPUser.Text = "" Then MsgBox "Vous devez entrer le prénom de l'utilisateur.": Me.TxtPUser.SetFocus: Exit Sub
Userconverti = UCase(Me.TxtNUser.Text) & " " & UCase(Me.TxtPUser.Text)
Set c = Feuil1.Range("A:H").Find("*", , , , xlByRows, xlPrevious)
If Not c Is Nothing Then
    ligne = c.Row + 1
    Range("A" & ligne).End(xlUp).Offset(1, 0).Value = Userconverti
    Range("H" & ligne) = UCase(Me.TxtNUser.Text)
    For Each ctrl In Me.Controls
        If ctrl.Tag <> "" Then
        Feuil1.Range(ctrl.Tag & ligne) = IIf(Left(ctrl, 6) = "TxtDat" Or Left(ctrl, 6) = "TxtNai", CDate(ctrl.Value), ctrl.Value)
    Next
    Unload Me
End If
End Sub
 

domeli

XLDnaute Junior
ouai sans doute mais je veux pas lâcher l'affaire :)
J'ai mis dans mon tableau en ajoutant les combo qui manquaient et j'ai bug bizarre.
Je mets juste le nom et prénom et la macro va jusqu'au bout et me met Next sans For
Je mets le Next en commentaire pour voir et il me dit For sans Next :(
Sinon pour la date c'est bon.
 

Discussions similaires

Réponses
3
Affichages
378

Statistiques des forums

Discussions
312 418
Messages
2 088 255
Membres
103 792
dernier inscrit
lyloun