Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2010 Initialisation userform

bredeche

XLDnaute Occasionnel
Bonjour,
j ai besoin d’aide
j ai une condition if avec message
si ma condition est fausse je voudrais que mon message s'affiche et d' est lors que j'appui sur OK de mon message cela réinitialise mon userform et l'utilisateur doit recommence et biensur les donnée ne rentre pas dans le tableau .

de la manière que je l'ai fais cela mets une erreur

ci dessous mon code merci de votre aide
Code:
'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
MsgBox ("attention imformer au equipe gmao le changement eqipement")
Else
'cas case non cochee
'rien ?
End If

If UserFormpri.CheckBox1.Value = True Then
userform2.Show
Else
'rien
End If

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
       
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
 
Set ws = ThisWorkbook.Worksheets("Donnée équipement")
l_info = ws.Cells.Find(ComEQUI.Value, , , xlWhole).Row  'donnede la note dans le tableau équipement
       ws.Range("G" & l_info).Value = lanote
      
'si mon chexbox est cocher et que la note est superieur a l'annee d'avant message et fermeture de userform et sans validation
      
If .Range("O" & l_info).Value > lanote And CheckBox1.Value = False Then
MsgBox ("Note différente de l'année dernière")

If Reponse = vbOK Then

UserFormpri_Initialize

   UserFormpri.Show
  
End If

End If

End With
      

Me.hide
                              
  
     
Unload UserFormpri

End Sub
 

herve62

XLDnaute Barbatruc
Supporter XLD
Bonjour
Le plus souvent dans ce cas , on ne fait pas un initialize mais une Sub Clear_box soit à la file soit
selon ta nomination par boucle , un exemple:
Code:
Private Sub suiv_Click()
ViderLesChampsSaisies
CheckBox1 = False
Box1.SetFocus
Valid = 0
End Sub

Private Sub ViderLesChampsSaisies()
DTPDateDebut.Caption = "": DTPDateFin.Caption = ""
For j = 2 To 10
If j <> 8 And j <> 9 Then Controls("box" & j).Value = ""
Next j
End Sub
Je saute 8 et 9 à cause des dates
 

bredeche

XLDnaute Occasionnel
bonjour
je suis désolé mais a votre avis que faut il que je rajoute pour revenir a userform et ne pas écrire ma ligne
Code:
If .Range("O" & l_info).Value > lanote And CheckBox1.Value = False Then
MsgBox ("Note différente de l'année dernière")
If Reponse = vbOK Then
et apres cela ne va pas et sa marche pas
merci de votre aide
 

Discussions similaires

Réponses
4
Affichages
420
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…