Aide pour tableau commission
Bonsoir GMB, bonsoir le forum,
GMB, suite à l'embauche d'un salarié, j'ai enfin pu mettre en place le tableau que tu m'a aidé à finaliser comme je voulais.
Ta V6 qui se trouve en pièce jointe.
Cependant je viens de remarquer que le tableau s'agrandit bien tout seul lorsque j'atteint la 13e ligne, par contre la ligne 16 et 17 n'integre pas les lignes des nouveaux chantier inscrit au dela de la ligne 13. Ton code est trop compliqué pour mon cerveau, j'ai tenté de fouiner dedans mais je n'ai fait que des betises.
Pourrais tu m'aide stp?
J'ai aussi remarquer que j'ai absolument besoin que le tableau contienne de janvier 2015 à decembre 2017. actuellement, lorsque je rentre un chantier, il affiche les commissions seulement jusqu'à decembre 2015.
Comment faire pour que tous les mois d'après soit aussi rempli par l'ajout d'un nouveau chantier?
Si je rentre un chantier le 15/01/2016 il me l'inscrit en janvier 2015.
Merci d'avance pour ton aide qui m'est vraiment preciseuse.
Bonjour
Nouvelle version à tester.
A y être, j'ai mis des formules dans la ligne 1 à partir de la cellule i1. Cela te permettra d'ajouter des années ou d'en supprimer.
A noter toutefois que la cellule H1 doit avoir la date du 1er janvier de la 1ère année (ex : 1/01/2015) puisque toutes les autres dates, à sa droite sur la ligne, en dépendent.
Cela te convient-il ?
Bye !
Bonsoir GMB bonsoir tous le monde.
Cette V7 est super par contre, lorsque je rentre un chantier par exemple le 01/01/2015 j'ai besoin que la commission se remplisse jusqu'à dec 2018 et non jusqu'a dec 2015. idem si je rentre un chantier le 05 janvier 2016, j'ai besoin que la comm se remplisse jusqu'à decembre 2018.
Je ne comprend pas beaucoup ton code, il est vachement compliqué. merci de ton aide precieuse GMB
Bonjour GMB bonjour le Forum,
Je viens de tester la V8.
je rencontre les soucis suivants :
Le chantier 16 rue test à était démonté le 01/08/2015, la commission de 0.50 centimes s'inscrit en decembre 2018 et non en aout 2015. et ca m'affiche les commissions en 2016, 2017 et 2018 alors qu'elle devrait s'arreter en aout 2015.
Le chantier 17 rue test à était démonté le 02/02/2016, la commission de 1 euro se met aussi en decembre 2018, et m'efface les commissions des mois de 2015.
En regardant ton tableau tu comprendra + que mois. ce soir je vais fouiner ton code pour le comprendre un peu mieux.
Merci en tous cas de ton aide.
Ptite questions? tu te situe dans quel région de la France?
BOnjour GMB bonjour tous le monde.
Merci pour cette V9 qui me semble parfaite.
Je suis en train de tester des installations chaque mois, et des demontes, pour voir si tout est fonctionnel, pour l'instant c'est nickel, merciiiii beaucoup GBM pour ton aide.
Je vais embaucher un nouveau commercial en janvier 2017. Du coup je vais avoir besoin de lui creer un classeur pour lui, mais qui debutera en 2017. Quel sera la manip à faire pour que le tableau debute en 2017 et non en 2015?
Ptite question : en ligne 14 puis-je effacer les cellules en jaune?
Merci
Il me semble que je t'ai déjà donné la réponse par avance.
En détaillant :
• Tu sélectionnes les colonnes H à S et tu les supprimes : Alt + S
• Tu effaces la cellule de la colonne H qui correspond à la rubrique : ‘’ Commissions versées en fin de mois’’
• Tu saisies en H1 la date du 1er janvier de la nouvelle année du tableau :1/1/2016 par exemple et toutes les autres dates se mettront à jour.
Et si tu veux ajouter une année à la droite du tableau, tu sélectionnes la dernière colonne de décembre et tu tires vers la droite sur 12 colonnes
OK ?
Bye !
Bonjour GMB bonjour le forum,
Ta V9 est parfaite merciiiiiiii infiniment !!!
Bonsoir GMB, bonsoir tous le monde.
Désolé pour cette modif, mais J'ai dû inserer une ligne, car j'ai pas mal de bouton à rajouter en ligne 1.
Je doit remplacer quoi dans ton code? Après cette modif, je n'aurais plus rien à faire. Merci encore.
Option Explicit
Dim ln&, lgn&, i&, j&, rep, cell As Range, flag&, col&, colDem&
Dim dteD As Date, dteF As Date, colD&, colF&
Private Sub CommandButton1_Click() 'Bouton créer un nouveau chantier
If TextBox2 = "" Or TextBox3 = "" Or TextBox4 = "" Or TextBox5 = "" Then
MsgBox "Saisie incomplète.", 16
Exit Sub
End If
lgn = Range("A" & Rows.Count).End(xlUp)(2).Row
'On vérifie les saisies
flag = 0
For i = 2 To 5
Controls("Label" & i).ForeColor = RGB(0, 0, 0)
If Controls("TextBox" & i) = "" Then
flag = 1
Controls("Label" & i).ForeColor = RGB(255, 0, 0)
End If
Next i
If flag = 1 Then
MsgBox "Saisie incomplète.", 16
Exit Sub
End If
'On vérifie si les données saisies ne font pas l'objet d'une ligne dans le tableau
flag = 0
For ln = 2 To lgn
If (TextBox1 = "" Or Range("A" & ln) = TextBox1) _
And Range("B" & ln) = TextBox2 _
And Range("C" & ln) = TextBox3 _
And Range("D" & ln) = TextBox4 * 1 _
And Range("E" & ln) = CDate(TextBox5) Then
flag = 1
Exit For
End If
Next ln
If flag = 1 Then
'Cas où les données saisies existent déjà sur une ligne du tableau
Label8.Visible = True
TextBox1 = Range("A" & ln)
TextBox1.Visible = True
MsgBox "Ce chantier existe déjà." & Chr(13) & Chr(13) & _
"Vous ne pouvez que le modifier.", 16
CommandButton1.Enabled = False
Exit Sub
Else
'Cas où on doit écrire les saisies sur une nouvelle ligne
If lgn = 2 Then
Range("A" & lgn) = 1
Else
If Left(Range("E" & lgn + 2), 6) = "Total " Then
'Cas où le tableau est plein ; on insere une ligne
Rows(lgn & ":" & lgn).Insert shift:=xlDown
Rows(lgn - 1 & ":" & lgn - 1).Copy
Rows(lgn & ":" & lgn).PasteSpecial xlPasteFormats
Application.CutCopyMode = False
End If
Range("A" & lgn) = Range("A" & lgn - 1) + 1
End If
For j = 2 To 3
Cells(lgn, j).Value = Controls("TextBox" & j)
Next j
Cells(lgn, 4).Value = TextBox4 * 1
Cells(lgn, 5).Value = CDate(TextBox5)
If TextBox6 <> "" Then
Cells(lgn, 6).Value = CDate(TextBox6)
Else
Cells(lgn, 6).ClearComments
Cells(lgn, 6).AddComment
Cells(lgn, 6).Comment.Visible = False
Cells(lgn, 6).Comment.Text Text:= _
"Double cliquer ici pour mettre fin au chantier" & Chr(10) & ""
End If
End If
'Primes
Call Primes
MsgBox "Le nouveau chantier a été pris en compte."
Unload nouveauchantier
End Sub
Sub Primes()
dteD = Range("E" & lgn)
flag = 0
For col = 8 To Cells(1, Columns.Count).End(xlToLeft).Column
If Month(Range("E" & lgn)) = Month(Cells(1, col)) _
And Year(Range("E" & lgn)) = Year(Cells(1, col)) Then
flag = 1
Exit For
End If
Next col
If flag = 1 Then
colD = col
Else
MsgBox "La date saisie ne figure pas sur le tableau.", 16
Rows(lgn & ":" & lgn).ClearContents
End
End If
flag = 0
If Range("F" & lgn) <> "" Then
dteF = Range("F" & lgn)
Else
flag = 1
End If
colF = Cells(1, Columns.Count).End(xlToLeft).Column
For col = colD To colF
If col = colF Then
If flag = 0 Then
Cells(lgn, col).FormulaR1C1 = "=RC[" & 4 - col & "]*(MIN(30,DAY(RC[" & 6 - col & "])))*0.05"
Else
Cells(lgn, col).FormulaR1C1 = "=RC[" & 4 - col & "] * 0.05 * 30"
End If
ElseIf col > colD And col < colF Then
Cells(lgn, col).FormulaR1C1 = "=RC[" & 4 - col & "] * 0.05 * 30"
ElseIf col = colD Then
Cells(lgn, col).FormulaR1C1 = "=RC[" & 4 - col & "]*(30 - DAY(RC[" & 5 - col & "]))*0.05"
End If
Next col
End Sub
Private Sub CommandButton2_Click() 'Bouton Fermer
Unload Me
End Sub
Private Sub CommandButton3_Click() 'Bouton Modifier le chantier
Label1.Caption = Chr(13) & "Modifier un chantier"
Label8.Visible = True
TextBox1.Visible = True
CommandButton1.Enabled = False
If TextBox1 = "" Then
If TextBox2 = "" Or TextBox3 = "" Or TextBox4 = "" Or TextBox5 = "" Then
MsgBox "Saisie incomplète." & Chr(13) & _
"Vous devez saisir le n° du chantier ou tous les autres champs.", 16
Exit Sub
End If
End If
Set cell = Range("A:A").Find(TextBox1, lookat:=xlWhole)
If Not cell Is Nothing Then
ln = cell.Row
For j = 2 To 3
Cells(ln, j).Value = Controls("TextBox" & j)
Controls("TextBox" & j) = ""
Next j
Cells(ln, 4).Value = Controls("TextBox" & 4) * 1
Controls("TextBox" & 4) = ""
Cells(ln, 5).Value = CDate(Controls("TextBox" & 5))
Controls("TextBox" & 5) = ""
If TextBox6 <> "" Then
Cells(ln, 6).Value = CDate(Controls("TextBox" & 6))
Controls("TextBox" & 6) = ""
End If
TextBox1 = ""
TextBox1.Visible = False
Label8.Visible = False
Range("H" & ln & ":S" & ln).ClearContents
lgn = ln
Call Primes
MsgBox "Les données du chantier " & Range("A" & ln) & " ont été modifiées."
Unload nouveauchantier
Else
End If
End Sub
Private Sub CommandButton4_Click() 'Bouton Demonte Chantier
'On regarde s'il existe un chantier défini par les 4 1ers TextBox
If TextBox2 <> "" And TextBox2 <> "" And TextBox3 <> "" And TextBox4 <> "" Then
flag = 0
For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
If Range("B" & i) = TextBox2 And Range("C" & i) = TextBox3 _
And CStr(Range("D" & i)) = TextBox4 And Range("E" & i) = CDate(TextBox5) Then
Label8.Visible = True
TextBox1.Visible = True
TextBox1 = Range("A" & i)
flag = 1
End If
Next i
If flag = 0 And TextBox1 = "" Then
MsgBox "Ce chantier n'est pas installé.", 16
Exit Sub
End If
End If
If TextBox6.Visible = False Then
Label6.Visible = True
Label7.Visible = True
Label8.Visible = True
TextBox1.Visible = True
TextBox6.Visible = True
CommandButton1.Enabled = False
CommandButton3.Enabled = False
Else
If TextBox6 = "" Then
Label6.Visible = False
Label7.Visible = False
TextBox6.Visible = False
CommandButton1.Enabled = True
CommandButton3.Enabled = True
Else
Range("F" & lgn) = CDate(TextBox6)
MsgBox "La dépose du chantier a été prise en compte"
Call Primes
For j = 8 To Cells(1, Columns.Count).End(xlToLeft).Column
If Cells(1, j) = DateSerial(Year(CDate(TextBox6)), Month(CDate(TextBox6)), 1) Then
Exit For
End If
Next j
Range(Cells(lgn, j + 1), Cells(lgn, Cells(1, Columns.Count).End(xlToLeft).Column)).ClearContents
'On prorate la prime du jour de dépose
Cells(lgn, j).FormulaR1C1 = "=RC4*(30 - DAY(RC6))*0.05"
Unload nouveauchantier
nouveauchantier.Show
End If
End If
End Sub
Private Sub TextBox1_Change()
Set cell = Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row).Find(TextBox1)
If Not cell Is Nothing Then
lgn = cell.Row
For i = 2 To 6
Controls("TextBox" & i) = Cells(lgn, i)
Next i
Exit Sub
ElseIf TextBox1 <> "" Then
MsgBox "Il n'y a pas de chantier qui porte ce numéro.", 16
Exit Sub
End If
End Sub
Private Sub TextBox2_Change()
TextBox2 = UCase(TextBox2)
End Sub
Private Sub TextBox6_Change()
CommandButton4.Enabled = True
End Sub
Private Sub UserForm_Initialize()
Label6.Visible = False
Label7.Visible = False
TextBox6.Visible = False
CommandButton4.Enabled = False
End Sub