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

XL 2016 Remise à zéro du formulaire

Sparfell29

XLDnaute Nouveau
Bonjour à tous,
Je rencontre actuellement un problème avec ma fonction RAZ fonctionnant très bien sur mon autre formulaire. Je n'arrive pas du tout à l'adapter pour qu'elle convienne à mon formulaire actuel et je rencontre plein d'erreurs.
De base j'ai ça dans mon autre formulaire et cette fonction intervient dans mes boutons "Validation" pour vider le formulaire après avoir poussé les données dans le tableau et dans mon bouton "Ajout" vierge" pour vider le formulaire et démarrer la saisie d'un nouveau produit dans ma dernière ligne non occupée de tableau.
VB:
'remise à zéro du formulaire
Sub raz()
  For i = 2 To 7
     Me("TextBox" & i) = ""
  Next i
  For s = 1 To 8
    Me("Service" & s) = ""
    Me("accord" & s) = ""
    Me("visa" & s) = ""
  Next s
End Sub

Sauf que quand j'essaye de l'adapter à mon nouveau formulaire
VB:
'remise à zéro du formulaire
Sub raz()
  For i = 2 To 24
     Me("TextBox" & i) = ""
  Next i
  For s = 1 To 4
    Me("Risque" & s) = ""
    Me("Date" & s) = ""
    Me("Visa" & s) = ""
    Me("Com" & s) = ""
  Next s
End Sub

Et bien ca ne fonctionne pas. J'ai essayé en utilisant "Unload Me" et ça fonctionne uniquement pour le bouton "Validation" j'ai une erreur de Range Global Object pour le bouton "Ajout vierge".

Ci-joint mon fichier de travail. Je ne comprends pas ce que je fais de mal dans le passage d'un formulaire à l'autre j'ai pourtant l'impression de bien respecter la syntaxe . Voila l'ensemble de mon code pour ceux ne voulant pas télécharger les PJ sur les forums :
Code:
Option Compare Text
Dim nomtableau


'Initialisation du formulaire
Private Sub UserForm_Initialize()
nomtableau = "produit"
  Me.enreg = Range(nomtableau).Rows.Count + 1
  Me.Id = Application.Max(Range(nomtableau).Columns(1)) + 1
  Tbl = Range(nomtableau).Value
  Tri Tbl, LBound(Tbl), UBound(Tbl), 1
  Me.Recherche.List = Tbl
    
' remplissage des combobox avec le contenu des listes
     With Me
     .Criticité.List = [Tableau3].Value
      .Prodstrat.List = [Tableau4].Value
        .Detectionstep.List = [Tableau5].Value
          .Actionim.List = [Tableau6].Value
           .Retraitement.List = [Tableau7].Value
            .Risque1.List = [Tableau8].Value
             .Risque2.List = [Tableau8].Value
              .Risque3.List = [Tableau8].Value
               .Risque4.List = [Tableau8].Value
      End With
      
  ' déprotection de la feuille "Produits" à éditer
  Sheets("Produits").Unprotect Password:="iknowvba"
End Sub
' Apparition de nouveaux champs si "autre" est sélectionné
Private Sub Retraitement_Change()
TextBox18.Visible = Retraitement.ListIndex > 1
TextBox19.Visible = Retraitement.ListIndex > 1
TextBox20.Visible = Retraitement.ListIndex > 1
Label39.Visible = Retraitement.ListIndex > 1
Label40.Visible = Retraitement.ListIndex > 1
Label41.Visible = Retraitement.ListIndex > 1

End Sub
' Menu déroulant pour recherche produit
Private Sub Recherche_Change()
  Me.enreg = Application.Match(Val(Me.Recherche), Range(nomtableau).Columns(1), 0)
  Me.Id = Me.Recherche
  For i = 2 To 3
    Me("TextBox" & i) = Range(nomtableau).Item(enreg, i)
  Next i
 
  Me.Textbox4 = Range(nomtableau).Item(enreg, 5)
  Me.Textbox5 = Range(nomtableau).Item(enreg, 6)
  Me.Textbox6 = Range(nomtableau).Item(enreg, 7)
  Me.Textbox7 = Range(nomtableau).Item(enreg, 8)
  Me.TextBox8 = Range(nomtableau).Item(enreg, 9)
  Me.TextBox9 = Range(nomtableau).Item(enreg, 10)
  Me.TextBox10 = Range(nomtableau).Item(enreg, 11)
  Me.TextBox11 = Range(nomtableau).Item(enreg, 4)
 
   '--- services
   For s = 1 To 4
    Me("Risque" & s) = Range(nomtableau).Item(enreg, 24 + (s - 1) * 3)
    Me("Date" & s) = Range(nomtableau).Item(enreg, 25 + (s - 1) * 3)
    Me("Visa" & s) = Range(nomtableau).Item(enreg, 26 + (s - 1) * 3)
   Next s
