Extraire caractères au milieu d'une chaine de caractères en VBA EXCEL
cs_pnt
Messages postés21Date d'inscriptionmardi 26 décembre 2006StatutMembreDernière intervention 6 décembre 2009
-
3 déc. 2009 à 19:19
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 2013
-
6 déc. 2009 à 18:17
Bonjour,
Pourriez vous m'aider à écrire en VBA EXCEL la chose suivante:
Je souhaiterai affecter à la variable Situ la suite de caractères D05sansD10 située au milieu de la chaine de caractères suivante:
cs_pnt
Messages postés21Date d'inscriptionmardi 26 décembre 2006StatutMembreDernière intervention 6 décembre 20091 6 déc. 2009 à 15:26
Je vois que vous n'avez pas l'habitude de cultiver l'humilité.
J'essaye d'écrire du code et comme vous l'avez judicieusement remarqué je ne suis pas très fort.
Cependant, si je demande de l'aide c'est parce que j'ai précisément déjà travaillé de longues heures à faire aboutir quelques lignes de code. Il n'y pas très longtemps que je pratique et cela se voit.
Merci de me l'avoir fait remarquer au lieu de m'indiquer ce qui cloche.
J'ai changé Val par Situ sans effet.
Auriez-vous l'amabilité de m'indiquer pourquoi cela ne fonctionne pas?
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 3 déc. 2009 à 19:55
Bonjour,
J'espère que tu te rends bien compte de la manière dont tu as choisi d'exposer ta question (vachement claire !)
Et si je te répondais maintenant ainsi :
Situ = "D05sansD10"
Qu'en dirais-tu ? Hein ?
Alors : reprends calmement ta question et explose clairement à quoi, et avec quelle logique (détaillée) on doit reconnaître la sous-chaîne à extraire.
Fais cet effort minimum-là, s'il te plait !
Et ne t'énerve surtout pas ...
imagine donc que tu aies la chaine LARI_Stock_blabla_blibli_export_011209083032(1).xls
Que veux-tu extraire et sur quelles bases (exactement) ?
cs_pnt
Messages postés21Date d'inscriptionmardi 26 décembre 2006StatutMembreDernière intervention 6 décembre 20091 3 déc. 2009 à 20:17
Oui, effectivement je me rends compte que la question posée n'était très précise.
Peut on extraire la chaine de caractères située entre le deuxième _ et le 3eme _ de la chaine de caractères: LARI_Stock_D05sansD10_export_011209083032(1).xls
Cette extraction devra être affectée à la variable Situ.
En outre, la chaine de caractères dont il faut extraire les éléments à affecter à la variable, peut comporter un nombre différent de caractères placés avant le 2éme _ et placé après le 3eme _.
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 3 déc. 2009 à 20:24
Oui, bien sûr... en l'éclatant dans un array et en lisant, dans cet array, l'article correspondant à l'indice de l'array qui t'intéresse.
Comment ? En utilisant la fonction Split, que je t'invite à examiner dans ton aide en ligne (aide VBA) sur ta machine. Elle est dotée d'exemples clairs.
Vous n’avez pas trouvé la réponse que vous recherchez ?
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 6 déc. 2009 à 14:56
JUe vois que :
- 1 - tu as (???? ) ouvert ton aide en ligne sur la fonction Split !
- 2 - que tu as bien "pigé" l'exemple que je t'avais montré !
Tu vas te réeiller un peu, oui ? au lieu de recopier/coller (sans la moindre analyse, y compris en ce qui conbcerne la variable rang de l'exemple donné) ???
Et tu peux m'exposer (j'attends) quelle valeur aurait rang - 0, si ce n'est celle de rang ?
Reviens en nous montrant que tu sais au moins analkyser un peu ce qui t'est montré !
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 6 déc. 2009 à 15:00
Ah opui ... Et tu n'as (en outre) appâremment pas encore appris que Val est un mot réservé (une fonction) ...
Bref ... voilà qui fait beaucoup (pour peu et facile à comprendre, pourvu que l'on aît envie de développer et qu'on ne confonde pas cet art avec celui d'une simple copie de code).
Désolé d'avoir à te le dire (vraiment désolé).
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 6 déc. 2009 à 16:30
Aurais-tu celle (d'humilité et de sagesse), pour commencer, de me montrer le code de déclaration de la variable rang et la valeur que tu lui as attribuée ?
Il est carrément impossible, sans voir ces 2 lignes essentielles de code, de répondre valablement à ta surprenante question.
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 6 déc. 2009 à 17:47
De surcroît :
Je te cite
LARI_Stock_D01sansD10_export_011209083032(1).xls
J'espérai que le code suivant affecterait à Val la valeur D01sansD10
Val = Split(ActiveCell.Value, " ")(rang - 0)
Mais la valeur actuelle de Val est:
LARI
Ce que tu dis là est littéralement impossible.
Si (comme je te l'avais demandé), tu avais ouvert ton aide en ligne sur la fonction split (c'était un geste minimum, surtout pour un débutant), tu aurais découvert que l'array généré -ta variable Val ici.... à rebaptiser... - ne risquait pas d'éclater par rapport au séparateur espace (inexistant dans ta chaîne)...
Et d'après toi (et après, j'insiste, avoir lu enfin ce que t'expose l'aide en ligne sur la fonction split) : quel pourrait être le fameux séparateur que tu dois utiliser ? Celui qui scinde ta chaîne en polusieurs sous-chaines ? Pas la moindre petite idée ?
Ce n'est donc pas LARI, que tu affirmes avoir eu en retour, mais la chaîne entère, telle qu'elle était !