Boucle If sous VB

Résolu/Fermé
ethomas Messages postés 2 Date d'inscription mercredi 20 juin 2007 Statut Membre Dernière intervention 20 juin 2007 - 20 juin 2007 à 11:03
 sofiane - 18 juil. 2008 à 13:43
Bonjour,
J'ai réalisé une boucle If qui devrait marcher sous VB(toutes celles que j'ai faites sur le mm modèle fonctionnent) mais elle ne tient pas sur une ligne, du coup ça bug. Pourriez vous me dire comment faire pour faire comprendre à l'instruction d'aller à la ligne suivante ?
Merci beaucoup

PS : je débute, alors je ne suis pas trés trés douée...

13 réponses

sfel Messages postés 1640 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 15 juillet 2009 430
20 juin 2007 à 11:07
ce type de code marche très bien sous VB
regarde un peu les tutoriaux ici :
https://vb.developpez.com/cours/

If AgeFrederic > 30 Then
     'Instructions si la condition est vraie
     msg = "Frédéric a plus de 30 ans"
     MsgBox msg
ElseIf AgeFrederic >25 Then
     'Instructions si la condition est vraie
     msg = "Frédéric a plus de 25 ans"
     MsgBox msg
ElseIf AgeFrederic >20 Then
     'Instructions si la condition est vraie
     msg = "Frédéric a plus de 20 ans"
     MsgBox msg
ElseIf AgeFrederic > 15 Then
     'Instructions si la condition est vraie
     msg = "Frédéric a plus de 15 ans"
     MsgBox msg
Else
     'Instructions si la condition est fausse
     msg = "Frédéric a 15 ans ou moins de 15 ans"
     MsgBox msg
End If
9
ethomas Messages postés 2 Date d'inscription mercredi 20 juin 2007 Statut Membre Dernière intervention 20 juin 2007
20 juin 2007 à 11:20
J'ai testé et ça marche nickel!
Merci beaucoup!!!!
0
ben par exemple dans mon code test j'ai:
Sub f()
Dim mycell As Object
Dim k As Integer, l As Integer
mycell = Application.InputBox("choisir une cellule", "choix d'une cellule")
k = mycell.Row
l = mycell.Column
MsgBox "k=" & k & "l=" & l
End Sub



du coup je fais comme ça:
Sub g()
Dim k As Integer, l As Integer
k = InputBox("indice ligne", "choix case", 1)
l = InputBox("indice colone", "choix case", 1)
MsgBox "k=" & k & " & " & "l=" & l
End Sub

Le premier ne marche pas. Mais moi j'aimerai cliquer sur une cellule au lieu d'entrer les indices. Du coup ça vient soit de la declaration de mycell, soit de l'application Application.InputBox qui ne marche pas pour les objets...(???)
1
(rien à voir ms ds le premier code c en fait:
MsgBox "k=" & k & " & " & "l=" & l )
0
zavenger Messages postés 811 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 20 avril 2012 161
18 juil. 2008 à 12:01
il faut que tu respecte la syntaxe

Set myCell = Application.InputBox(prompt:="Select a cell", Type:=8)

mycell est un objet et DOIT etre affecte avec un Set
Type = 8 permet de verifier que la selection est bien un range
0
ok g compris, merci bcp
1
sfel Messages postés 1640 Date d'inscription lundi 18 juin 2007 Statut Membre Dernière intervention 15 juillet 2009 430
20 juin 2007 à 11:26
de rien, met l'option résolu devant ton titre (si tu reviens)
0

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

Posez votre question
bonjour je suis un debutant en vb ,j'aimerai savoir comment on programme avec un if?
0
galsene84 Messages postés 1 Date d'inscription lundi 30 juin 2008 Statut Membre Dernière intervention 30 juin 2008
30 juin 2008 à 12:06
Bonjour je suis débutant en vb . j'ai un ptit problème dans mon if .O fait jveu mettre if a=b and b=c then ...
mets le pc beugue directement et ché pas pk. Merci davance pour votre aide!!
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
30 juin 2008 à 12:16
bonjour,

