Sparfell29
XLDnaute Nouveau
Bonjour à tous, 
J'ai codé ces formulaires de façon à ce qu'à l'issue de la saisie des données, en cliquant sur "Validation" on vienne mettre les données dans une nouvelle ligne du tableau. Cela fonctionnait sans aucun problème jusqu'à ce qu'il ne se passe... et bien rien du tout. D'après les utilisateurs personne n'a touché à quoi que ce soit. Cependant tous mes nouveaux ajouts se font en dehors de mon tableau désormais et ne sont donc pas pris en compte dans mon menu déroulant de recherche...
Je suis débutant en VBA et je ne comprends pas pourquoi du jour au lendemain un code fonctionnel se serait mis à fonctionner différemment.
J'ai dit à ma tutrice que de toute manière je n'étais pas informaticien et qu'il ne fallait pas mettre en fonction mes applis si nous n'étions pas capable d'en assurer la maintenance... Je suis profondément dépité par
1) le fait que cela ne fonctionne plus alors que j'y suis depuis le début de mon stage et que j'étais très heureux d'avoir réussi à faire cela.
2) le fait que je n'arrive pas à comprendre d'où vient la défaillance.
Pourriez-vous m'aider à ne serait-ce qu'identifier le problème quitte à ce que je m'en débrouille après ?
Juridique :
	
	
	
	
	
		
Dérogation :
	
	
	
	
	
		
	
		
			
		
		
	
				
			J'ai codé ces formulaires de façon à ce qu'à l'issue de la saisie des données, en cliquant sur "Validation" on vienne mettre les données dans une nouvelle ligne du tableau. Cela fonctionnait sans aucun problème jusqu'à ce qu'il ne se passe... et bien rien du tout. D'après les utilisateurs personne n'a touché à quoi que ce soit. Cependant tous mes nouveaux ajouts se font en dehors de mon tableau désormais et ne sont donc pas pris en compte dans mon menu déroulant de recherche...
Je suis débutant en VBA et je ne comprends pas pourquoi du jour au lendemain un code fonctionnel se serait mis à fonctionner différemment.
J'ai dit à ma tutrice que de toute manière je n'étais pas informaticien et qu'il ne fallait pas mettre en fonction mes applis si nous n'étions pas capable d'en assurer la maintenance... Je suis profondément dépité par
1) le fait que cela ne fonctionne plus alors que j'y suis depuis le début de mon stage et que j'étais très heureux d'avoir réussi à faire cela.
2) le fait que je n'arrive pas à comprendre d'où vient la défaillance.
Pourriez-vous m'aider à ne serait-ce qu'identifier le problème quitte à ce que je m'en débrouille après ?
Juridique :
		VB:
	
	
	Option Compare Text
Dim nomtableau
'Initialisation du formulaire
Private Sub UserForm_Initialize()
  nomtableau = "Contrat"
  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
 
  ' déprotection de la feuille "Produits" à éditer
  Sheets("Contrats").Unprotect Password:="iknowvba"
 
End Sub
Private Sub Recherche_Change()
  Me.enreg = Application.Match(Val(Me.Recherche), Range(nomtableau).Columns(1), 0)
  Me.Id = Me.Recherche
  For I = 2 To 15
    Me("TextBox" & I) = Range(nomtableau).Item(enreg, I)
  Next I
End Sub
Private Sub B_valid_Click()
  enreg = Me.enreg
  Range(nomtableau).Item(enreg, 1) = Val(Me.Id)
  For I = 2 To 15
    Range(nomtableau).Item(enreg, I) = Me("TextBox" & I)
  Next I
 
   raz
   UserForm_Initialize
End Sub
Private Sub B_sup_Click()
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
Private Sub B_ajout_Click()
  raz
  Me.Id = Application.Max(Range(nomtableau).Columns(1)) + 1
  Me.enreg = Range(nomtableau).Rows.Count + 1
