IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

vb: remplacer des valeurs


Sujet :

VB 6 et antérieur

  1. #1
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut vb: remplacer des valeurs
    Bonjour.

    Je voudrais savoir comment remplacer n'importe chaîne de caractères comprise entre 2 balises:

    ex :
    text = replace(montexte,'<chaîne 1>',"")
    text = replace(montexte,'<chaîne 2>',"")

    ce qui pourrait donner text = replace(montexte,'<n'importe quelle chaîne>',"")

    Merci

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    En utilisant une variable tableau, ça ne marcherait pas ?

    Juste une idée comme ça...

  3. #3
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Est ce que je peux avoir un peu plus de détail?

  4. #4
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Hello!
    Bon, je sais qu'elle n'existe pas sous 97, mais après, pour les gens qui sont à jour de version ( ), la fonction Replace existe en VBA.
    Elle permet de remplacer, dans une chaine de caractères C, une chaine A par une chaine B, en commençant au n ième caractère:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    C = Replace(C,A,B,n)

  5. #5
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Hello MegaSel,

    Je crois que philippef sait ça...

    Ce n'est qu'une suggestion, si ce n'est pas bon, c'est que je n'ai pas compris le pb...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MonTableau = Array("chaîne 1", "chaîne 2","chaîne 3","chaîne 4", "etc") 
    i = 3 
    text = replace(montexte,MonTableau(i),"")

    Exemple dans lequel tu vires "chaîne 4" de montexte... si "chaîne 4" existe.

    Ai-je bien compris ?

    A+

  6. #6
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    pour une chaîne donnée
    "il pleut < mais la télé fonctionne > et ma copine a mal à la tête
    <mais il y a france culture>"
    si j'ai bien compris tu veux remplacer ce qui est entre les balises par
    une autre chaîne
    le problème est à peu près de savoir si c'est balise comprise
    je pense que c'est hors balise
    il suffit d'écrire une fonction

    repérer la position du premier < avec la fonction instr
    repérer la position du premier > avec la fonction instr
    réecrire la lachaine
    nouvelle chaine=left(instr(1,exchaine,"<")) & chainederemplacement &
    rigt(exchaine, lenexchaine - instr(1,exchaine,">")

    si les balises peuvent se répter plusieurs fois dans la chaine
    on remplacera le 1 par la position du dernier < rencontré

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Points : 374
    Points
    374
    Par défaut
    Bonsoir,
    Ce code fonctionne très bien sur un fichier .txt, je ne sais pas sur un fichier .HTM. Tu peux faire l'essai.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Private Sub Command1_Click()
    Dim texte
    Open "c:\Text1.txt" For Input As #1
    texte = Input(LOF(1), 1)
    Close #1
    texte = Replace(texte, "<", "")
    Open "c:\Text1.txt" For Output As #1
    Print #1, texte
    Close #1
    texte = Replace(texte, ">", "")
    Open "c:\Text1.txt" For Output As #1
    Print #1, texte
    Close #1
     
    End Sub
    jpleroisse

  8. #8
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par leroissejp
    Bonsoir,
    Ce code fonctionne très bien sur un fichier .txt, je ne sais pas sur un fichier .HTM. Tu peux faire l'essai.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Private Sub Command1_Click()
    Dim texte
    Open "c:\Text1.txt" For Input As #1
    texte = Input(LOF(1), 1)
    Close #1
    texte = Replace(texte, "<", "")
    Open "c:\Text1.txt" For Output As #1
    Print #1, texte
    Close #1
    texte = Replace(texte, ">", "")
    Open "c:\Text1.txt" For Output As #1
    Print #1, texte
    Close #1
     
    End Sub
    jpleroisse
    Je suis pas sur qu'il effectue l'opération souhaité..

    • Ouverture fichier "text1.txt" en lecture
      charge contenu dans variable texte
      ferme fichier "texte1.txt"
      Supprime les "<" de la variable texte..
      Ouverture fichier "text1.txt" en ecriture
      ecrit variable texte dans fichier text1
      ferme fichier text1
      Supprime les ">" de la variable texte
      Ouverture fichier "text1.txt" en ecriture
      ecrit variable texte dans fichier text1
      ferme fichier text1

    ..donc en fait il supprime les < et > du fichier donnée en paramétre, et de plus il ouvre 2 fois en écriture ce fichier ...


    .

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Points : 374
    Points
    374
    Par défaut
    Bonsoir,
    Effectivement le fichier est ouvert 2 fois, la première il supprime tous les < et la deuxième il supprime tous les >.
    Ce n'est pas possible de faire l'opération en une seule fois
    Crée un fichier d'exemple, mets y des < et > avec entre une données et tu verras que celà va très vite et marche très bien.

    jpleroiss

  10. #10
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    Citation Envoyé par leroissejp
    Bonsoir,
    Effectivement le fichier est ouvert 2 fois, la première il supprime tous les < et la deuxième il supprime tous les >.
    Ce n'est pas possible de faire l'opération en une seule fois
    Crée un fichier d'exemple, mets y des < et > avec entre une données et tu verras que celà va très vite et marche très bien.

    jpleroiss
    bon ben je crois qu'on va attendre que philippef repasse pour nous dire ce qu'il veu exactement...

    PS : pour ce qui est de l'écriture dans le fichier elle peu ce faire en une seule fois ... suffit de faire les 2 remplacement dans la variable texte .. avant de l'écriture... l'écriture intermédiare (entre les 2 remplacements) n'as pas de raison d'être...

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 290
    Points : 374
    Points
    374
    Par défaut
    Bonsoir,
    Effectivement bbil, en placant les deux formules dans texte celà fonctionne également.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Private Sub Command1_Click()
    Dim texte
    Open "c:\Text1.txt" For Input As #1
    texte = Input(LOF(1), 1)
    Close #1
    texte = Replace(texte, "<", "")
    texte = Replace(texte, ">", "")
    Open "c:\Text1.txt" For Output As #1
    Print #1, texte
    Close #1
    jpleroisse

  12. #12
    Membre averti
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 898
    Points : 442
    Points
    442
    Par défaut
    Merci à tous, je vais regarder tout ça et je reviens

  13. #13
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Histoire d'en remettre une petite couche, un sujet relativement similaire a été traité il y a peu de temps : http://www.developpez.net/forums/vie...ghlight=balise

Discussions similaires

  1. [AC-2000] Remplacer des valeurs par des autres
    Par l'coy dans le forum Access
    Réponses: 4
    Dernier message: 29/03/2011, 19h00
  2. Réponses: 3
    Dernier message: 09/12/2010, 13h38
  3. [AC-2002] Remplacement des valeurs par des Max(Valeurs)
    Par parab dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 06/03/2010, 08h45
  4. Réponses: 5
    Dernier message: 12/01/2007, 21h40
  5. [MS SQL] Remplacer des valeurs dans plusieurs tables
    Par salmoliv dans le forum Langage SQL
    Réponses: 3
    Dernier message: 04/10/2006, 17h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo