Amélioration condition de calcul

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

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

  1. cedric0715 Messages postés 265 Statut Membre
     
    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
    0
    1. cedric0715 Messages postés 265 Statut Membre
       
      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
      0