DEmande de code source vb

Résolu
cs_domy34 Messages postés 7 Date d'inscription lundi 29 août 2005 Statut Membre Dernière intervention 13 juin 2008 - 12 juin 2008 à 18:08
cs_domy34 Messages postés 7 Date d'inscription lundi 29 août 2005 Statut Membre Dernière intervention 13 juin 2008 - 13 juin 2008 à 18:17
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

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
12 juin 2008 à 18:57
Bonjour,

Utilise Instr (vois ce mot dans ton aide en ligne, sur ta machine, avec les exemples venant avec)
3
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
12 juin 2008 à 18:20
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
0
cs_domy34 Messages postés 7 Date d'inscription lundi 29 août 2005 Statut Membre Dernière intervention 13 juin 2008
12 juin 2008 à 18:27
Non j'ai testé ça , mais ça ne marche pas dans le cas où je trouve les deux sur la m^me ligne

Domy
0
Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
12 juin 2008 à 18:34
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
0

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

Posez votre question
cs_domy34 Messages postés 7 Date d'inscription lundi 29 août 2005 Statut Membre Dernière intervention 13 juin 2008
12 juin 2008 à 19:11
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
0
cs_domy34 Messages postés 7 Date d'inscription lundi 29 août 2005 Statut Membre Dernière intervention 13 juin 2008
12 juin 2008 à 19:23
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
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
12 juin 2008 à 20: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
0
cs_domy34 Messages postés 7 Date d'inscription lundi 29 août 2005 Statut Membre Dernière intervention 13 juin 2008
12 juin 2008 à 21:06
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
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
12 juin 2008 à 21:15
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
0
cs_domy34 Messages postés 7 Date d'inscription lundi 29 août 2005 Statut Membre Dernière intervention 13 juin 2008
13 juin 2008 à 11:56
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
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
13 juin 2008 à 12:24
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
0
cs_domy34 Messages postés 7 Date d'inscription lundi 29 août 2005 Statut Membre Dernière intervention 13 juin 2008
13 juin 2008 à 18:17
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
0
Rejoignez-nous