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

Fermé
Grace - 11 juil. 2008 à 14:12
CapitainCo Messages postés 126 Date d'inscription mardi 24 juin 2008 Statut Membre Dernière intervention 5 novembre 2009 - 11 juil. 2008 à 14:32
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 26475 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 16 novembre 2024 3 316
11 juil. 2008 à 14:14
Salut,

tu as essayé de mettre un OR à la place du AND ?
0
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 mercredi 25 avril 2007 Statut Membre Dernière intervention 22 juin 2009 79
11 juil. 2008 à 14:14
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 dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
11 juil. 2008 à 14:24
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 mardi 24 juin 2008 Statut Membre Dernière intervention 5 novembre 2009 61
11 juil. 2008 à 14:32
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