Circus Posté(e) le 17 octobre 2007 Posté(e) le 17 octobre 2007 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") ThenRESULT = "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") ThenRESULT = "Verifier Largeur" Merci d'avance. [Edité le 17/10/2007 par Circus] Autocad Architecture Inventor 3d Viz Paint
sechanbask Posté(e) le 17 octobre 2007 Posté(e) le 17 octobre 2007 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 Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
Circus Posté(e) le 17 octobre 2007 Auteur Posté(e) le 17 octobre 2007 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
mdsv31 Posté(e) le 17 octobre 2007 Posté(e) le 17 octobre 2007 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
Circus Posté(e) le 17 octobre 2007 Auteur Posté(e) le 17 octobre 2007 Ben mon cas les "" au niveau de ma condition ca ne change rien. Par contre en effetRESULT =210+3etRESULT="210+3"ca donnera 213 et 210+3 Autocad Architecture Inventor 3d Viz Paint
sechanbask Posté(e) le 17 octobre 2007 Posté(e) le 17 octobre 2007 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'actionelseif'actionend 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 Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
Circus Posté(e) le 18 octobre 2007 Auteur Posté(e) le 18 octobre 2007 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 Stcase ("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
sechanbask Posté(e) le 18 octobre 2007 Posté(e) le 18 octobre 2007 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 Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
Circus Posté(e) le 18 octobre 2007 Auteur Posté(e) le 18 octobre 2007 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
sechanbask Posté(e) le 18 octobre 2007 Posté(e) le 18 octobre 2007 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 Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
Circus Posté(e) le 19 octobre 2007 Auteur Posté(e) le 19 octobre 2007 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
sechanbask Posté(e) le 19 octobre 2007 Posté(e) le 19 octobre 2007 ç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 Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
Circus Posté(e) le 19 octobre 2007 Auteur Posté(e) le 19 octobre 2007 en faite, ca fait comme si c'était pas un code...juste du texte. Je vais me reposer ce weekend. Autocad Architecture Inventor 3d Viz Paint
Circus Posté(e) le 23 octobre 2007 Auteur Posté(e) le 23 octobre 2007 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
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant