Extraire caractères au milieu d'une chaine de caractères en VBA EXCEL

Signaler
Messages postés
21
Date d'inscription
mardi 26 décembre 2006
Statut
Membre
Dernière intervention
6 décembre 2009
-
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
-
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:

LARI_Stock_D05sansD10_export_011209083032(1).xls

Merci pour votre aide
A voir également:

13 réponses

Messages postés
21
Date d'inscription
mardi 26 décembre 2006
Statut
Membre
Dernière intervention
6 décembre 2009
1
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?

Merci pour votre aide
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
5
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) ?
Messages postés
21
Date d'inscription
mardi 26 décembre 2006
Statut
Membre
Dernière intervention
6 décembre 2009
1
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 _.

Merci d'avoir bien voulu m'aider.
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
5
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.
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
5
Juste un coup de pouce (et à toi de comprendre ... c'est vraiment simple) :
exemple :
lachaine = "aaaa bb ccc ddd"
rang = 2 ' en te rappelant que l'array a 0 pour premier indice
MsgBox Split(lachaine, " ")(rang - 1)
Messages postés
21
Date d'inscription
mardi 26 décembre 2006
Statut
Membre
Dernière intervention
6 décembre 2009
1
Merci pour votre aide

Cordialement
Messages postés
21
Date d'inscription
mardi 26 décembre 2006
Statut
Membre
Dernière intervention
6 décembre 2009
1
Bonjour,

Malgré votre aide je ne parviens pas à récupérer les caractères désirés.

Positionné sur la cellule dont la valeur est:
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

Où me suis je trompé?

Merci pour votre aide
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
5
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é !
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
5
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é).
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
5
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.
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
5
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 !
Messages postés
21
Date d'inscription
mardi 26 décembre 2006
Statut
Membre
Dernière intervention
6 décembre 2009
1
Bonsoir,

compte tenu de votre attitude, je n'ai rien à faire sur ce forum.

Merci quand même.

Cordialement
Messages postés
1566
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
5 avril 2013
5
Pas de quoi.
Compte tenu de tout ce qui précède (et après relecture de tout) : je partage très largement ton avis.
Bonne chance.