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!

3 réponses

  1. 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
  2. thev Messages postés 2005 Date d'inscription   Statut Membre Dernière intervention   721
     
    Bonjour,

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

    0
    1. 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
  3. Kalissi Messages postés 221 Statut Membre 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