Aller au contenu

Probleme de syntax avec opérateur (VbScript)


Messages recommandés

Posté(e)

Bonjour,

 

J'ai un petit probleme avec "différent de" <>, ma ligne de commande fonctionne avec =

 

elseIf (St = "SAS Solaris" and la = "670") or (St = "SAS Solaris" and la = "870") or (St = "SAS Solaris" and la = "970") or (St = "SAS Solaris" and la = "1870") Then

RESULT = "Verifier Largeur"

 

Dans ce cas ca fonctionne, seulement si je met <> ca déconne, le résultat est dans tout les cas "Veririfier Largeur"

 

elseIf St = "SAS Solaris" and (la="670" or la="870" or la="970" or la="1870") Then

RESULT = "Verifier Largeur"

 

Merci d'avance.

 

[Edité le 17/10/2007 par Circus]

Autocad Architecture

Inventor

3d Viz

Paint

Posté(e)

je ne sais pas ce qu'est le VBscript mais si ça se comporte comme le VBA ou le VB :

 

 

 

1- Est-ce que tu peux poster tout ton test pour qu'on puisse vérifier s'il n'y a pas une erreur de syntaxe sur l'ensemble du test..

if blabla then
elseif
blabla
end if

 

 

2- Vu la complexité de ton test, pourquoi ne pas utiliser un select case ?

 

select case St
case "SAS Solaris"
if la = "670"
case else
end select

 

 

ou deux tests if imbriqués

 

if  St = "SAS Solaris"then
    if la = "670" or la ="870" then
    'action à réaliser
   end if
end if

 

3- Que contient la variable la ? j'ai l'impression que c'est un nombre non ? si c'est le cas, le mieux est de la mettre dans une variable de type single

 

dim la as single

et le test deviendra:

 

if la = 670 then
elseif
end if

 

le nombre sans les "...."

 

 

J'espère que ça t'aidera, sinon repost avec un peu plus de ton code..

Bon courage

 

[Edité le 17/10/2007 par sechanbask]

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Posté(e)

St = "[style]"
Lar = "[Largeurbrute]"
Vit = "[1-Vitrage]"
cl = "[Classification]"
an = "[Ancrage]"
ht = "[Hauteurbrute]"

If (St = "PA Demi DV Simple" or St = "PA Demi DV Simple + Brx" or St = "PAV DV Simple" or St = "PAV DV Simple + Brx") and (la = "990") Then
RESULT = "ERREUR LARGEUR"

elseIf (St = "PA Demi SV Simple" or St = "PA Demi SV Simple + Brx" or St = "PAV SV Simple" or St = "PAV sV Simple + Brx") and (la = "1060") Then
RESULT = "ERREUR LARGEUR"

elseIf (St = "PA Demi DV Simple" or St = "PA Demi DV Simple + Brx" or St = "PAV DV Simple" or St = "PAV DV Simple + Brx") and (Vit = "SV" or Vit = "SV Sécurit") Then
RESULT = "ERROR VITRAGE"

elseIf (St = "PA Demi SV Simple" or St = "PA Demi SV Simple + Brx" or St = "PAV SV Simple" or St = "PAV SV Simple + Brx") and (Vit = "DV" or Vit = "DV Sécurit") Then
RESULT = "ERROR VITRAGE"

elseIf cl = "Extérieure" and an = "Intérieure" Then
RESULT = "ERROR ANCRAGE"


elseIf (St = "SAS Tradi" and Lar <> "740") or (St = "SAS Tradi" and Lar <> "940") or (St = "SAS Tradi" and Lar <> "1040") or (St = "SAS Tradi" and Lar <> "1940") Then
RESULT = "Verifier Largeur"


elseIf (St = "SAS Tradi" and Ht <> "2130") or (St = "SAS Solaris" and Ht <> "2100") Then
RESULT = "Verifier Hauteur"

Else
RESULT = ""
End If

 

Alors, le probleme ce situe sur cette ligne, le résultat est toujours Verifier Largeur, alors que si je remplace <> par = ca fonctionne, le résultat est sois "" soi "Verifier Largeur"

elseIf (St = "SAS Tradi" and Lar <> "740") or (St = "SAS Tradi" and Lar <> "940") or (St = "SAS Tradi" and Lar <> "1040") or (St = "SAS Tradi" and Lar <> "1940") Then
RESULT = "Verifier Largeur"

 

