Amélioration condition de calcul
cedric0715
Messages postés
265
Statut
Membre
-
cedric0715 Messages postés 265 Statut Membre -
cedric0715 Messages postés 265 Statut Membre -
Bonjour*
le tableau recap est rempli via mon userformpri cela fonctionnement
mais j'aimerais rajouter une condition
si dans le tableau sur le même équipement exemple en 2016 note est B et quelle passe A en 2017 et que la case "changement equipement"checkbox1" est pas cocher lors de la validation un message dis "c'est pas possible car l’année dernière la note était inférieur"et cela revient sur l'userform
merci de votre aide
le tableau recap est rempli via mon userformpri cela fonctionnement
mais j'aimerais rajouter une condition
si dans le tableau sur le même équipement exemple en 2016 note est B et quelle passe A en 2017 et que la case "changement equipement"checkbox1" est pas cocher lors de la validation un message dis "c'est pas possible car l’année dernière la note était inférieur"et cela revient sur l'userform
enregistrement et protection blocage des donnees'
Private Sub CommandButton1_Click()
Dim l_info As Integer
Dim note_1 As String, note_2 As String, lanote As String
Dim Ws As Worksheet
'protection feuille
Dim cell As Range
Dim pl As Range
Worksheets("TABLEAU RECAP").Visible = True
Worksheets("TABLEAU RECAP").Unprotect ("cedric")
Sheets("TABLEAU RECAP").Cells.Locked = True
For Each cell In Sheets("TABLEAU RECAP").Range("M2")
If cell.MergeCells = True Then
Set pl = cell.MergeArea
cell.UnMerge
cell.Locked = False
pl.Merge
Else
cell.Locked = False
End If
Next cell
Worksheets("TABLEAU RECAP").Protect ("cedric"), DrawingObjects:=True, Contents:=True, Scenarios:=True, UserInterfaceOnly:=True
With ThisWorkbook.Worksheets("TABLEAU RECAP")
l_info = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
.Range("B" & l_info).Value = ComEQUI 'libelle equipement'
.Range("c" & l_info).Value = Textlocal 'code local"
.Range("D" & l_info).Value = ComRESP 'Nom du responsable'
.Range("E" & l_info).Value = CDate(TextDATEAM) 'date du constat'
.Range("F" & l_info).Value = CDate(TextMISE) 'date de mise en service'
.Range("G" & l_info).Value = CInt(TextDUREVIE.Value) 'Duree de vie theorique'
.Range("H" & l_info).Value = CDate(TextREMPL) 'Date theorique de remplacement '
.Range("I" & l_info).Value = CInt(TextDURVIERESI.Value) 'Duree de vie residuelle '
.Range("J" & l_info).Value = TextESTIMREMPL 'Duree de vie residuelle '
.Range("K" & l_info).Value = CInt(TextRESUETAT.Value) 'note de etat equipement'
.Range("l" & l_info).Value = CInt(TextRESUCRIT.Value) 'note de criticite equipement'
If CheckBox1.Value Then
'cas case cochee
.Range("p" & l_info).Value = "x"
.Range("q" & l_info).Value = CDate(Textboxdatechange) 'date de remplacement équipement
Else
'cas case non cochee
'rien ?
End If
With .Range("M" & l_info)
'formulation
.FormulaR1C1 = "=IF(RC[-2]<=21,""Mauvais"",IF(RC[-2]<=43,""Usuel"",IF(RC[-2]<=64,""Bon"")))"
'équivaut à un collage spécial valeur
.Value = .Value
note_1 = .Value
End With
With .Range("N" & l_info)
'formulation
.FormulaR1C1 = "=IF(RC[-2]<=21,""Faible"",IF(RC[-2]<=43,""Moyenne"",IF(RC[-2]<=64,""Forte"")))"
'équivaut à un collage spécial valeur
.Value = .Value
note_2 = .Value
End With
Select Case True
Case note_1 = "Mauvais" And note_2 = "Faible"
lanote = "B"
Case note_1 = "Mauvais" And note_2 = "Moyenne"
lanote = "C"
Case note_1 = "Mauvais" And note_2 = "Forte"
lanote = "C"
Case note_1 = "Usuel" And note_2 = "Faible"
lanote = "A"
Case note_1 = "Usuel" And note_2 = "Moyenne"
lanote = "B"
Case note_1 = "Usuel" And note_2 = "Forte"
lanote = "B"
Case note_1 = "Bon" And note_2 = "Faible"
lanote = "A"
Case note_1 = "Bon" And note_2 = "Moyenne"
lanote = "A"
Case note_1 = "Bon" And note_2 = "Forte"
lanote = "A"
End Select
.Range("O" & l_info).Value = lanote
Set Ws = ThisWorkbook.Worksheets("Donné équipement")
l_info = Ws.Cells.Find(ComEQUI.Value, , , xlWhole).Row
Ws.Range("G" & l_info).Value = lanote
End With
Me.hide
Unload UserFormpri
End Sub
merci de votre aide
1 réponse
-
j'ai rajouté cette parti du code mais cela inscrit quand même ma ligne dans mon tableau
moi je ne veux pas je veux revenir a mon userform et qu'il reprenne leur erreur.
If .Range("O" & l_info).Value <> lanote And CheckBox1.Value = False Then
Msgbox("Note différente de l'année dernière")
Else
...
End if-
j'ai changer mon code complètement mais cela change rien
Private Sub CommandButton1_Click()
Dim l_info As Integer
Dim l As Integer
Dim note_1 As String, note_2 As String, lanote As String
Dim ws As Worksheet
Dim ds As Worksheet
'protection feuille
Dim cell As Range
Dim pl As Range
Worksheets("TABLEAU RECAP").Visible = True
Worksheets("TABLEAU RECAP").Unprotect ("cedric")
Sheets("TABLEAU RECAP").Cells.Locked = True
For Each cell In Sheets("TABLEAU RECAP").Range("M2")
If cell.MergeCells = True Then
Set pl = cell.MergeArea
cell.UnMerge
cell.Locked = False
pl.Merge
Else
cell.Locked = False
End If
Next cell
Worksheets("TABLEAU RECAP").Protect ("cedric"), DrawingObjects:=True, Contents:=True, Scenarios:=True, UserInterfaceOnly:=True
With ThisWorkbook.Worksheets("TABLEAU RECAP")
l_info = .Cells(.Rows.Count, 2).End(xlUp).Row + 1
.Range("B" & l_info).Value = ComEQUI 'libelle equipement'
.Range("c" & l_info).Value = Textlocal 'code local"
.Range("D" & l_info).Value = ComRESP 'Nom du responsable'
.Range("E" & l_info).Value = CDate(TextDATEAM) 'date du constat'
.Range("F" & l_info).Value = CDate(TextMISE) 'date de mise en service'
.Range("G" & l_info).Value = CInt(TextDUREVIE.Value) 'Duree de vie theorique'
.Range("H" & l_info).Value = CDate(TextREMPL) 'Date theorique de remplacement '
.Range("I" & l_info).Value = CInt(TextDURVIERESI.Value) 'Duree de vie residuelle '
.Range("J" & l_info).Value = TextESTIMREMPL 'Duree de vie residuelle '
.Range("K" & l_info).Value = CInt(TextRESUETAT.Value) 'note de etat equipement'
.Range("l" & l_info).Value = CInt(TextRESUCRIT.Value) 'note de criticite equipement'
If CheckBox1.Value Then
'cas case cochee
.Range("p" & l_info).Value = "x"
.Range("q" & l_info).Value = CDate(Textboxdatechange) 'date de remplacement équipement
MsgBox ("attention imformer au equipe gmao le changement de l'equipement")
Else
'cas case non cochee
'rien ?
End If
If UserFormpri.CheckBox1.Value = True Then
UserForm2.TextBox6.Value = Me.ComEQUI.Value 'colle valeur équipement dans le texbox de l'uesrform2 et l'appeler
UserForm2.Show
Else
'rien
End If
With .Range("M" & l_info)
'formulation
.FormulaR1C1 = "=IF(RC[-2]<=21,""Mauvais"",IF(RC[-2]<=43,""Usuel"",IF(RC[-2]<=64,""Bon"")))"
'équivaut à un collage spécial valeur
.Value = .Value
note_1 = .Value
End With
With .Range("N" & l_info)
'formulation
.FormulaR1C1 = "=IF(RC[-2]<=21,""Faible"",IF(RC[-2]<=43,""Moyenne"",IF(RC[-2]<=64,""Forte"")))"
'équivaut à un collage spécial valeur
.Value = .Value
note_2 = .Value
End With
Select Case True
Case note_1 = "Mauvais" And note_2 = "Faible"
lanote = "B"
Case note_1 = "Mauvais" And note_2 = "Moyenne"
lanote = "C"
Case note_1 = "Mauvais" And note_2 = "Forte"
lanote = "C"
Case note_1 = "Usuel" And note_2 = "Faible"
lanote = "A"
Case note_1 = "Usuel" And note_2 = "Moyenne"
lanote = "B"
Case note_1 = "Usuel" And note_2 = "Forte"
lanote = "B"
Case note_1 = "Bon" And note_2 = "Faible"
lanote = "A"
Case note_1 = "Bon" And note_2 = "Moyenne"
lanote = "A"
Case note_1 = "Bon" And note_2 = "Forte"
lanote = "A"
End Select
.Range("O" & l_info).Value = lanote 'donne de la note dans le tableau recap
'si mon chexbox est cocher et que la note est superieur a l'annee d'avant message et fermeture de userform et sans validation dans le tableau recap
Set ds = ThisWorkbook.Worksheets("Donnée équipement")
l = ds.Cells.Find(ComEQUI.Value, , , xlWhole).Row
ds.Range("G" & l).Value = lanote
Set ws = ThisWorkbook.Worksheets("TABLEAU RECAP")
l_info = ws.Cells.Find(ComEQUI.Value, , , xlWhole).Row
If ws.Range("O" & l_info).Value > lanote And CheckBox1.Value = False Then
If MsgBox("Note différente de l'année dernière", vbOK Or vbCancel) = vbOK Or vbCancel Then
Sheets("TABLEAU RECAP").Range("b" & Sheets("TABLEAU RECAP").Range("b65000").End(xlUp).Row).EntireRow.ClearContents
MsgBox ("Recommencer l'evaluation")
End If
Set ds = ThisWorkbook.Worksheets("Donnée équipement")
l = ds.Cells.Find(ComEQUI.Value, , , xlWhole).Row
If ds.Range("G" & l).Value = lanote = lanote And CheckBox1.Value = False Then
ds.Range("G" & l).Value = lanote
End If
Set ds = ThisWorkbook.Worksheets("Donnée équipement")
l = ds.Cells.Find(ComEQUI.Value, , , xlWhole).Row 'si la note est inferieur a la donne de G "donne equipement" et chexbox pas coché rien faire
If ds.Range("G" & l).Value < lanote And CheckBox1.Value = False Then
End If
Set ds = ThisWorkbook.Worksheets("Donnée équipement")
l = ds.Cells.Find(ComEQUI.Value, , , xlWhole).Row 'si la note est superieur a la donne dans G "donnée equipement" et chexbx coché
If ds.Range("G" & l).Value < lanote And CheckBox1.Value = True Then
ds.Range("G" & l).Value = lanote
End If
End If
End With
Call CreationBouton 'creation du bouton dans le tableau recap
Me.hide
Unload UserFormpri
End Sub
-