[VBA] pb de boucle "do...while"
Grace
-
CapitainCo Messages postés 126 Date d'inscription Statut Membre Dernière intervention -
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
LoopElseIf 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
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
LoopElseIf 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
A voir également:
- [VBA] pb de boucle "do...while"
- L'indice n'appartient pas à la sélection vba - Forum VB / VBA
- My people do - Télécharger - Organisation
- Mon pc s'allume et s'éteint en boucle ✓ - Forum Matériel & Système
- Do not turn off target traduction - Forum Samsung
- Samsung galaxy tab S Bloquer Downloading do not turn off target - Forum Téléphones & tablettes Android
4 réponses
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+
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+
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
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
il tourne en rond dans tous les cas maintenant!!!!
merci quand m^me