Dans ce cas, l'utilisation de <> fonctionne parfaitement, j'ai pourtant repris le meme principe.

elseIf (St = "SAS Tradi" and Ht <> "2130") or (St = "SAS Solaris" and Ht <> "2100") Then
RESULT = "Verifier Hauteur"

 

 

Merci d'avance

 

[Edité le 17/10/2007 par Circus]

Autocad Architecture

Inventor

3d Viz

Paint

Posté(e)

petite question Lar est une distance (une variable numérique)

 

Si oui alors il ne faut pas les " " dans ta condition. ( Lar <> 740)

 

 

@+

MDSV31

Dessinateur Indépendant

Posté(e)

Ben mon cas les "" au niveau de ma condition ca ne change rien.

 

Par contre en effet

RESULT =210+3

et

RESULT="210+3"

ca donnera

213 et 210+3

Autocad Architecture

Inventor

3d Viz

Paint

Posté(e)

je ne sais pas si le vbscript fonctionne de la même manière que le VBA mais ton test est mal construit. Pour le test if tu n'a le droit qu'à un elseif. Donc le test complet if se construit comme ça:

 

if blabla then

'action

elseif

'action

end if

 

ou comme ça

if blabla then 'action

 

 

donc vb interprète mal ce que tu lui as donné à manger : il va toujours prendre la dernière condition. Intervertis ta condition finale avec ton avant avant dernière condition. Tu verras il va de renvoyé "RESULT = "ERROR ANCRAGE"" qui est actuellement ton avant avant dernière réponse à la condition.

 

 

à ta place je construirais ça comme ça :

 

select case St

