Condition if

Bonjour,

Je reviens vers vous car je n'arrive pas à trouver mon erreur sur ce code que j'ai créée (avec mes moyen)

    With Sheets("Donn?es")
        Derlig = .Range("A" & Rows.Count).End(xlUp).Row + 1
        For I = 4 To Derlig - 1
            If .Range("A" & I) & " " & .Range("B" & I) = Me.TBNom & " " & Me.TBPr?nom Then
                Exit For
            End If
        Next I
        .Range("A" & Derlig) = Me.TBNom
        .Range("B" & Derlig) = Me.TBPr?nom
        .Range("A3:B" & Rows.Count).Sort Key1:=.Range("A3"), order1:=xlAscending, Key2:=.Range("B3"), order2:=xlAscending, Header:=xlYes
    End With

J'ai mis une condition if, (si A ET B = TBNOM et TBPRENOM) je quitte

 If .Range("A" & I) & " " & .Range("B" & I) = Me.TBNom & " " & Me.TBPr?nom Then
                Exit For

Pour lui le "I" est toujours A4.

Vous avez une idée les experts?

Bonjour,

Si je comprend bien tu cherches à tester si :

  • le nom et prénom est déjà dans ta base ---> alors on sort.
  • Le nom et prénom n'y est pas alors ---> on ajoute à la base de données.

Dans un premier temps j'ajouterai une message box pour indiquer si il a trouvé.

Ensuite il n'y a pas besoin de continuer la recherche si il a trouvé donc tu peux sortir de la macro.

[code

For I = 4 To Derlig - 1
            If .Range("A" & I) & " " & .Range("B" & I) = Me.TBNom & " " & Me.TBPr?nom Then
msgbox ("Le nom existe déjà dans la base")                
Exit Sub
            End If
        Next I
        '....et la suite
        

Par ailleurs les points devant range et le "me." par sur que se soit utile ?

For I = 4 To Derlig - 1
            If Range("A" & I).value & " " & .Range("B" & I).value = TBNom.value & " " & TBPrénom.value Then
msgbox ("Le nom existe déjà dans la base")                
Exit Sub
            End If
        Next I
        '....et la suite

ahhhh oui , c'était exit sub et non exit for….

Merciiiiiiiiiii

une derniere question,

Lorsque j'ajoute le tout premier client, il est sensé me l'écrire sur A4, mais là il me l'écrit sur la prochaine ligne vide (A2), sachant qu'en A1 il y a le titre .

Tu as une idée?

        Derlig = .Range("A" & Rows.Count).End(xlUp).Row + 1
        For I = 4 To Derlig - 1

une derniere question,

Lorsque j'ajoute le tout premier client, il est sensé me l'écrire sur A4, mais là il me l'écrit sur la prochaine ligne vide (A2), sachant qu'en A1 il y a le titre .

Tu as une idée?

        Derlig = .Range("A" & Rows.Count).End(xlUp).Row + 1
        For I = 4 To Derlig - 1

Effectivement le tout premier client si tu veux qu'il commence à partir de A4

tu vas devoir ajouter une condition pour Derlig

If Range("A" & Rows.Count).End(xlUp).Row + 1=2 then

Derlig=4

Else

Derlig=.Range("A" & Rows.Count).End(xlUp).Row + 1

end if

Rechercher des sujets similaires à "condition"