Problème End(xlUp) ne fontionne pas correctement

Bonjour,

je suis débutant en ce qui concerne VBA, j'ai pour but de faciliter l'entrée de données dans une fiche de frais de déplacement sur excel. Je rencontre un problème en ce qui concerne le dépassement de limite de plafond. En effet je souhaite que lorsque la personne saisie ses différentes dépenses ( la personne saisie ses informations par le biais d'un userform qui se lance grâce au bouton "Nouveau Déplacement") et qu'elles dépassent le plafond requis, un userform se lance (userform9 dans le code) et le prévienne que ce montant a été dépassé. Dans le cas ou le plafond n'est pas dépassé l'utilisateur peut continuer a saisir des déplacements par le biais également d'un userform (userform7).

Voila donc mon code :

[code][/Sub plafond()

Dim plafond As Range

For Each plafond In Range("G29").End(xlUp)

If plafond = 0 Then

plafond.Interior.ColorIndex = 37

UserForm9.Show

Else

UserForm7.Show

End If

Next plafond

End Sub

code]

Cependant le code ne prend pas en compte le résultat obtenu sur la dernière ligne remplie de la colonne "dépassement plafond" mais toujours celui de la première ligne de cette colonne.

Ci joint mon tableau.

31tableauforum.zip (35.29 Ko)

Bonjour,

Il faut remplacer le code et tester :

For Each plafond In Range("G29:G" & Range("G" & Rows.Count).End(xlUp).Row)
Raja a écrit :

Bonjour,

Il faut remplacer le code et tester :

For Each plafond In Range("G29:G" & Range("G" & Rows.Count).End(xlUp).Row)

Nan c'est toujours le même problème sauf que ce coup ci c'est seulement la dernière ligne du tableau qui est toujours prise en compte...

Re,

Explique ce que tu veux obtenir comme résultat.

Raja a écrit :

Re,

Explique ce que tu veux obtenir comme résultat.

J'ai joint un fichier dans le topic


Explique ce que tu veux obtenir comme résultat.[/quote]

Ce que je veux comme résultat c'est que a chaque fois que l'on saisit un nouveau déplacement, le code vérifie que dans la ligne que j'ajoute, le résultat de la colonne "dépassement plafond" (G7;G29) soit egal a 0 ou supérieur a 0. Si le résultat = 0 alors le userform7 s'ouvre et si résultat>0 la case se colore en rouge et le userform9 s'ouvre.

Re,

Je ne vois pas d'utilisation ou appel de ce module dans la programmation. Si tu donnes pas des informations précises et claires l'aide sera difficile à apporter.

Oui excuse moi, le module que je veux faire marcher s'ouvre lorsque l'on clique sur le bouton valider de l'userform6 avec la fonction "call plafond" (mon module s'appelle "plafond") :

Private Sub CommandButton1_Click()
    If UserForm6.TextBox1.Text = "" Or UserForm6.DTPicker1.Value = "" Or UserForm6.ComboBox1.Value = "<Selectionnez>" Then
                        MsgBox "Attention !" & Chr(10) & "Vous n'avez pas tout saisi"
                     Exit Sub
                        Else
                         End If

    Range("A29").End(xlUp).Offset(1, 0).Value = UserForm6.DTPicker1.Value
    Range("B29").End(xlUp).Offset(1, 0).Value = UserForm6.ComboBox1.Value
    Range("C29").End(xlUp).Offset(1, 0).Value = UserForm6.TextBox2.Value
    Range("D29").End(xlUp).Offset(1, 0).Value = UserForm6.TextBox3.Value
    Range("F29").End(xlUp).Offset(1, 0).Value = UserForm6.TextBox5.Value
    Range("N29").End(xlUp).Offset(1, 0).Value = UserForm6.TextBox1.Value

    UserForm6.ComboBox1.Value = ""
    UserForm6.TextBox2.Value = ""
    UserForm6.TextBox3.Value = ""
    UserForm6.TextBox5.Value = ""
    UserForm6.TextBox1.Value = ""

      Unload Me

     Call plafond

            End Sub

lorsque l'on clique sur valider on arrive donc sur le module avec le code suivant :

Sub plafond()
Dim plafond As Range
 For Each plafond In Range("G29").End(xlUp)

If plafond = 0 Then
plafond.Interior.ColorIndex = 37
UserForm9.Show

     Else
     plafond.Interior.ColorIndex = 7
UserForm7.Show
     End If

     Next plafond
End Sub

c'est ce code la qui ne marche pas.

Re,

Il n'y a aucune donnée dans la colonne G !!!

Raja a écrit :

Re,

Il n'y a aucune donnée dans la colonne G !!!

c'est normal parce qu'il faut générer les données en entrant un nouveau déplacement, il faut cliquer sur le bouton "nouveau déplacement" entrer des montant et en fonction de ces montants le plafond dans la colonne G se calcul tout seul. et c'est seulement lorsque l'on a le résultat de cette colonne que je veux que le module vérifie les conditions.

Rechercher des sujets similaires à "probleme end xlup fontionne pas correctement"