Bonjour, j'ai un petit soucis avec une boucle while pour gérer une erreur de doublon dans ma table (erreur 3022). Pour éviter cette erreur j'ai voulu faire une boucle while qui incrémente ma clé primaire de 1 jusqu'à ce qu'elle trouve un numéro qui n'est pas encore utilisé dans ma table. Le problème c'est que mon code ne fonctionne pas, la valeur s’incrémente mais la boucle ne s'arrêt jamais. Savez-vous comment je peux faire ?
While (Err.Number = 3022)
Dim i2 As Integer
i2 = 0
On Error GoTo Err_Valider_Click
If IsNull(Me.Texte1.Value) Then
MsgBox "Saisir champ"
Exit Sub
Else
DoCmd.RunCommand acCmdSaveRecord
End If
Wend
Err_Valider_Click:
If (Err.Number = 3022) Then
Texte1.Value = "1" + i2
i2 = i2 + 1
End If
While (Err.Number = 3022)
Dim i2 As Integer
i2 = 0
On Error GoTo Err_Valider_Click
If IsNull(Me.Texte1.Value) Then
MsgBox "Saisir champ"
Exit Sub
Else
DoCmd.RunCommand acCmdSaveRecord
End If
Wend
If (Err.Number = 3022) Then
Texte1.Value = "1" + i2
i2 = i2 + 1
End If
Err_Valider_Click:
' MsgBox "...!" ' voir peut être de mettre la description de l'erreur ' MsgBox Err.Description
Exit Sub
L'erreur est dû à une valeur en double (doublon dans ma table) et je ne peux pas mettre de exit sub car je dois chercher une valeur (pour mon texte1.value) qui n'existe pas déjà dans ma table et sortie de la boucle while à ce moment là.
Pour que l'erreur s’enclenche, la macro doit arriver à DoCmd.RunCommand acCmdSaveRecord ou là il ne peut pas car il y aura un doublon si enregistrement mais je ne sais pas comment rentrer dans la boucle car mettre juste While (Err.Number = 3022) ne me permet pas de rentrer dans la boucle.