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
apprends un peu
tout tes textboxs ont une destination
met dans leur tags la lettre de la colonne correspondante
tu a changé la feuille même si tu vois toujours "Feuil1" en fait son codename est "Feuil2"
faire la différence en codename et nom
il faut faire la différence entre feuil1.range(....) et sheets("feuil1").range(....)
bref c'est a ta porté
bonne route ;)
 

domeli

XLDnaute Junior
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 = Feuil2.Range("A:J").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 Feuil2.Range(ctrl.Tag & ligne) = ctrl.Value
Next
Unload Me
End If
End Sub

Ça y est nickel ! Je vais déjà me coucher moins bête ce soir :)
Maintenant l'histoire des Majuscule, Prénom et date
Quand j'ajoute cette ligne :
Feuil2.Range(ctrl.Tag & ligne) = IIf(Left(ctrl, 6) = "TxtDat" Or Left(ctrl, 6) = "TxtNai", CDate(ctrl.Value), ctrl.Value)
Ca me fait erreur de compilation For sans Next alors qu'il y a bien le Next en dessous.
 

ChTi160

XLDnaute Barbatruc
Bonjour domeli
Bonjour le Fil ,le Forum
une autre vision ,présentation (non aboutie)
prenez soin de vous !
bonne journée
jean marie
edit : j'ai rajouter des données(Enfants)
 

Pièces jointes

  • Test_1.gif
    Test_1.gif
    77.4 KB · Affichages: 10
Dernière édition:

domeli

XLDnaute Junior
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 = Feuil2.Range("A:J").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
'        Feuil2.Range(ctrl.Tag & ligne) = ctrl.Value
        Feuil2.Range(ctrl.Tag & ligne) = IIf(Left(ctrl, 6) = "TxtDat" Or Left(ctrl, 6) = "TxtNai", CDate(ctrl.Value), ctrl.Value)
    End If
    Next
    Unload Me
End If
End Sub

Voilà désolé. Je viens de me faire reprendre de volée, normal. Toutes mes excuses.
Ca s'arrête à la colonne B (Matricule)
 

Discussions similaires

Réponses
3
Affichages
377

Statistiques des forums

Discussions
312 413
Messages
2 088 199
Membres
103 766
dernier inscrit
mahieux