DEmande de code source vb [Résolu]

Signaler
Messages postés
7
Date d'inscription
lundi 29 août 2005
Statut
Membre
Dernière intervention
13 juin 2008
-
Messages postés
7
Date d'inscription
lundi 29 août 2005
Statut
Membre
Dernière intervention
13 juin 2008
-
Bonjour,
Je ne suis  pas développeur mais parfois amenée à modifier des scripts. Je cherche désespérement le code qui me permettrait de faire ce test.

Si je trouve "(" ou ça ")" ou les deux à la fois  sur la ligne que je suis en train de lire action 1 sinon action 2
je ne m'en sors pas avec les or ou xor.  Merci de bien vouloir  m'aider, c'est pour mon travail et là ça commence à êttre très urgent.

Domy

12 réponses

Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Bonjour,

Utilise Instr (vois ce mot dans ton aide en ligne, sur ta machine, avec les exemples venant avec)
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
10
if "(" or ")" then
    action 1
else
   action 2

C'est pas du VB mais c'est le principe : un simple "or" est sufisant.

<hr size="2" width="100%" />
Working as designed
www.nikoui.fr
Messages postés
7
Date d'inscription
lundi 29 août 2005
Statut
Membre
Dernière intervention
13 juin 2008

Non j'ai testé ça , mais ça ne marche pas dans le cas où je trouve les deux sur la m^me ligne

Domy
Messages postés
794
Date d'inscription
vendredi 24 septembre 2004
Statut
Membre
Dernière intervention
19 août 2008
10
Pourtant ca devrait. La table du "or" est la suivante (désolé c'est pas très beau) :

a b "a or b"
------------
0 0    0
0 1    1
1 0    1
1 1    1

Si ça ne marche pas, ce n'est probablement pas à cause du test, mais a ce qui se passe avant ou après... Et dans ce cas :
- Il faut un bout de code pour voir ce qui se passe
- Il faut poser la question aux gens qui font du vb (donc le thème "VB", et pas " [infomsg.aspx Thèmes] / [infomsgf_CODES-SOURCES_43.aspx CodeS-SourceS] / [infomsgt_PROPOS-SITES-CODES-SOURCES_769.aspx A propos des sites CodeS-SourceS] / [infomsgt_DEMANDE-NOUVEAU-THEME-DISCUSSION-SUR-CODES-SOURCES_772.aspx Demande d'un nouveau thème de discussion sur CodeS-SourceS]" comme tu as fait ici)

<hr size="2" width="100%" />
Working as designed
www.nikoui.fr
Messages postés
7
Date d'inscription
lundi 29 août 2005
Statut
Membre
Dernière intervention
13 juin 2008

Je suis d'accord avec la table du 'OR', et tu as raison  ça devrait marcher. Je vais revoir demain à mon travail, le code qui précède et si je n'y arrive pas je poserai la question dans la bonne rubrique. Merci de ton aide, mais je ne vais jamais sur les forums et donc je 'patauge' un peu
Domy
Messages postés
7
Date d'inscription
lundi 29 août 2005
Statut
Membre
Dernière intervention
13 juin 2008

En fait dans le code qui précède , j'utilise bien instr . C'est du style (mais j'ai pas le code sous les yeux en ce moment) repere1 = Instr (1, ligne, "(",0) et repère2 = Instr (1, ligne, ")",0 et le test que je veux faire
c'est
tant que je trouve repere1 ou repere 2 ou les deux à la fois (je sais ça  peut paraitre illogique, car à partir du moment ou on en trouve un quelque qu'il soit, la condition est réalisée)  , je lis ma ligne, si je ne trouve aucun de ces signes , je recopie cette ligne dans un fichier.
Lorsque je déroule le code, dans le fichier en sortie, je retrouve aussi les lignes qui contiennent les deux  [la raison pour laquelle je veux rajouter le test des 'deux à la fois => ( et ) ]
Voilà c'est pas facile à expliquer, mais c'est mon problème et ça me prend la tête.
Si tu peux m'aiser , ça serait vraiment sympa
Domy
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
38
Il n'y a pas de raison que ça ne marche pas.

If (InStr(ligne,"(")>0) OR (InStr(ligne,")")>0) then
    Action1
Else
    Action2
End If

Si ceci ne marche pas c'est que ton problème vient d'ailleurs et pas de ce test

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
7
Date d'inscription
lundi 29 août 2005
Statut
Membre
Dernière intervention
13 juin 2008

Je vais tester demain,  mais je ne comprends pas la subtilité par rapport à mon code ou celui de Nikoui , (Peux-tu m'expliquer? ) en tout cas merci, je te tiens au courant dès  demain  matin  (stp reconnecte toi) et si ça ne marche pas je mets en ligne demain mon code avec bcp plus d 'explications, tu trouveras peut être la faille !
Dans tous les cas, merci d'avoir répondu!
Domy
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
38
Il n'y a aucune subtilité (peut-etre le test >0) et ce code marche.

Si ce n'est pas le cas chez toi, c'est que ton problème vient d'ailleurs, peut-etre dans la fonction de copie de la ligne dans ton fichier, ou autre.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
7
Date d'inscription
lundi 29 août 2005
Statut
Membre
Dernière intervention
13 juin 2008

J'ai avancé depuis hier,  le code correspond bien à ce que j'attends mais voilà maintenant, impossible de sortir , je boucle sur la
ligne msgbox "plusde()", aurais-tu une idée? d'avance Merci!

Do Until objFile.AtEndOfStream
   ligne = objFile.ReadLine
   msgbox "cherche ligne"    & ligne
   retVal = Instr(1, ligne, datasourceu0 , 0)
  
       ' If retVal <> 0 Then
        'msgbox "trouvé ligne"
           '  'ligne = objFile.ReadLine
           repere = "false"



        If (InStr(ligne,datasourceu0)>0)  then




          ligne = objFile.ReadLine
          msgbox "ligne dans data" & ligne
          repere = "true"
           do until repere = true
           'msgbox "trouvé ligne"
         If (InStr(ligne,"(")>0) OR (InStr(ligne,")")>0) then
         msgbox "trouve()" & ligne
                   msgbox      "on ne recopie"
             ligne = objFile.ReadLine
  ' Next
     else
     msgbox "plusde()"
     repere = "false"
         
  end if
    loop 
 
        Else
          msgbox "on ecrit"  & ligne
   f.Write ligne
       f.write Chr(13) & Chr(10)                
        End If




Loop





Domy
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
38
Forcément, la condition de sortie de ta seconde boucle est repere= True, or non seulement repere n'est jamais mis à True, mais en plus tu le force justement à False lorsque justement tu affiche msgbox "plus de ()"

---- Sevyc64  (alias Casy) ---- <hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
7
Date d'inscription
lundi 29 août 2005
Statut
Membre
Dernière intervention
13 juin 2008

Je me suis aperçue de mon erreur cet après midi, tout fonctionne nikel maintenant. Encore Merci de ton  aide et de ta réactivité.

Domy