Besoin d'aide VBA Excel / UserForm

Résolu
Sweetclau Messages postés 7 Date d'inscription   Statut Membre Dernière intervention   -  
 Sweetclau -
Bonjour à vous,

J'en suis à mes tout débuts en VBA (soyez indulgents svp hihi), je dois remettre un travail pour l'école et je ne sais pas trop comment m'y prendre. Je vous explique:

J'ai choisi de créer un UserForm intitulé Dossier employé dans lequel on entre les informations des nouveaux employés. Mis à part les informations de base (nom, prénom, numéro d'employé, adresse, etc.) on doit entrer la date d'embauche et dans une autre case, j'aimerais que se calcule l'ancienneté de l'employé. Quel serait mon code pour calculer ça? Par la suite, j'aimerais que les informations entrées dans mon UserForm apparaissent ensuite dans des cellules bien précises dans ma feuille Excel, car j'aimerais pouvoir l'imprimer. Comment m'y prendre?

Aussi, sur une autre feuille Excel dans le même fichier, j'aimerais que certaines informations apparaissent dans des cellules précises pour former une liste d'ancienneté. Donc, chaque fois qu'un nouvel employé serait inscrit, son nom irait s'ajouter dans la liste d'ancienneté à la suite des autres. Il faudrait que l'ancienneté soit toujours à jour.

J'aurais aimé vous joindre le début de mon travail. J'ai essayé des choses, peut-être que j'ai mal débuté le tout... :)

Merci à l'avance!
A voir également:

3 réponses

Sweetclau Messages postés 7 Date d'inscription   Statut Membre Dernière intervention  
 
Voici mon code. Je suis consciente que j'ai probablement fait plusieurs erreurs...

Private Sub CmdFermer_Click()
'Programme créé par Claudia Mathieu
'Programme créé le 19 décembre 2017
'Programme modifié le 19 décembre 2017
'Bouton qui sert à fermer le formulaire et à inscrire les informations saisies dans la feuille Dossier employé

'Déclaration des variables
Dim Titre As String
Dim Prenom As String
Dim Nom As String
Dim NoEmploye As Integer
Dim DateNaissance As Date
Dim NAS As String
Dim Adresse As String
Dim Ville As String
Dim CodePostal As String
Dim Telephone As String
Dim Courriel As String
Dim DateEmbauche As Date
Dim Anciennete As Long


'Attribution des variables
Anciennete = DateDiff("y", Date, txtDateEmbauche)
Titre = CmbTitre.Value
Nom = TxtNom.Value
Prenom = TxtPrenom.Value
NoEmploye = TxtNoEmploye.Value
DateNaissance = TxtDateNaissance.Value
NAS = TxtNAS.Value
Adresse = TxtAdresse.Value
Ville = TxtVille.Value
CodePostal = TxtCodePostal.Value
Telephone = TxtTelephone.Value
Courriel = txtCourriel.Value
DateEmbauche = txtDateEmbauche.Value


'Insérer les valeurs des variables dans une cellule précise
Range("B3").Value = frmDossierEmploye.CmbTitre
Range("D3").Value = frmDossierEmploye.TxtNom
Range("F3").Value = frmDossierEmploye.TxtPrenom
Range("B4").Value = frmDossierEmploye.TxtNoEmploye
Range("D4").Value = frmDossierEmploye.TxtDateNaissance
Range("F4").Value = frmDossierEmploye.TxtNAS
Range("B5").Value = frmDossierEmploye.TxtAdresse
Range("D5").Value = frmDossierEmploye.TxtVille
Range("F5").Value = frmDossierEmploye.TxtCodePostal
Range("B6").Value = frmDossierEmploye.TxtTelephone
Range("D6").Value = frmDossierEmploye.txtCourriel
Range("B7").Value = frmDossierEmploye.txtDateEmbauche
Range("D7").Value = frmDossierEmploye.txtAnciennete



End Sub

Private Sub UserForm_Initialize()

'Programme créé par Claudia Mathieu
'Programme créé le 5 décembre 2017
'Programme modifié le 5 décembre 2017
'Programme qui sert à choisir par une zone de liste le titre de l'employé

CmbTitre.AddItem "Monsieur"
CmbTitre.AddItem "Madame"

End Sub
0
thev Messages postés 1985 Date d'inscription   Statut Membre Dernière intervention   713
 
Bonjour,

ceci serait mieux
Anciennete = DateDiff("yyyy", txtDateEmbauche, Date) 

0
Sweetclau
 
Merci! Pourquoi ma date ne s'affiche pas dans la cellule demandée? Toutes les autres informations s'affichent, mais pas celle-ci.
0
Kalissi Messages postés 218 Date d'inscription   Statut Membre Dernière intervention   20
 
Bonjour,

Tu peux aussi te créer un fonction personnalisé que tu place dans un module :

Public Function Anciennete(ByVal Cible As Range) As Date

    Application.Volatile

    Anciennete = DateDiff("yyyy", Cible.Value, Date)

End Function


Ainsi, au lieu d'affecter la cellule :
Range("D7").Value = frmDossierEmploye.txtAnciennete

Tu y place la fonction :

=Anciennete(B7)

L'instruction Application.Volatile permet une mise à jour instantanée.
Dès que B7 est modifié, D7 est mis à jour.

K
0