[VBA] pb de boucle "do...while"

Grace -  
CapitainCo Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

grâce à un formulaire je remplie une base de données. Je souhaite vérifier (avant l'enregistrement) si le numero d'étiquette existe déja! Car je ne veux pas deux numéros identiques.

Avec mon programmme :
- si je saisie un numéro déja existant il me renvoie le message d'erreur --> donc ca marche
- si je saisie un numéro non existant (il devrait donc enregistrer mon étiquette) il ne sort jamais de boucle....il charge sans qu'il ne se passe quoi que ce soit (il tourne en rond!!!)

Voici mon programme :

Private Sub Enregistrer_Click()
If TextBox1.Value <> "" Then
k = 3
Worksheets("Registre").Select
Do While Cells(k, 1).Text <> TextBox1.Value And Cells(k, 1).Text <> ""
k = k + 1
Worksheets("Registre").Select
If Cells(k, 1).Text = TextBox1.Value Then
MsgBox "ce numéro d'étiquette existe déja"
End If
Loop
ElseIf Not Cells(k, 1).Text = TextBox1.Value Then
ElseIf TextBox1.Value = "" Then
MsgBox "Il faut entrer un numero d'étiquette"
ElseIf ComboBox1.Value = "" Then
MsgBox "Choisir un responsable secteur dans la liste"
ElseIf ComboBox2.Value = "" Then
MsgBox "Choisir un secteur dans la liste"
ElseIf ComboBox3.Value = "" Then
MsgBox "Choisir une ligne dans la liste"
ElseIf ComboBox4.Value = "" Then
MsgBox "Choisir un type d'étiquette dans la liste"
ElseIf ComboBox5.Value = "" Then
MsgBox "Déterminer la criticité de l'étiquette"
ElseIf TextBox4.Value = "" Then
MsgBox "Il faut entrez une date d'émission"
ElseIf Not IsDate(TextBox4.Value) Then
MsgBox "Entrer une date au format jj/mm/aaaa"
Else
'Enregistrement des valeurs entrées par l'utilisateur dans le registre'
Dim x As Integer
x = 4
While Range("A" & x).Value <> ""
x = x + 1
Wend
Dim y As Integer
y = 4
While Range("B" & y).Value <> ""
y = y + 1
Wend
Dim z As Integer
z = 4
While Range("C" & z).Value <> ""
z = z + 1
Wend
Dim l As Integer
l = 4
While Range("D" & l).Value <> ""
l = l + 1
Wend
Dim m As Integer
m = 4
While Range("E" & m).Value <> ""
m = m + 1
Wend
Dim n As Integer
n = 4
While Range("F" & n).Value <> ""
n = n + 1
Wend
Dim p As Integer
p = 4
While Range("K" & p).Value <> ""
p = p + 1
Wend
Dim o As Integer
o = 4
While Range("L" & o).Value <> ""
o = o + 1
Wend
Dim u As Integer
u = 4
While Range("G" & u).Value <> ""
u = u + 1
Wend
Dim v As Integer
v = 4
While Range("I" & v).Value <> ""
v = v + 1
Wend
Dim w As Integer
w = 4
While Range("J" & w).Value <> ""
w = w + 1
Wend
'enlever le mot de passe du classeur'
Worksheets("Registre").Unprotect Password:="tpm2008"
Sheets("Registre").Range("A" & x).Value = Me.TextBox1.Value
Sheets("Registre").Range("B" & y).Value = Me.ComboBox1.Value
Sheets("Registre").Range("C" & z).Value = Me.ComboBox2.Value
Sheets("Registre").Range("D" & l).Value = Me.ComboBox3.Value
Sheets("Registre").Range("E" & m).Value = Me.TextBox2.Value
Sheets("Registre").Range("F" & n).Value = Me.TextBox3.Value
Sheets("Registre").Range("K" & p).Value = Me.ComboBox4.Value
Sheets("Registre").Range("L" & o).Value = Me.ComboBox5.Value
Sheets("Registre").Range("G" & u).Value = Me.TextBox4.Value
Sheets("Registre").Range("I" & v).Value = Me.TextBox5.Value
Sheets("Registre").Range("J" & w).Value = Me.TextBox6.Value
'protection de la feuille "registre"'
Worksheets("Registre").Protect Password:="tpm2008"
'remise à 0 de tous les champs de l'application'
TextBox1.Value = ""
ComboBox1.Value = ""
ComboBox2.Value = ""
ComboBox3.Value = ""
TextBox2.Value = ""
TextBox3.Value = ""
ComboBox4.Value = ""
ComboBox5.Value = ""
TextBox4.Value = ""
TextBox5.Value = ""
TextBox6.Value = ""

End If
End Sub


Merci par avance

4 réponses

blux Messages postés 27117 Date d'inscription   Statut Modérateur Dernière intervention   3 359
 
Salut,

tu as essayé de mettre un OR à la place du AND ?
0
Grace
 
avec le or ca ne marche pas!
il tourne en rond dans tous les cas maintenant!!!!

merci quand m^me
0
julplemet Messages postés 331 Date d'inscription   Statut Membre Dernière intervention   79
 
Bonjour

Remplace le And par un OR

Oups désolé pour l'écho (j'arrete pas aujourd'hui)
0
lermite222 Messages postés 8724 Date d'inscription   Statut Contributeur Dernière intervention   1 191
 
Bonjour,
voir le dernier poste de ta question précédante, ca te donneras peut-être des idées pour la simplification et surtout pour une autre méthode.
Et si tu à résolu le poste ce serais sympa de le marquer en résolu, ca évite de poster des réponses inutiles.

A+
0
CapitainCo Messages postés 126 Date d'inscription   Statut Membre Dernière intervention   61
 
Fais un pas a pas de ton code car il m'est arrivé plusieur fois des choses comme cela juste pas parceque les valeurs ne sont pas striqutement identique ou autre...
par exemple sur deux cellules contenant la valeur 2
la 1er me sort bien 2
mais la 2eme va me sortir "2" car je suis en format texte.

enfin tout cela pour dire que si tu fais du pas a pas tu va bien voir où ton code ne marche pas
0