XL 2019 Consigne non suivi dans une suite de ElseIf

Gstn

XLDnaute Nouveau
Bonsoir,

J'ai un problème dans ma suite de ElseIf surement une mauvaise écriture mais je ne trouve pas.
Lors du dernier test "ElseIf Cells(x, 2) = TextBox2 Then Cells(x, 4) = Date", cette consigne saute et le code se termine pourtant toutes les conditions sont remplis je le suis au pas a pas mais je comprend pas ce qui plante une aide serait la bienvenue.
Au passage je ne sait pas si je peut rajouter plus de 2 tests sur un If ? Il s'agit de mettre en condition le remplissage de la T2 avant d'exécuter le test puisque j'utilise l'évènement change sur la T1, si vous avez des idées plus simple pour le faire je suis prenneur.
Pour le fichier en PJ il s'agit juste d'un suivis donc toggle en mode faux rempli un code personnel, matériel & une heure de prêt, toggle en mode true vient retrouver un prêt existant et compléter l'heure de restitution en "D"


Merci beaucoup pour votre aide.

Code:
Private Sub TextBox1_Change()

On Error Resume Next

Dim Cible As String
Dim x As Long
Cible = TextBox1

i = Range("A" & Rows.Count).End(xlUp).Row + 1
If Len(TextBox1.Text) = 4 And ToggleButton1 = False Then
Cells(i, 1) = TextBox1
TextBox2.SetFocus
ElseIf Len(TextBox1.Text) = 4 And ToggleButton1 = True Then x = Application.Match(Cible, Range("A2:A65000"), 0) + 1
If x = 0 Then TextBox1 = ""
ElseIf Cells(x, 2) = TextBox2 Then Cells(x, 4) = Date
End If
End Sub
 

Pièces jointes

  • Scan PDA - Copie.xlsm
    31.4 KB · Affichages: 3
Solution
C
Bonjour le fil

On peut aussi séparer les tests selon la valeur du bouton
VB:
Private Sub TextBox1_Change()
  Dim Cible As String
  Dim x As Long
  Cible = TextBox1
  Select Case Me.ToggleButton1.Value
  Case False
    i = Range("A" & Rows.Count).End(xlUp).Row + 1
    If Len(TextBox1.Text) = 4 Then
      Cells(i, 1) = TextBox1
      TextBox2.SetFocus
    End If
  Case True
    If Len(TextBox1.Text) = 4 Then
      x = Application.Match(Cible, Range("A2:A65000"), 0) + 1
      If x = 0 Then
        TextBox1 = ""
      ElseIf Cells(x, 2) = TextBox2 Then
        Cells(x, 4) = Date
      End If
    End If
  End Select
End Sub

A+

Gstn

XLDnaute Nouveau
Code:
i = Range("A" & Rows.Count).End(xlUp).Row + 1

If Len(TextBox1.Text) = 4 And ToggleButton1 = False Then
Cells(i, 1) = TextBox1
TextBox2.SetFocus

ElseIf Len(TextBox1.Text) = 4 And ToggleButton1 = True Then
TextBox2.SetFocus
End If

If Len(TextBox1.Text) = 4 And Len(TextBox2.Text) = 4 Then
x = Application.Match(Cible, Range("A2:A65000"), 0) + 1
End If

If x = 0 Then
TextBox1 = ""
MsgBox ("Bre non existant")

ElseIf Cells(x, 2) = CLng(TextBox2) Then
Cells(x, 4) = Date
End If

Je l'ai restructuré correctement, mais du coup je n'arrive plus a bloquer l'événement jusqu'au remplissage de mes tbox j'ai besoin d'une piste stp.
 
C

Compte Supprimé 979

Guest
Bonjour le fil

On peut aussi séparer les tests selon la valeur du bouton
VB:
Private Sub TextBox1_Change()
  Dim Cible As String
  Dim x As Long
  Cible = TextBox1
  Select Case Me.ToggleButton1.Value
  Case False
    i = Range("A" & Rows.Count).End(xlUp).Row + 1
    If Len(TextBox1.Text) = 4 Then
      Cells(i, 1) = TextBox1
      TextBox2.SetFocus
    End If
  Case True
    If Len(TextBox1.Text) = 4 Then
      x = Application.Match(Cible, Range("A2:A65000"), 0) + 1
      If x = 0 Then
        TextBox1 = ""
      ElseIf Cells(x, 2) = TextBox2 Then
        Cells(x, 4) = Date
      End If
    End If
  End Select
End Sub

A+
 

Gstn

XLDnaute Nouveau
Code:
Case True
    If Len(TextBox1.Text) = 4 Then
      TextBox2.SetFocus
      x = Application.Match(Cible, Range("A2:A65000"), 0) + 1
      If x = 0 Then
        TextBox1 = ""
      ElseIf Len(TextBox2.Text) = 4 And Cells(x, 2) = CLng(TextBox2) Then
        Cells(x, 4) = Date
      End If
    End If
  End Select
End Sub

Merci pour ta réponse, je ne connaissait pas cette possibilité mais malheureusement il y'a encore un truc qui cloche, le code plante paracerque je met sur la même consigne remplir T2 & comparer T2, je ne voit pas comment le formuler en commençant par remplir T2 pour continuer sur comparer.

J'ai essayé If .. Then "If" mais ca ne fonctionne pas.
 

Discussions similaires

Réponses
21
Affichages
961