Problème conditions doubles & while sans wend

lulu93 -  
 lulu93 -
Bonjour,
voila je suis débutant en vba, et je souhaiterais faire une programmation sur vb pour un tableau qui est le suivant:

nom	age	fac	appréciaton
fred	   20	 paris	
anna	 22	   lille	
lulu	    23	    nice	

voila en fait il faut que j'associe 2 conditions (age et fac) pour avoir une appréciation donnée, c'est à dire par exemple, si age=20 et fac =paris alors appréciation= bien. Dans vb j'ai essayé la programmation suivante, et j'ai toujours une meme erreur: while sans wend

Sub calcul1()

Dim age As Single, fac As String, i As Integer
i = 2
age = Sheets("Feuil2").Cells(i, 2)
fac = Sheets("Feuil2").Cells(i, 3)

While Not IsEmpty(Sheets(Feuil2).Cells(i, 2))

If (Sheets("Feuil2").Cells(i, 2)) = 20 Then
If (Sheets("Feuil2").Cells(i, 3)) = paris Then
Sheets("Feuil2").Cells(i, 4) = "bien"


ElseIf (Sheets("Feuil2").Cells(i, 2)) = 23 Then
If (Sheets("Feuil2").Cells(i, 3)) = lille Then
Sheets("Feuil2").Cells(i, 4) = "pas bien"

Else
Sheets("Feuil2").Cells(i, 4) = "non concerné"
End If
i = i + 1
Wend

End Sub
j'espère que mon problème est compréhensible,et vous remercie d'avance pour toute aide.

13 réponses

fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
Salut,

Voici, ce qui arrive quand on indente pas son code ;).

Sub calcul1()

   Dim age As Single, fac As String, i As Integer
   i = 2
   age = Sheets("Feuil2").Cells(i, 2)
   fac = Sheets("Feuil2").Cells(i, 3)

   While Not IsEmpty(Sheets(Feuil2).Cells(i, 2))

    If (Sheets("Feuil2").Cells(i, 2)) = 20 Then
        If (Sheets("Feuil2").Cells(i, 3)) = paris Then
            Sheets("Feuil2").Cells(i, 4) = "bien"
        EndIf
    ElseIf (Sheets("Feuil2").Cells(i, 2)) = 23 Then
        If (Sheets("Feuil2").Cells(i, 3)) = lille Then
            Sheets("Feuil2").Cells(i, 4) = "pas bien"
        Else
            Sheets("Feuil2").Cells(i, 4) = "non concerné"
        End If
    End if
    i = i + 1
    Wend

End Sub


Cdt
0
lulu93
 
salut,
je viens de corriger mais il me sort une autre erreur: erreur execution 13 incompatibilité de type
help please, et merci pour ta réponse
0
lami20j Messages postés 21644 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

ce n'est pas plutot

 If (Sheets("Feuil2").Cells(i, 3)) = "paris" Then

If (Sheets("Feuil2").Cells(i, 3)) = "lille" Then
??
0
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
lami20j
If (Sheets("Feuil2").Cells(i, 3)) = "paris" Then

If (Sheets("Feuil2").Cells(i, 3)) = "lille" Then


Si tout à fait, erreur d'inattention. On n'échappe pas à ton coup d'oeil lol. Bien vu.

Sub calcul1()

   Dim age As Single, fac As String, i As Integer
   i = 2
   age = Sheets("Feuil2").Cells(i, 2)
   fac = Sheets("Feuil2").Cells(i, 3)

   While Not IsEmpty(Sheets(Feuil2).Cells(i, 2))

    If (Sheets("Feuil2").Cells(i, 2)) = 20 Then
        If (Sheets("Feuil2").Cells(i, 3)) = "paris" Then
            Sheets("Feuil2").Cells(i, 4) = "bien"
        EndIf
    ElseIf (Sheets("Feuil2").Cells(i, 2)) = 23 Then
        If (Sheets("Feuil2").Cells(i, 3)) = "lille" Then
            Sheets("Feuil2").Cells(i, 4) = "pas bien"
        Else
            Sheets("Feuil2").Cells(i, 4) = "non concerné"
        End If
    End if
    i = i + 1
    Wend

End Sub

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lulu93
 
salut,
je viens de corriger, mais je vous assure c'est toujours pareil,
ça me rend malade,
mais merci pour vos réponses
0
lami20j Messages postés 21644 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
Salut,

mais je vous assure c'est toujours pareil,

peut être qu'il faut afficher le code entier pas seulement la fonction
0
lulu93
 
salut,
lami20j
je ne comprends pas ce ke tu entends par code.
si tu pouvais juste un peu plus m'expliquer....?
merci
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Bonsoir,

Ce serait mieux si tu disais en quelle ligne tu as l'erreur...

Tes ages sur ta feuille sont bien numériques et pas textes ?
Essaie de corriger ta feuille si besoin ou remplace
If (Sheets("Feuil2").Cells(i, 2)) = 20 Then
par If CInt(Sheets("Feuil2").Cells(i, 2)) = 20 Then (ou CDbl(...) )
pareil pour l'autre test

eric
0
lulu93
 
bonsoir eriiic
justement vb ne me montre pas sur quelle ligne se situe l'erreur, mais je viens d'essayer ce tu m'as conseillé et j'ai tout vérifié.
le résultat reste inchangé.
je te remercie énormément quand meme.
0
fiddy Messages postés 11653 Date d'inscription   Statut Contributeur Dernière intervention   1 847
 
lulu93
"Vb ne montre pas sur quelle ligne se situe l'erreur".

Tu utilises le débuggeur de Vb qui est très bien. Et tu sauras d'où vient l'erreur.

Cdt
0
lulu93
 
Bonsoir,
je viens d'essayer le débuggeur, que je connaissais pas, et il me semble que la procédure coince à partir de while not isempty. le tableau est bien installé sans aucune ligne ou colonne intermédiaire sur la feuil2.
est ce bien la bonne instruction...?
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Si tu exécutes en pas à pas (tu valides chaque ligne du code par F8) tu peux voir d'où vient l'erreur.
En l'occurence:
While Not IsEmpty(Sheets("Feuil2").Cells(i, 2))
il manquait les ""

eric
0
lulu93
 
bonsoir,
merci énormément à vous tous, je ne vous remercierai jamais assez. encore une de mes nombreuses erreurs d'inattention qui vous a certainement couté bcp de votre précieux temps.
encore merci à ce forum.
0