PB Userform et retranscription données

  • Initiateur de la discussion ThierryR
  • Date de début
T

ThierryR

Guest
Bonjour à tous,

J'ai créé un userform de saisie de données concernant la gestion de personnel.
J'ai un problème de retranscription de données sur la feuille après validation. Il met à vide certaines cellules type LstPostes, LstServices... et remplit les autres.


Merci d'avance

ThierryR

Voici mon code :

Quand je selectionne le salarié dans la listbox :

Private Sub LstEmployés_Click()
Dim I As Integer
Dim J As Integer

'Affichage de l'employé selectionné
BNouveau = False
I = LstEmployés.ListIndex + 2

With ThisWorkbook.Worksheets("Employés")
.Activate
MenuEmployés.TxtNom = .Cells(I, 1)
MenuEmployés.TxtPrénom = .Cells(I, 2)
For J = 0 To MenuEmployés.LstServices.ListCount - 1
If MenuEmployés.LstServices.List(J) = .Cells(I, 3) Then
MenuEmployés.LstServices.ListIndex = J
End If
Next J
For J = 0 To MenuEmployés.LstPostes.ListCount - 1
If MenuEmployés.LstPostes.List(J) = .Cells(I, 4) Then
MenuEmployés.LstPostes.ListIndex = J
MenuEmployés.LstPostes.Selected(J) = True
End If
Next J
For J = 0 To MenuEmployés.LstTypeContrat.ListCount - 1
If MenuEmployés.LstTypeContrat.List(J) = .Cells(I, 5) Then
MenuEmployés.LstTypeContrat.ListIndex = J
MenuEmployés.LstTypeContrat.Selected(J) = True
End If
Next J
MenuEmployés.LstTypeContrat = .Cells(I, 5)
For J = 0 To MenuEmployés.LstTypeEmploi.ListCount - 1
If MenuEmployés.LstTypeEmploi.List(J) = .Cells(I, 6) Then
MenuEmployés.LstTypeEmploi.ListIndex = J
MenuEmployés.LstTypeEmploi.Selected(J) = True
End If
Next J
MenuEmployés.CalendrierEntrée.Value = .Cells(I, 7)
TxtDateEntrée.Value = .Cells(I, 7)

End With

End Sub

Et voici quand je le valide après modification ponctuelle :

Private Sub CmdValider_Click()
Dim Rng As Range
Dim I As Integer

'Controle des données saisies
If TxtPrénom = "" Or TxtNom = "" Or IsNull(LstServices) Or IsNull(LstPostes) Then
MsgBox "Contrôlez les champs de saisie", vbExclamation, strAppName
TxtNom.SetFocus
Exit Sub
End If
With ThisWorkbook.Worksheets("Employés")
'Ajout de l'employé sur la première ligne vide
If BNouveau Then
Set Rng = .Range("A3").CurrentRegion
I = Rng.Rows.Count + 1
Else
'Modification de l'employé selectionné
I = LstEmployés.ListIndex + 2
End If
.Cells(I, 1) = MenuEmployés.TxtNom
.Cells(I, 2) = MenuEmployés.TxtPrénom
.Cells(I, 3) = MenuEmployés.LstServices
.Cells(I, 4) = MenuEmployés.LstPostes
.Cells(I, 5) = MenuEmployés.LstTypeContrat
.Cells(I, 6) = MenuEmployés.LstTypeEmploi
.Cells(I, 7) = CDate(MenuEmployés.TxtDateEntrée)
End With

End Sub
 
T

ThierryR

Guest
Voila le document.

Quand tu selectionne un salarié :

- Il existe un problème sur les éléments que le userform prend pour poste et contrat,
- Quand on modifie seulement la date d'entrée, il doit réinscrire chaque élément. Il le fait partiellement en laissant deux case vides ou non remplies.

Merci pour ceux qui se pencheront sur le problème.
Je me tiens disponible pour toute question

A plus

ThierryR
 

Pièces jointes

  • SuiviMasseSalariale.zip
    24.4 KB · Affichages: 35
Z

Zon

Guest
Re,

Le probléme vient de la saisie par exemple tu as Directeur Adjoint dans ta feuille Données et Directeur adjoint dans Employés c'est pas pareil tu peux passer en majascules avec UCASE pour ne pas respecter la casse.

Ensuite les contrats pourquoi remettre
MenuEmployés.LstTypeContrat = .Cells(I, 5)
aprés l'avoir sélectionner ?

A+++
 
T

ThierryR

Guest
J'ai fait la modification pour Directeur adjoint et cela résoud le premier point.
J'ai remis MenuEmployés.LstTypeContrat = .Cells(I, 5) pour essayer de remédier au point 2 : cela n'a eu aucune incidence pour la résolution du problème de retranscription du problème. Je n'ai pas pensé à le supprimer ensuite.

ThierryR
 
Z

Zon

Guest
Re,

Je préfère travailler avec un Tableau VBA
en haut du module
Dim T


rajoutes ceci dans l'initialise


With Feuil1
T = Range(.[A2], .[G65536].End(xlUp)(1)).Value
End With

Private Sub LstEmployés_Click()
Dim I As Integer
Dim J As Integer

'Affichage de l'employé selectionné
BNouveau = False
I = LstEmployés.ListIndex + 1

TxtNom = T(I, 1)
TxtPrénom = T(I, 2)
LstPostes = T(I, 4)
LstServices = T(I, 3)
LstTypeContrat = T(I, 5)
LstTypeEmploi = T(I, 6)
CalendrierEntrée.Value = T(I, 7)
TxtDateEntrée.Value = T(I, 7)
End Sub



A+++
 

Discussions similaires

Réponses
11
Affichages
361

Membres actuellement en ligne

Statistiques des forums

Discussions
312 571
Messages
2 089 808
Membres
104 278
dernier inscrit
LENZY