End Sub
'bouton valider
Private Sub B_valid_Click()
  enreg = Me.enreg
  Range(nomtableau).Item(enreg, 1) = Val(Me.Id)
 
  ' On pousse les données du formulaire dans le tableau
  For i = 2 To 3
    Range(nomtableau).Item(enreg, i) = Me("TextBox" & i)
  Next i
  Range(nomtableau).Item(enreg, 4) = Me.TextBox11
  Range(nomtableau).Item(enreg, 5) = Me.Textbox4
  Range(nomtableau).Item(enreg, 6) = Me.Textbox5
  Range(nomtableau).Item(enreg, 7) = Me.Textbox6
  Range(nomtableau).Item(enreg, 8) = Me.Textbox7
  Range(nomtableau).Item(enreg, 9) = Me.TextBox8
  Range(nomtableau).Item(enreg, 10) = Me.TextBox9
  Range(nomtableau).Item(enreg, 11) = Me.TextBox10
  Range(nomtableau).Item(enreg, 12) = Me("criticité" & s)
  Range(nomtableau).Item(enreg, 13) = Me("Prodstrat" & s)
  Range(nomtableau).Item(enreg, 14) = Me("Detectionstep" & s)
  Range(nomtableau).Item(enreg, 15) = Me.TextBox12
  Range(nomtableau).Item(enreg, 16) = Me("Actionim" & s)
  Range(nomtableau).Item(enreg, 17) = Me.TextBox16
  Range(nomtableau).Item(enreg, 18) = Me("Retraitement" & s)
  Range(nomtableau).Item(enreg, 19) = Me.TextBox18
  Range(nomtableau).Item(enreg, 20) = Me.TextBox19
  Range(nomtableau).Item(enreg, 21) = Me.TextBox20
  Range(nomtableau).Item(enreg, 22) = Me.TextBox15
  Range(nomtableau).Item(enreg, 23) = Me.TextBox17
 
  For s = 1 To 4
     Range(nomtableau).Item(enreg, 24 + (s - 1) * 4) = Me("Risque" & s)
     Range(nomtableau).Item(enreg, 25 + (s - 1) * 4) = Me("Date" & s)
     Range(nomtableau).Item(enreg, 26 + (s - 1) * 4) = Me("Visa" & s)
     Range(nomtableau).Item(enreg, 27 + (s - 1) * 4) = Me("Com" & s)
    
   Next s
  
   ' Vide le formulaire après avoir mis les données dans le tableau
   Unload Me
   UserFormSaisie.Show
End Sub
' bouton supprimer
Private Sub B_sup_Click()
' protection du bouton supprimer par mdp
Dim Mdp As String
Mdp = Application.InputBox("Veuillez introduire votre mot de passe")
If Mdp <> "iknowvba" Then MsgBox "Accès refusé !": Exit Sub
  If MsgBox("Etes vous sûr de supprimer " & Me.enreg & "?", vbYesNo) = vbYes Then
     Range(nomtableau).Rows(Me.enreg).Delete
     Me.Recherche.List = Range(nomtableau).Value
  End If
End Sub
' bouton ajouter
Private Sub B_ajout_Click()
  Unload Me
  Me.Id = Application.Max(Range(nomtableau).Columns(1)) + 1
  Me.enreg = Range(nomtableau).Rows.Count + 1
End Sub

Private Sub B_suivant_Click()
 If Me.Recherche.ListIndex < Me.Recherche.ListCount - 1 Then
   Me.Recherche.ListIndex = Me.Recherche.ListIndex + 1
  End If
End Sub
Private Sub b_précédent_Click()
  If Me.Recherche.ListIndex > 0 Then
    Me.Recherche.ListIndex = Me.Recherche.ListIndex - 1
  End If
End Sub
' bouton quitter
Private Sub b_quitter_Click()
Unload Me
' Reprotection de la feuille "Produits" à éditer
Sheets("Produits").Protect Password:="iknowvba"
End Sub
Sub Tri(a, gauc, droi, colTri) ' Quick sort
  ref = a((gauc + droi) \ 2, colTri)
  g = gauc: d = droi
  Do
    Do While a(g, colTri) < ref: g = g + 1: Loop
    Do While ref < a(d, colTri): d = d - 1: Loop
    If g <= d Then
       For c = LBound(a, 2) To UBound(a, 2)
          temp = a(g, c): a(g, c) = a(d, c): a(d, c) = temp
       Next
       g = g + 1: d = d - 1
     End If
   Loop While g <= d
   If g < droi Then Call Tri(a, g, droi, colTri)
   If gauc < d Then Call Tri(a, gauc, d, colTri)
End Sub


Je vous remercie par avance de l'aide que vous pourrez m'apporter.
Cordialement,
Erwan.
 

Pièces jointes

  • Arret de commercialisation to NC.xlsm
    181.9 KB · Affichages: 6

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…