End Sub
'remise à zéro du formulaire
Sub raz()
  For I = 2 To 15
     Me("TextBox" & I) = ""
  Next I
 
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
Private Sub bouton_quitter_Click()
Unload Me
' Reprotection de la feuille "Contrats" à éditer
Sheets("Contrats").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 SubDérogation :
		Code:
	
	
	Option Compare Text
Dim nomtableau
Private Sub Accord1_Change()
TextBox18.Visible = Accord1.ListIndex > 0
TextBox19.Visible = Accord1.ListIndex > 0
Label36.Visible = Accord1.ListIndex > 0
Label37.Visible = Accord1.ListIndex > 0
End Sub
'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
  Me.Recherche.List = Tbl
 
   With Me
  .Diffusion.List = [Tableau2].Value
  .ListeMail.List = [Mail].Value
   End With
   For s = 1 To 4
   Me("Accord" & s).List = [Tableau3].Value
   Next
   ' déprotection de la feuille "Produits" à éditer
  Sheets("Commercialisation").Unprotect Password:="iknowvba"
End Sub
Private Sub Recherche_Change()
  Me.enreg = Application.Match(Val(Me.Recherche), Range(nomtableau).Columns(1), 0)
  Me.Id = Me.Recherche
  For i = 2 To 5
    Me("TextBox" & i) = Range(nomtableau).Item(enreg, i)
  Next i
        
  
    Me.TextBox46 = 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, 12)
    Me.TextBox14 = Range(nomtableau).Item(enreg, 13)
    Me.TextBox15 = Range(nomtableau).Item(enreg, 14)
    Me.TextBox16 = Range(nomtableau).Item(enreg, 15)
    Me.TextBox17 = Range(nomtableau).Item(enreg, 17)
    Me.TextBox18 = Range(nomtableau).Item(enreg, 18)
    Me.TextBox19 = Range(nomtableau).Item(enreg, 20)
    Me.TextBox21 = Range(nomtableau).Item(enreg, 34)
    Me.TextBox34 = Range(nomtableau).Item(enreg, 21)
    Me.TextBox35 = Range(nomtableau).Item(enreg, 22)
    Me.TextBox36 = Range(nomtableau).Item(enreg, 23)
    Me.TextBox20 = Range(nomtableau).Item(enreg, 25)
    Me.TextBox37 = Range(nomtableau).Item(enreg, 26)
    Me.TextBox38 = Range(nomtableau).Item(enreg, 27)
    Me.TextBox39 = Range(nomtableau).Item(enreg, 28)
    Me.TextBox40 = Range(nomtableau).Item(enreg, 30)
    Me.TextBox41 = Range(nomtableau).Item(enreg, 31)
    Me.TextBox42 = Range(nomtableau).Item(enreg, 32)
    Me.TextBox43 = Range(nomtableau).Item(enreg, 35)
    Me.TextBox44 = Range(nomtableau).Item(enreg, 36)
    Me.TextBox45 = Range(nomtableau).Item(enreg, 37)
  '--- accords
    Me.Diffusion = Range(nomtableau).Item(enreg, 16)
    Me.Accord1 = Range(nomtableau).Item(enreg, 19)
    Me.Accord2 = Range(nomtableau).Item(enreg, 24)
    Me.Accord3 = Range(nomtableau).Item(enreg, 29)
    Me.Accord4 = Range(nomtableau).Item(enreg, 33)
