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

domeli

XLDnaute Junior
Quand je saisis ça se met dans les lignes du tableau et ça remonte quand il y a des trous au dessus.
Je sais pas comment expliquer autrement.
Il faut tester la saisie pour voir. Par exemple si on ajoute un enregistrement avec 2 enfants le deuxième va remonter sur la ligne du dessus car il n'y a qu'un enfant au dessus.
 

patricktoulon

XLDnaute Barbatruc
c'est pas un masque de saisie dont tu a besoins mais de déterminer la première ligne entièrement vide dispo dans ton tableau

VB:
Sub test()
Set c = Feuil1.Range("A:H").Find("*", , , , xlByRows, xlPrevious)
If Not c Is Nothing Then MsgBox "ligne dipo " & c.Row + 1
End Sub
 

domeli

XLDnaute Junior
J'ai mis le test sur les 2 parties au début de chaque instruction et j'ai mis de A à G pour le salarié et de A à L pour l'enfant.
Ça fait bien le test mais la saisie remonte quand même dans les cellule vide du dessus.

Pour la partie salarié
Private Sub CmdSaisieUserValider_Click()
Set c = Feuil1.Range("A:G").Find("*", , , , xlByRows, xlPrevious)
If Not c Is Nothing Then MsgBox "ligne dipo " & c.Row + 1

Pour la partie enfant
Private Sub CmdSaisieEnfantValider_Click()
Set c = Feuil1.Range("A:L").Find("*", , , , xlByRows, xlPrevious)
If Not c Is Nothing Then MsgBox "ligne dipo " & c.Row + 1
 

patricktoulon

XLDnaute Barbatruc
re
non non non non
c'est AH pour les deux
et le msgbox c'est juste pour te montrer tu fait ce que tu veux avec c.row+1 qui est la ligne dispo
a moins qu'il y est plusieurs ligne enfant pour la même ligne en AH
au quel cas c'est bidon il faut revoir ta conception
 

domeli

XLDnaute Junior
Ah je crois que j'ai saisi ta réponse. En fait tu veux tester la dernière ligne écrite pour aller faire la saisie directement dans les cellules ?
Mais ce n'est pas ce que je veux car après je veux que mon tableau se trie à la fin de ma saisie . Chose que je ferai après.
Mon but est de vraiment faire la saisie dans le masque pour ne pas à avoir à descendre à chaque fois en bas du tableau.
 

domeli

XLDnaute Junior
En fait il peut y avoir jusqu'à 6 enfants sur la ligne du salarié, mais tout le monde n'en a pas 6 heureusement :)
Quand au salarié, je n'ai pas toujours les infos tout de suite ou erronées. Il faut donc y revenir à un moment donné et ça me laisse des trous du coup. Aussi bien côté salarié que enfant.
Mais j'essaie avec AH pour les deux.
 

patricktoulon

XLDnaute Barbatruc
re
bonjour
écoute chez moi avec ton fichier exemple j'ai bien la ligne 5 alors tu doit faire quelque chose de travers ;)
Capture.JPG
 

domeli

XLDnaute Junior
Bonjour Patrick

Le problème n'est pas là. Effectivement il me renvoie bien la ligne.Comme je te l'ai dit, le test fonctionne bien.
Sur l'image que tu renvoies si tu saisie le prochain salarié il va bien se mettre en ligne 5 mais si tu mets un CDD avec donc une date de sortie, la date de sortie va sa mettre en ligne 4 et donc remonter dans le trou laissé par le CDI du dessus.
 

Discussions similaires

Statistiques des forums

Discussions
312 225
Messages
2 086 411
Membres
103 201
dernier inscrit
centrale vet