Probleme avec une boucle for
bonsoir,
Je reviens vers vous car suite à un probleme résolu sur un critere identique je veux appliquer la meme methode pour verifier qu'ue le nom et prenom de la personne a enregistrer dans la base de donnée n'existe pas quand on clique sur enregistreret si c'est pas le cas on procède à l'enregistrement...seulement il me detecte bien si la personne existe et existe les instructions apres sauf que quand la personne n'existe pas... il me dit toujours qu'elle existe..
Je vous met le code utilisée ci-dessous:
For i = 5 To Range("A" & Rows.Count).End(xlUp).Row
If LCase(Cells(i, 4)) = LCase(txtNom.Value) And LCase(Cells(i, 5)) = LCase(TxtPrénom.Value) Then
Exit For ' si conditions respectées on sort de la boucle
End If
Next i
MsgBox " Cette personne est déjà enregistrée chez vous!", vbOKOnly + vbInformation, "INFORMATION"
Call btnannuler_Click
If i = Range("A" & Rows.Count).End(xlUp).Row Then ' si on est sur la derniere ligne du tableau suite à la boucle
ActiveCell.Offset(0, 1) = txtdateajout
ActiveCell.Offset(0, 3) = txtNom
ActiveCell.Offset(0, 4) = TxtPrénom
ActiveCell.Offset(0, 5) = cbostatut
ActiveCell.Offset(0, 6) = Txtquotient
ActiveCell.Offset(0, 7).Value = Txtnaissance.Value
ActiveCell.Offset(0, 9) = cbosituation
ActiveCell.Offset(0, 10) = cboquartier
ActiveCell.Offset(0, 11) = TxtAdresse
ActiveCell.Offset(0, 12) = TxtCP
ActiveCell.Offset(0, 13) = TxtVille
ActiveCell.Offset(0, 14) = Txtmail
If cbocontactmail = True Then 'si la case est cochée
ActiveCell.Offset(0, 15) = "Oui" 'alors on inscrit "oui"dans le tableau
Else
ActiveCell.Offset(0, 15) = "Non"
End If
ActiveCell.Offset(0, 16) = Format(Txtfixe.Value, "00 00 00 00 00")
ActiveCell.Offset(0, 17) = Format(Txtmobile, "00 00 00 00 00")
If cbocontactsms = True Then 'si la case est cochée
ActiveCell.Offset(0, 18) = "Oui" 'alors on inscrit "oui"dans le tableau
Else
ActiveCell.Offset(0, 18) = "Non"
End If
If chbocscjp = True Then 'si la case est cochée
ActiveCell.Offset(0, 19) = "Oui" 'alors on inscrit "oui"dans le tableau
Else
ActiveCell.Offset(0, 19) = "Non"
End If
If chboville = True Then 'si la case est cochée
ActiveCell.Offset(0, 20) = "Oui" 'alors on inscrit "oui"dans le tableau
Else
ActiveCell.Offset(0, 20) = "Non"
End If
ActiveCell.Offset(0, 22) = cboecole
If chbofemmes = True Then 'si la case est cochée
ActiveCell.Offset(0, 23) = "Oui" 'alors on inscrit "oui"dans le tableau
Else
ActiveCell.Offset(0, 23) = "Non" 'sinon on écrit "non"
End If
If chbojeux = True Then
ActiveCell.Offset(0, 24) = "Oui"
Else
ActiveCell.Offset(0, 24) = "Non"
End If
If chboinformatique = True Then
ActiveCell.Offset(0, 25) = "Oui"
Else
ActiveCell.Offset(0, 25) = "Non"
End If
If chbocv = True Then
ActiveCell.Offset(0, 26) = "Oui"
Else
ActiveCell.Offset(0, 26) = "Non"
End If
If chbomercredi = True Then
ActiveCell.Offset(0, 27) = "Oui"
Else
ActiveCell.Offset(0, 27) = "Non"
End If
If chbosorties = True Then
ActiveCell.Offset(0, 28) = "Oui"
Else
ActiveCell.Offset(0, 28) = "Non"
End If
If chbocuisine = True Then
ActiveCell.Offset(0, 29) = "Oui"
Else
ActiveCell.Offset(0, 29) = "Non"
End If
If chbojournal = True Then
ActiveCell.Offset(0, 30) = "Oui"
Else
ActiveCell.Offset(0, 30) = "Non"
End If
If chbosanté = True Then
ActiveCell.Offset(0, 31) = "Oui"
Else
ActiveCell.Offset(0, 31) = "Non"
End If
If chbosociétés = True Then
ActiveCell.Offset(0, 32) = "Oui"
Else
ActiveCell.Offset(0, 32) = "Non"
End If
If chbozen = True Then 'si la case est cochée
ActiveCell.Offset(0, 33) = "Oui" 'alors on inscrit "oui"dans le tableau
Else
ActiveCell.Offset(0, 33) = "Non"
End If
If chbosuivi = True Then 'si la case est cochée
ActiveCell.Offset(0, 34) = "Oui" 'alors on inscrit "oui"dans le tableau
Else
ActiveCell.Offset(0, 34) = "Non"
End If
If chboimage = True Then 'si la case est cochée
ActiveCell.Offset(0, 35) = "Oui" 'alors on inscrit "oui"dans le tableau
Else
ActiveCell.Offset(0, 35) = "Non"
End If
If chbocorps = True Then 'si la case est cochée
ActiveCell.Offset(0, 36) = "Oui" 'alors on inscrit "oui"dans le tableau
Else
ActiveCell.Offset(0, 36) = "Non"
End If
barre_nouveau.Show
MsgBox " L'adhérant a bien été ajoutée à votre base de données", vbOKOnly + vbInformation, "CONFIRMATION D'ENREGISTREMENT"
End If
End SubMerci par avance pour votre aide
Salut Bonzaï,
comme j'imagine que le but de ta boucle est d'éviter un deuxième enregistrement d'une personne existante, voici la correction.
'
For i = 5 To Range("A" & Rows.Count).End(xlUp).Row
If LCase(Cells(i, 4)) = LCase(txtNom.Text) And LCase(Cells(i, 5)) = LCase(TxtPrénom.Text) Then
MsgBox " Cette personne est déjà enregistrée chez vous!", vbOKOnly + vbInformation, "INFORMATION"
Exit Sub ' si conditions respectées on sort de la boucle
End If
Next i
...
...
Call btnannuler_ClickNe sachant pas à quoi sert 'Call btnannuler_Click', je l'ai laissé en dehors! A toi de savoir!
Cela dit, si tu as un fichier, il y a des choses à optimiser dans ton code...
A+
salut Curulis 57,
Merci de ton retour!!
En fait l'appel a la procedure"call btnannuler" permet d'effacer la derniere ligne du tableau de donnée sachant que la première cellule est rempli automatiquement avec le numero d'adhérant lors de l'ouverture du formulaire.
Je viens d'essayer et cela fonctionne très bien!! merci
Je viens de comprendre mon erreur....en même temps je débute et comme on dit ..c'est en faisant des erreurs que l'on apprend!!
Encore merci de ton aide
Salut Bonzaï,
Pas tout suivi avec ' btnannuler_Click' mais bon...
'
For i = 5 To Range("A" & Rows.Count).End(xlUp).Row
If LCase(Cells(i, 4)) = LCase(txtNom.Text) And LCase(Cells(i, 5)) = LCase(TxtPrénom.Text) Then
MsgBox " Cette personne est déjà enregistrée chez vous!", vbOKOnly + vbInformation, "INFORMATION"
Exit Sub ' si conditions respectées on sort de la Sub
End If
Next i
'
Call btnannuler_Click
'
iRow = Range("A" & Rows.Count).End(xlUp).Row + 1
'
Cells(iRow, 2) = txtdateajout.Text
Cells(iRow, 3) = txtNom.Text
Cells(iRow, 4) = TxtPrénom.Text
Cells(iRow, 5) = cbostatut.Text
Cells(iRow, 6) = Txtquotient.Text
Cells(iRow, 7) = Txtnaissance.Text
Cells(iRow, 9) = cbosituation
Cells(iRow, 10) = cboquartier
Cells(iRow, 11) = TxtAdresse.Text
Cells(iRow, 12) = TxtCP.Text
Cells(iRow, 13) = TxtVille.Text
Cells(iRow, 14) = Txtmail.Text
Cells(iRow, 15) = IIf(cbocontactmail = True, "Oui", "Non")
Cells(iRow, 16) = Format(Txtfixe.Value, "00 00 00 00 00")
Cells(iRow, 17) = Format(Txtmobile, "00 00 00 00 00")
Cells(iRow, 18) = IIf(cbocontactsms = True, "Oui", "Non")
Cells(iRow, 19) = IIf(chbocscjp = True, "Oui", "Non")
Cells(iRow, 20) = IIf(chboville = True, "Oui", "Non")
Cells(iRow, 22) = cboecole
Cells(iRow, 23) = IIf(chbofemmes = True, "Oui", "Non")
Cells(iRow, 24) = IIf(chbojeux = True, "Oui", "Non")
Cells(iRow, 25) = IIf(chboinformatique = True, "Oui", "Non")
Cells(iRow, 26) = IIf(chbocv = True, "Oui", "Non")
Cells(iRow, 27) = IIf(chbomercredi = True, "Oui", "Non")
Cells(iRow, 28) = IIf(chbosorties = True, "Oui", "Non")
Cells(iRow, 29) = IIf(chbocuisine = True, "Oui", "Non")
Cells(iRow, 30) = IIf(chbojournal = True, "Oui", "Non")
Cells(iRow, 31) = IIf(chbosanté = True, "Oui", "Non")
Cells(iRow, 32) = IIf(chbosociétés = True, "Oui", "Non")
Cells(iRow, 33) = IIf(chbozen = True, "Oui", "Non")
Cells(iRow, 34) = IIf(chbosuivi = True, "Oui", "Non")
Cells(iRow, 35) = IIf(chboimage = True, "Oui", "Non")
Cells(iRow, 36) = IIf(chbocorps = True, "Oui", "Non")
'
barre_nouveau.Show
MsgBox " L'adhérant a bien été ajouté à votre base de données", vbOKOnly + vbInformation, "CONFIRMATION D'ENREGISTREMENT"
'Bon travail! VBA est passionnant!
A+
bonjour curulis,
pour les checkbox, je ne connaissais pas cette fonction...mais en tout cas elle allégé le code.. en effet!!
Merci!
en effet, VBA est passionnant!! j'ai encore plein d'idée à intégrer à mon logiciel de gestion d'adhérents. .mais bon.. encore pas mal de recherche à faire pour pouvoir les réaliser. ..
A+