End Sub
Private Sub B_valid_Click()
  enreg = Me.enreg
  Range(nomtableau).Item(enreg, 1) = Val(Me.Id)
  For i = 2 To 5
    Range(nomtableau).Item(enreg, i) = Me("TextBox" & i)
  Next i
    Range(nomtableau).Item(enreg, 6) = Me.TextBox46
    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.TextBox11
    Range(nomtableau).Item(enreg, 13) = Me.TextBox14
    Range(nomtableau).Item(enreg, 14) = Me.TextBox15
    Range(nomtableau).Item(enreg, 15) = Me.TextBox16
    Range(nomtableau).Item(enreg, 17) = Me.TextBox17
    Range(nomtableau).Item(enreg, 18) = Me.TextBox18
    Range(nomtableau).Item(enreg, 20) = Me.TextBox19
    Range(nomtableau).Item(enreg, 34) = Me.TextBox21
    Range(nomtableau).Item(enreg, 21) = Me.TextBox34
    Range(nomtableau).Item(enreg, 22) = Me.TextBox35
    Range(nomtableau).Item(enreg, 23) = Me.TextBox36
    Range(nomtableau).Item(enreg, 25) = Me.TextBox20
    Range(nomtableau).Item(enreg, 26) = Me.TextBox37
    Range(nomtableau).Item(enreg, 27) = Me.TextBox38
    Range(nomtableau).Item(enreg, 28) = Me.TextBox39
    Range(nomtableau).Item(enreg, 30) = Me.TextBox40
    Range(nomtableau).Item(enreg, 31) = Me.TextBox41
    Range(nomtableau).Item(enreg, 32) = Me.TextBox42
    Range(nomtableau).Item(enreg, 35) = Me.TextBox43
    Range(nomtableau).Item(enreg, 36) = Me.TextBox44
    Range(nomtableau).Item(enreg, 37) = Me.TextBox45
  '-- accords
    Range(nomtableau).Item(enreg, 16) = Me.Diffusion
    Range(nomtableau).Item(enreg, 19) = Me.Accord1
    Range(nomtableau).Item(enreg, 24) = Me.Accord2
    Range(nomtableau).Item(enreg, 29) = Me.Accord3
    Range(nomtableau).Item(enreg, 33) = Me.Accord4
   raz
   UserForm_Initialize
End Sub
Private Sub ListeMail_Change()
Sheets("Mail").Cells(2, 7).Value = ListeMail.Text
End Sub
Private Sub EnvoiMail_Click()
  Dim ListeDest
  Dim i As Long
  Dim oMsgApp As Object
  Dim oMsg As Object
  Dim sListeDest As String
  Dim sFichier As String
 
 
  Set oMsgApp = CreateObject("Outlook.Application")
 
  ListeDest = Sheets("Mail").Cells(2, 7)
    
    Set oMsg = oMsgApp.CreateItem(0)
    With oMsg
      .To = ListeDest
      .Subject = "Formulaire de dérogation de " & Me.Textbox4.Text
      .Body = "Veuillez compléter le formulaire sous N:\SYSTEME DE MANAGEMENT DE LA QUALITE\SYSTEME DOCUMENTAIRE PURESSENTIEL\5 - REGISTRES et le transmettre au service suivant." & Chr(10) & Chr(13) & _
      Chr(10) & Chr(13) & "Bonne journée"
      .Send
    End With
    Set oMsg = Nothing
    
  Set oMsgApp = Nothing
  MsgBox "Mail envoyé"
End Sub '
Private Sub B_sup_Click()
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
Private Sub B_ajout_Click()
  raz
  Me.Id = Application.Max(Range(nomtableau).Columns(1)) + 1
  Me.enreg = Range(nomtableau).Rows.Count + 1
End Sub
'remise à zéro du formulaire
Sub raz()
  For i = 2 To 11
    Me("TextBox" & i) = ""
  Next i
    Me.TextBox14 = ""
    Me.TextBox15 = ""
    Me.TextBox17 = ""
    Me.TextBox18 = ""
    Me.TextBox19 = ""
    Me.TextBox34 = ""
    Me.TextBox35 = ""
    Me.TextBox36 = ""
    Me.TextBox20 = ""
    Me.TextBox21 = ""
    Me.TextBox37 = ""
    Me.TextBox38 = ""
    Me.TextBox39 = ""
    Me.TextBox40 = ""
    Me.TextBox41 = ""
    Me.TextBox42 = ""
    Me.TextBox43 = ""
    Me.TextBox44 = ""
    Me.TextBox45 = ""
    Me.TextBox46 = ""
 
    Me.Diffusion = ""
    For s = 1 To 4
     Me("Accord" & s) = ""
  Next s
 
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
Private Sub bouton_quitter_Click()
Unload Me
' Reprotection de la feuille "Produits" à éditer
Sheets("Commercialisation").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 
	 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		 
 
		