Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Autres USERFORM Masque de saisie

  • Initiateur de la discussion Initiateur de la discussion domeli
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
 
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
 
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
 
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:
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.
 
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 🙂
 
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.
 
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
 
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.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…