Mets ton bout de code pour qu'on puissse se faire une idée ... merci

;o)
0
Bonjour à tous,

pour ma part je n'arrive pas à imbriquer plusieurs boucles if, avec une seule ça roule, mais avec plusieurs on dirait qu'une seule est prise en compte. Ca ne marche pas tout à fait comme du langage C a priori, quelqu'un pourrait-il m'expliquer mon problème de syntaxe? voici une version simplifiée de mon problème :

Function a(x)
If 0 < x <= 1 Then
a = 1
ElseIf 1 < x <= 2 Then
a = 2
Else
a = 0
End If
End Function

Cela donne toujours a=1.

Merci.
0
Steefif Messages postés 485 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 15 février 2013 19
9 juil. 2008 à 14:51
peux tu mettre ton vrai code stp?
pke pour le moment ce pseudo code m'a l'air corect.
il y a peut etre une petite pichenette quelque part...
0
zavenger Messages postés 811 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 20 avril 2012 161
9 juil. 2008 à 14:54
bonjour les tests ne s'ecrivent pas comme cela:

If 0 < x <= 1 Then

doit s'ecrire
if (x >0) and (x<=1) then

...
0
Steefif Messages postés 485 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 15 février 2013 19
9 juil. 2008 à 14:55
d'ou l'interet de voir le code...
0
Bonjour tout le monde, merci de m'avoir répondu. En fait j'ai trouvé ça aussi hier, ce langage n'accepte pas les encadrements, j'ai essayé :

if x>i-1 and x<i then (sans parenthèse ça marche)
a=i
...

Voilà merci beaucoup, bonne continuation.


ps: j'abuse peut être un peu mais si qqn sait comment on fait pour que cette fonction soit toujours utilisable(sur la version 2007) je suis preneur.
0
Steefif Messages postés 485 Date d'inscription lundi 7 juillet 2008 Statut Membre Dernière intervention 15 février 2013 19
10 juil. 2008 à 11:20
dsl je connais pas du tout excel 2007
ai pire imbrique deux fonctions if
sinon c'ets bien que tu aies trouvé!
bonne continuation, et ptet a bientot!
0
Salut, dsl d'avoir encore besoin 2 te déranger, saurais tu par hasard coment on peut, dans un code sous vba, faire un genre 2 pause pour demander à l'utilisateur de choisir une cellule?

Pour l'instant j'utilise 2 inputbox au début pour demander les coordonnées de la cellule, mais ce serait tellement plus simple de cliquer directement, au lieu de convertir mentalement l'indice colonne FO en 171...

merci beaucoup!!
0
zavenger Messages postés 811 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 20 avril 2012 161 > sofiane
17 juil. 2008 à 15:01
Set myCell = Application.InputBox( _
prompt:="Select a cell", Type:=8)
NoLigne=myCell.Row
NoCol=myCell.Column
0
sofiane > zavenger Messages postés 811 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 20 avril 2012
17 juil. 2008 à 15:07
Ah j me doutait bien qu'il fallait utiliser une inputbox mais je ne savais vraiment pas comment. Merci beaucoup en tout cas c du rapide. Bonne soirée
0
sofiane > zavenger Messages postés 811 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 20 avril 2012
18 juil. 2008 à 11:19
Salut,

en fait ce code ne marche pas on dirait que mycell n'est pas reconnu comme une celllule (déclaré comme objet pourtant, et ça marche pour des entiers par contre) ou alors il faut utiliser une autre fonction, ou une propriété de inputbox, je ne sais pas...Si tu ne vois pas d'où viens le pb ce n'est pas bien grave je l'ai déjà contourné, mais j'aimerais savoir qd mêm.

merci
0
zavenger Messages postés 811 Date d'inscription vendredi 29 février 2008 Statut Membre Dernière intervention 20 avril 2012 161 > sofiane
18 juil. 2008 à 11:32
qu'est ce qui ne marche pas. Le code te fourni (la premiere ligne) un objet de type range.
Les 2 autres te donne les lignes et colonnes de la case selectionnée (code testé sur ma machine)
0