Besoin d'aide VBA Excel / UserForm

Résolu/Fermé
Sweetclau Messages postés 7 Date d'inscription mercredi 20 décembre 2017 Statut Membre Dernière intervention 17 janvier 2018 - 20 déc. 2017 à 04:27
 Sweetclau - 24 déc. 2017 à 02:07
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 mercredi 20 décembre 2017 Statut Membre Dernière intervention 17 janvier 2018
20 déc. 2017 à 06:25
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 1851 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 15 avril 2024 681
20 déc. 2017 à 12:39
Bonjour,

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

0
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 jeudi 2 mai 2013 Statut Membre Dernière intervention 15 juillet 2019 20
20 déc. 2017 à 16:16
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