[résolu] petit coup de pouce pour finaliser une ligne d'instruction VBA (extraction)

stephsteph

XLDnaute Occasionnel
Bonjour,

J'ai déjà une macro et des instructions qui fonctionnent bien comme par exemple

Code:
  If InStr(tablo(n, 74), "by ") <> 0 Then
   tabres(L) = "<p>blabla: <b>" & tablo(n, 74) & "</b></p>"
  L = L + 1
  Else
   tabres(L) = "<p>bloblo: <b>" & tablo(n, 74) & "</b></p>"
L = L + 1
  End If

J'ai modifié mon fichier Excel sur la colonne en question, j'ai maintenant 2 possibilités dans une cellule
1- du texte sans les caractères '[' et ']'
2- du texte avec les caractères '[' et ']', et alors ']' est l'avant dernier caractère, le dernier étant ')'

Je voudrais pouvoir prendre la totalité du contenu de la cellule si c'est du type 1 et seulement le texte SAUF ce qui est entre '[' et ']' si c'est du type 2.

Je dois donc modifier une série de code de ma macro...

J'ai essayé d'avancer un peu avec
Code:
  If InStr(tablo(n, 74), "[") <> 0 Then
   tabres(L) = "<p><b>" & Mid(tablo(n, 74), "["),  & ")</b></p>"
  L = L + 1
  Else
   tabres(L) = "<p><b>" & tablo(n, 74) & "</b></p>"
L = L + 1
  End If

Mais évidemment y a un souci que je ne situe pas

Un petit coup de pouce? SVP , (note : il y a des questions similaires sur Internet mais ici la question est en creux (je ne veux pas le texte variable entre '[' et ']') et le type de code que j'ai avec les variableS tablo et tabres est plus élaboré (et dépasse mes compétences... merci à Pierre)

Merci, Steph
 
Dernière édition:

stephsteph

XLDnaute Occasionnel
Re : un petit coup de pouce pour finaliser une ligne d'instruction VBA (extraction)

Oui, camarchepas, merci, ton code, je suis sûre qu'il marche...
mais mon souci c'est de le faire marcher avec le type de code que j'ai et dont j'ai donné un extrait,
Car cela s'inscrit dans une longue macro.
A+
Steph
 

camarchepas

XLDnaute Barbatruc
Re : un petit coup de pouce pour finaliser une ligne d'instruction VBA (extraction)

Bonjour ,

A priori cela ressemble à un retraitement de fichier Html ou XML ,

, je t'ai simplement envoyé un code comme toi tu nous en as montré un . A adapter , mais bon ...

un petit fichier avec ce que tu as avant , ce que tu veux aprés, serait surement plus utilie , pour adapter mon code à ton cas de figure .
 

stephsteph

XLDnaute Occasionnel
Re : un petit coup de pouce pour finaliser une ligne d'instruction VBA (extraction)

Rebonjour
Et merci de ta réponse rapide.
C'est toujours difficile de communiquer.
Je reprend en espérant que ce sera mieux.
J'ai déjà une longue macro pour c'est vrai une transcription en html.
Elle fonctionne ligne par ligne avec tablo et tabres.
Avant je demandais si la cellule xls commençait par "By", alors le traitement était blabla ou bloblo.
Maintenant j'ai changé (il n'y a plus de "By" éventuel au début) le contenu de la cellule (pour chaque ligne) et la diiférenciation n'est plus "By" mais la présence ou non de '[' et ']' (et pas au début), et alors le traitement est de prendre la totalité du contenu de la cellule ou bien seulement le texte mais sans les caractères '[' et ']' et entre les 2.
Je crois que tu as bien compris pour ton example si je lis bien ton code.
La réponse que j'attends serait quelque chose comme (mais je ne suis pas du tout compétente, c'est sans doute n'importe quoi, juste pour te montrer):

Code:
If InStr(tablo(n, 74), "[") <> 0 Then
    tabres(L) = "<p><b>" & Replace(tablo(n, 74), Split(Split(tablo (n,74), "[")(1), "]")(0), "") & ")</b></p>"
   L = L + 1
   Else
    tabres(L) = "<p><b>" & tablo(n, 74) & "</b></p>"
 L = L + 1
   End If

Est-ce que c'est plus clair ?

Merci de ta compréhension
A+, Steph
 

camarchepas

XLDnaute Barbatruc
Re : un petit coup de pouce pour finaliser une ligne d'instruction VBA (extraction)

Bon ,

Cela fonctionne si à l'intérieur des crochets , il n'y a pas d'autre crochet

Code:
If InStr(tablo(n, 74), "[") <> 0 Then
     tabres(L) = "<p><b>" & Replace(Replace(Replace(tablo(n, 74), Split(Split(tablo(n, 74), "[")(1), "]")(0), ""), "[", ""), "]", "") & ")</b></p>"
    L = L + 1
    Else
     tabres(L) = "<p><b>" & tablo(n, 74) & "</b></p>"
  L = L + 1
End If
 

stephsteph

XLDnaute Occasionnel
Re : un petit coup de pouce pour finaliser une ligne d'instruction VBA (extraction)

Oh c'est tout à fait çà.
Merci camarchepas, je vais tester ce weekend grandeur nature et je te tiens au courant.
Juste une question... c'est normal que dans ton nouveau code Replace soit répété 3 fois ???
A+, Steph
PS: qui est ce Nono dans ta signature... Luigi Nono?
 

stephsteph

XLDnaute Occasionnel
Re : un petit coup de pouce pour finaliser une ligne d'instruction VBA (extraction)

Bonjour camarchepas,

C’était presque OK, il y a eu un micro-souci, je me suis retrouvée avec un espace en trop avant la parenthèse finale, mais après quelques modifs, j’ai pu finaliser.
Voici la dernière version.
If InStr(tablo(n, 74), " [") <> 0 Then
tabres(L) = "<p>Systematic remarks (with history): <b>" & Replace(Replace(Replace(tablo(n, 74), Split(Split(tablo(n, 74), " [")(1), "]")(0), ""), " [", ""), "]", "") & "</b></p>"

Rien à voir avec ta formule qui marche bien, mais avec un espace de texte nécessaire dont il a fallu tenir compte.
« Bon » voilà c’est résolu.
Merci beaucoup à toi !
Tu es vraiment sympa
Steph
 

Discussions similaires

Réponses
5
Affichages
178
Réponses
7
Affichages
318

Statistiques des forums

Discussions
312 177
Messages
2 085 973
Membres
103 073
dernier inscrit
MSCHOE16