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 Sub

Merci 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_Click

Ne 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+

Rechercher des sujets similaires à "probleme boucle"