Bonjour Tout le Monde,
D’abord toutes mes excuses si je ne poste pas au bon endroit.
Ensuite mon problème : je n’y connais absolument rien en VBA ou Macros, ça fait presque 15 jours que je cherche et je n’ai pas trouvé de solutions à mon problème. Alors si une bonne âme voulait bien m’aider…
J’ai un fichier excel qui comporte plusieurs feuilles, l’une d’elles s’appelle Bénéficiaires (une base de données) et se remplie grâce à un Userform appelé : frm.Bénéficiaires.
Dans la feuille Exel Bénéficiaires j’ai rajouté des colonnes pour les dates de location, leur durée et les km.

Les entêtes de ce tableau (base de données) commencent en B6.
Pour les Dates de Contrats :
Début : Colonne E (dc E7)
Fin : Colonne F (dc F7)
Durée : Colonne G (dc G7)

Pour le kilométrage :
Nb de Km (Dom/Trav) : Colonne J (dc J7)
Aller/Retour : Colonne K (dc K7)
Km Parcourus : Colonne L (dc L7)

Maintenant pour le Userform :
Bénéficiaire5 = Début
Bénéficiaire6= Fin
Bénéficiaire7 = Durée
Bénéficiaire10 = Nb de Km
Bénéficiaire11 = Nb de Km Aller/Retour
Bénéficiaire12 = Nb de Km Parcourus

Voici le code VBA pour la saisie et la validation de ce userform (je précise, ce n’est pas moi qui l’ai fait, lol) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
Private Sub cmdAjouterBénéficiaire_Click()
    Dim X As Integer
    Dim nextrow As Range
 
On Error GoTo cmdAjouterBénéficiaire_Click_Error
 
Set nextrow = Feuil4.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
    For X = 1 To 49
        If Me.Controls("Bénéficiaire" & X).Value = "" Then
            MsgBox "Veuillez saisir toutes les données"
            Exit Sub
        End If
    Next
 
    If WorksheetFunction.CountIf(Feuil4.Range("A:A"), Me.Bénéficiaire18.Value) > 0 Then
        MsgBox "Ce bénéficiaire existe déjà"
        Exit Sub
    End If
 
    For X = 1 To 49
        nextrow = Me.Controls("Bénéficiaire" & X).Value
        Set nextrow = nextrow.Offset(0, 1)
    Next
 
'clear
    For X = 1 To 49
        Me.Controls("Bénéficiaire" & X).Value = ""
    Next
 
On Error GoTo 0
    Exit Sub
cmdAjouterBénéficiaire_Click_Error:
MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure cmdAjouterBénéficiaire_Click of Form frmBénéficiaires"
End Sub
 
Private Sub cmdQuitterBénéficiaire_Click()
Unload Me
End Sub

Ce que j’aimerais, si vous m’avez suivie, c’est rajouter les codes pour les colonnes que j’ai rajoutées. La fonction DateDiff qu’il me calcule automatiquement sur le userform la durée de location dans Bénéficiaire7, et qu’après avoir saisie les km, que VBA me calcule les km A/R dans Bénéficiaire11 (soit Bénéficiaire10 x 2) et dans km parcourus Bénéficiaire12 : Bénéficiaire7 x Bénéficiaire11.

Help please ! J'ai vraiment essayer de comprendre le code mais j'avoue que là, je suis une vraie buse ! Désolée,

Pour finir, j’ai Windows8, Exel 2013.

Merci d’avance,
LO