case ("PA Demi DV Simple" or St = "PA Demi DV Simple + Brx" or St = "PAV DV Simple" or St = "PAV DV Simple + Brx"

if la = "990" Then RESULT = "ERREUR LARGEUR"

end select

 

 

et pareil pour les autres conditions. j'aimerais t'aider plus mais je ne comprend pas les tenants ni les aboutissants de ton programme, et je comprends pas ce qu'est le VBSCRIPT??? tu code ça dans quel logiciel ?

 

 

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Posté(e)

Salut,

 

Euh , le VbScript, c'est dans Autocad Architecture 2008. Je sais pas exactement ce que c'est , peut etre une version allégé ?

 

A vrai dire, je connais que If then elseif...

 

Mon but c'est de faire des étiquettes de porte ou fenêtre, avec des sécurités pour etre sur que l'on utilise la bonne porte ou bonne fenêtre. J'ai des champs a remplir et d'autre variable sont définit par le style d'objet eux memes. Donc la au niveau de mes portes, ca va m'afficher un message d'erreur en cas d'incohérence.

 

select case St

case ("PA Demi DV Simple" or St = "PA Demi DV Simple + Brx" or St = "PAV DV Simple" or St = "PAV DV Simple + Brx"

if la = "990" Then RESULT = "ERREUR LARGEUR"

end select

 

Euh ya des St= en trop ou il en manque un ?

 

Merci de m'aider en tout cas.

Autocad Architecture

Inventor

3d Viz

Paint

Posté(e)

Avec ton code, et ce que j'en ai compris, voilà ce que je te propose

 

Sub essai()
Dim st As String
Dim la As Single
Dim Result As String
Dim Vit As String
Dim Lar As Single
Dim Ht As Single
Dim cl As String
Dim an As String

st = "PA Demi DV Simple"
la = 1059

Select Case st
Case "PA Demi DV Simple", "PA Demi DV Simple + Brx", "PAV DV Simple", "PAV DV Simple + Brx"

If la = 990 Or la = 1060 Then
Result = "ERREUR LARGEUR"
End If


If Vit = "SV" Or Vit = "SV Sécurit" Then
Result = "ERROR VITRAGE"
End If

If Vit = "DV" Or Vit = "DV Sécurit" Then
Result = "ERROR VITRAGE"
End If


Case "SAS Tradi", "SAS Solaris"

If Lar <> 740 Or Lar <> 940 Or Lar <> 1040 Or Lar <> 1940 Then
Result = "Verifier Largeur"
End If



If Ht <> 2130 Or Ht <> 2100 Then
Result = "Verifier Hauteur"
End If


End Select


If cl = "Extérieure" And an = "Intérieure" Then
Result = "ERROR ANCRAGE"
End If

Debug.Print Result

End Sub

 

j'espère que tu comprendras le code pour l'adapter à tes besoins...

Bon courage

 

[Edité le 18/10/2007 par sechanbask]

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Posté(e)

Ca j'en ai absolument besoin de mettre ca :

St = "[style]"

Lar = "[Largeurbrute]"

Vit = "[1-Vitrage]"

cl = "[Classification]"

an = "[Ancrage]"

ht = "[Hauteurbrute]"

 

Sinon ca ne fonctionne pas ton code , principalement a cause de ce que j'ai mi dessus

 

Voila mon environnement de travail.

 

http://www.imagup.info/images/06/1192716953_Jeu%20de%20propriete.JPG

 

Le code une fois généré aura un nom , on peux voir sur l'image "4-Error", que je pourrai également récupéré dans un autre code en écrivant Err = "[4-Error]"

Autocad Architecture

Inventor

3d Viz

Paint

Posté(e)

c'est bizarre comme syntaxe, je ne comprends pas à quoi ça sert ça dois être particulier à VBS : alors imaginons que l'ensemble du code soit :

 

 

St = "[style]"
Lar = "[Largeurbrute]"
Vit = "[1-Vitrage]"
cl = "[Classification]"
an = "[Ancrage]"
ht = "[Hauteurbrute]"

Dim st As String
Dim la As Single
Dim Result As String
Dim Vit As String
Dim Lar As Single
Dim Ht As Single
Dim cl As String
Dim an As String

Result = ""

st = "PA Demi DV Simple"
la = 1059

Select Case st
Case "PA Demi DV Simple", "PA Demi DV Simple + Brx", "PAV DV Simple", "PAV DV Simple + Brx"

If la = 990 Or la = 1060 Then
Result = "ERREUR LARGEUR"
End If


If Vit = "SV" Or Vit = "SV Sécurit" Then
Result = "ERROR VITRAGE"
End If

If Vit = "DV" Or Vit = "DV Sécurit" Then
Result = "ERROR VITRAGE"
End If


Case "SAS Tradi", "SAS Solaris"

If Lar <> 740 Or Lar <> 940 Or Lar <> 1040 Or Lar <> 1940 Then
Result = "Verifier Largeur"
End If



If Ht <> 2130 Or Ht <> 2100 Then
Result = "Verifier Hauteur"
End If


End Select


If cl = "Extérieure" And an = "Intérieure" Then
Result = "ERROR ANCRAGE"
End If

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Posté(e)

Ca ne fonctionne pas non plus, tanpis.

 

Je verrai ca lundi a nouveau, je trouverai une solution.

 

Merci en tout cas

Autocad Architecture

Inventor

3d Viz

Paint

Posté(e)

ça te met une erreur (si oui donne moi le nombre de l'erreur et la ligne), tu ne peux pas faire de teste dans l'éditeur VBA s'il existe toujours dans autocad 2008 ?

ATEGIE - Bureau d'Études Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Posté(e)

ENFIN !

 

J'ai réussi, mais je suis qu'a moitier satisfiais du résultat puisquie je ne sais pas pourquoi ca ne fonctionner pas dés le début.

 

 

Ers="[2-ErrSty]"
Erv="[2-ErrVit]"
Erd="[2-ErrDim]"
Vit="[2-Vitrage]"
La="[Largeurbrute]"
cl="[Classification]"
an="[2-Ancrage]"
St="[style]"
Ht="[Hauteurbrute]"

If (Ers="SL" and La<>"1060") or (Ers="SB" and La<>"990") or (Erd<>"DS" and St="SAS Solaris") or (Erd<>"DT" and St="SAS Tradi") Then
RESULT="ERREUR LARGEUR"

elseIf (Ers="SB" and Erv="DV") or (Ers="SL" and Erv="SV") Then
RESULT="ERREUR VITRAGE"

elseIf cl = "Extérieure" and an = "Intérieure" Then
RESULT ="ERROR ANCRAGE"

elseIf (St="SAS Tradi" and Ht<>"2130") or (St="SAS Solaris" and Ht<>"2100") Then
RESULT = "Verifier Hauteur"

else
RESULT=""
End If

 

Je retravaillai en limitant le nombre de comparaison et en les simplifiants.

 

Voila, A+ et merci de m'avoir aidé.

Autocad Architecture

Inventor

3d Viz

Paint

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité