Probleme inscription valeur dans deux tableu diferent

cedric0715 Messages postés 265 Statut Membre -  
yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

j ai un problème dans l'inscription de mon résultat , des lors que ma note est supérieur a l’année précédente et que mon checkbox n'est pas cocher cela supprime bien ma ligne dans mon tableau Recap mais cela change ma note "tableau donne équipement "ce que je ne veux pas " et je n arrive pas du tout a résoudre mon problème
je ne vois pas ou est mon erreur
merci de votre aide
j ai 3 conditions voir le code ci dessous de plus je mets le fichiers
https://mon-partage.fr/f/Os7FQmZp/

je souhaite a toutes et tous sur le forum de passe de bonne fête
encore merci a tous de nous aidez

'enregistrement et protection blocage des donnees'

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'
.Range("t" & l_info).Value = "cliquer pour validation"

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 chexbox coché message et inscription de la nouvelle note
If ds.Range("G" & L).Value < lanote And CheckBox1.Value = True Then
ds.Range("G" & L).Value = lanote

End If

End If

End With

Me.hide

Unload UserFormpri

End Sub

'saisie des options'

Private Sub OptionButton1_Change()
Call note_etat
End Sub
Private Sub OptionButton2_Change()
Call note_etat
End Sub
Private Sub OptionButton3_Change()
Call note_etat
End Sub
Private Sub OptionButton4_Change()
Call note_etat
End Sub
Private Sub OptionButton5_Change()
Call note_etat
End Sub
Private Sub OptionButton6_Change()
Call note_etat
End Sub
Private Sub OptionButton7_Change()
Call note_etat
End Sub
Private Sub OptionButton8_Change()
Call note_etat
End Sub
Private Sub OptionButton9_Change()
Call note_etat
End Sub
Private Sub OptionButton10_Change()
Call note_etat
End Sub
Private Sub OptionButton11_Change()
Call note_etat
End Sub
Private Sub OptionButton12_Change()
Call note_etat
End Sub
Private Sub OptionButton13_Change()
Call note_crit
End Sub
Private Sub OptionButton14_Change()
Call note_crit
End Sub
Private Sub OptionButton15_Change()
Call note_crit
End Sub
Private Sub OptionButton16_Change()
Call note_crit
End Sub
Private Sub OptionButton17_Change()
Call note_crit
End Sub
Private Sub OptionButton18_Change()
Call note_crit
End Sub
Private Sub OptionButton19_Change()
Call note_crit
End Sub
Private Sub OptionButton20_Change()
Call note_crit
End Sub
Private Sub OptionButton21_Change()
Call note_crit
End Sub
Private Sub OptionButton22_Change()
Call note_crit
End Sub
Private Sub OptionButton23_Change()
Call note_crit
End Sub
Private Sub OptionButton24_Change()
Call note_crit
End Sub
'calcul des notes'
Private Sub note_etat()
Dim i As Integer, etat1 As Integer, etat2 As Integer, etat3 As Integer

i = 0
etat1 = 0
While i <= 3
etat1 = etat1 - (i + 1) * CInt(Frame2.Controls(i).Value)
i = i + 1
Wend
i = 0
etat2 = 0
While i <= 3
etat2 = etat2 - (i + 1) * CInt(Frame3.Controls(i).Value)
i = i + 1
Wend
i = 0
etat3 = 0
While i <= 3
etat3 = etat3 - (i + 1) * CInt(Frame4.Controls(i).Value)
i = i + 1
Wend
TextRESUETAT = etat1 * etat2 * etat3
End Sub

Private Sub note_crit()
Dim i As Integer, crit1 As Integer, crit2 As Integer, crit3 As Integer

i = 0
crit1 = 0
While i <= 3
crit1 = crit1 - (i + 1) * CInt(Frame6.Controls(i).Value)
i = i + 1
Wend
i = 0
crit2 = 0
While i <= 3
crit2 = crit2 - (i + 1) * CInt(Frame7.Controls(i).Value)
i = i + 1
Wend
i = 0
crit3 = 0
While i <= 3
crit3 = crit3 - (i + 1) * CInt(Frame8.Controls(i).Value)
i = i + 1
Wend
TextRESUCRIT = crit1 * crit2 * crit3
End Sub


2 réponses

  1. cedric0715 Messages postés 265 Statut Membre
     
    j ai modifier mon code pour les éléments qui irons dans le tableau donné équipement
    mais cela ne marche toujours pas (ci dessous mon code)


    Set ws = ThisWorkbook.Worksheets("TABLEAU RECAP")
    l_info = ws.Cells.Find(ComEQUI.Value, , , xlWhole).Row
    If ws.Range("O" & l_info).Value = "" Then 'donne de la note dans le tableau recap
    ws.Range("o" & l_info).Value = lanote
    ElseIf ws.Range("O" & l_info).Value > lanote And CheckBox1.Value = False Then
    If MsgBox("Note différente de l'année dernière", vbOK) = vbOK 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

    ElseIf ds.Range("G" & L).Value < lanote And CheckBox1.Value = False Then 'si la note est inferieur a la donne de G "donne equipement" et chexbox pas coché rien faire

    ElseIf ds.Range("G" & L).Value > lanote And CheckBox1.Value = True Then 'si la note est superieur a la donne dans G "donnée equipement" et chexbox coché message et inscription de la nouvelle note
    ds.Range("G" & L).Value = lanote

    Else
    ds.Range("G" & L).Value = lanote
    End If

    End If


    aidez moi merci par avance
    0
  2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    Voilà, j'ai ouvert ton fichier.
    Merci d'expliquer ce que je dois faire pour exécuter ton programme, et ce qui ne te conviens pas dans le comportement de ton programme.
    0
    1. cedric0715 Messages postés 265 Statut Membre
       
      les étapes sont les suivante

      "tableau recap"
      cliker sur nouvelle evaluation , un userform s 'ouvre

      attention je n'ai pas encore mis en griser le bouton valider des lors que les champs obligatoire doivent être rempli.

      1- choisir un équipement "des tex box se rempli en fonction des "donnée équipement "
      2- noter l’équipement a faisant un choix avec les option buttons
      3- les deux note donne un lettre A, B OU C lors de la validation
      4 mettre la date de l’évaluation
      5- choisir la personne qui fait évaluation puis valider

      mon probleme se situ la sous 4 conditions
      exemple cta n°1

      1ere condition la note est A en 2016 après validation les donné vont dans le tableau recap et la lettre va aussi dans la donne équipement en colonne G en face de celui ci .

      2emecondition la note est A ,B ou C en 2017 après validation les donné vont dans le tableau recap et la letre va aussi dans la donne équipement en colonne G en face de celui ci .

      3 eme condition si la note est B ou C a la première évaluation et que la 2 eme année elle est A et que dans l'userfom la case équipement change n est pas coche cela appel un message box efface la ligne (cela sa marche) mais la note dans donnée équipement ne doit pas changé et cela ne marche pas

      4 eme condition si la note est B ou C a la première évaluation et que la 2 eme année elle est A et que dans l'userfom la case équipement changé est coche il faut remplir la date cela appel un message box puis un userform pour remplir le nouveaux modèle d’Équipement et donc après validation les éléments sont remplis dans le tableau recap change la note dans la donne équipement en colonne G
      ET après il y a un circuit de c validation qui se fait dans le tableau recap

      j espère que tu a compris
      merci encore de ton aide
      cordialement
      0
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      Si je comprends bien, les lignes 135 à 137 font la mise à jour de la colonne G de Donnée équipement:
      Set ds = ThisWorkbook.Worksheets("Donnée équipement")
       L = ds.Cells.Find(ComEQUI.Value, , , xlWhole).Row
       ds.Range("G" & L).Value = lanote
      Ces trois lignes sont exécutées de façon inconditionnelle (elles ne sont pas dans un
      if
      ): est-ce bien ce que tu veux?
      Quelques remarques:
      - l'indentation de ton code est insuffisante, cela le rend peu lisible (pour toi comme pour moi)
      - tu n'as pas mis l'option "explicit"
      - en ligne 159, tu as un
      if
      sans instruction
      - en ligne 150, tu as
      If ds.Range("G" & L).Value = lanote = lanote
      , je pense que le deuxième
       = lanote
      est superflu
      0
    3. cedric0715
       
      bonsoir

      désoler de la réponse tardive
      toute d abord tous mes vœux que cette année 2017 vous apporte santé et prospérité a vous et vos proche

      pour ce qui est du code
      faite comme vous le voyez car moi cela fais déjà 3 a 4 semaine que je suis dessus et je n'y arrive pas
      toute aide est bon a prendre
      merci par avance
      0
    4. cedric0715 Messages postés 265 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      bonjour
      a tu pu m'aider sur le sujet
      merci par avance
      0