Macro Excel

Fermé
Pommesky - 1 oct. 2008 à 14:48
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 4 oct. 2008 à 08:58
Bonjour,
Je crée actuellement une macro sous pour Excel mais je bute sur un point :
Comment je peut faire pour sélectionner un morceau de texte contenu entre deux phrases répétitive ?
Par exemple j'ai GTC:CLOS BONLIEU 'PRV2 LOCAL TGBT'Entrée comptage'Compteur H Pleines ESCALATORS.Entrée de comptage;GTC:C:$d4'CI45.CI_Inst_24h

Toutes me phrases sont comme sa il y a juste le mot a la place de "escalator" qui change.

merci d'avance
A voir également:

8 réponses

PapyHardware
1 oct. 2008 à 15:02
tu stockes ta chaine dans une variable ensuite tu fais les opérations suivantes :

- Utilise la fonction Mid(string, start, [length]) pour virer le début de la phrase (String étant la chaine, start la position de départ que tu connais vu que le début est toujours le même, et length est optionnel donc le met pas)

Dans ton cas ça donne (en supposant que ta variable contenant la phrase est "TEXTE" et que temp est une variable temporaire pour stocker le résultat intermédiaire).

temp = Mid(TEXTE, 70)

Il te restera alors "ESCALATORS.Entrée de comptage;GTC:C:$d4'CI45.CI_Inst_24h"

- Ensuite tu utilises la fonction Split() pour récupérer ce qui est avant le "." (result est le résultat final, le 1 spécifie que tu ne veux que le premier résultat)

result = Split(temp, ".", 1)
0
Merci de ta réponse j'ai réussit a mettre mon texte dans une variable mais après tes deux commandes ne marchent pas j'ai tout essayer les deux puis l'une et l'autre mais la case ne bouge pas je pense que cela vient de la commande result que je doit mal employer voila mon code
Range("A1").Select
Dim Titre As String
Titre = Range("A1")
temp = Mid(Titre, 70)
result = Split(temp, ".", 1)
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
2 oct. 2008 à 22:13
Bonsoir,

C'est bizarre, le split aurait dû marcher...
Tu peux faire aussi comme ça :
result=Left(Mid([A1].value, 70), InStr(temp, ".") - 1)
et si tu veux remplacer ta cellule A1:
[A1].value=Left(Mid([A1].value, 70), InStr(temp, ".") - 1)

eric
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
3 oct. 2008 à 02:09
Bonsoir,
Mon ptit grain de sel :)
Je pense qu'il n'a pas saisi qu'avec split, Result devenait un tableau et que
Result(0) = Escalator
Result(1) = le reste de la phrase.
par exemple..pour refaire la phrase au complet avec le nouveau mot,
NouvMot ="Ascensseur"

Titre = left(Titre,69) & NouvMot & Result(1)
A+
0

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

Posez votre question
wilfried_42 Messages postés 907 Date d'inscription mardi 19 août 2008 Statut Contributeur Dernière intervention 8 décembre 2009 243
3 oct. 2008 à 07:10
Bonjour à tous

effectivement lermite222 split non seulement renvoie un tableau, mais aussi n'est pas sur toutes les versions d'excel, la version 97 ne le comprend pas et je ne sais plus à partir de quelle version il a été mis en place
sinon pour eviter de recuperer un tableau

monmot = split(maphrase,".")(0)

autre solution qui marche sur toutes les versions :
monmot = left(maphrase, instr(maphrase,".")-1)

en reprenant le code d'ericccc
monmot = mid(maphrase,70,instr(70,maphrase,".")-71)
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
3 oct. 2008 à 07:14
Ah yess, je ne voyais pas où ça clochait, la proposition de Pommesky me paraissait bien correcte pourtant...
Merci et bonne journée
eric
0
Erf je suis novice et j'ai pas compris grand chose (quand je dit novice c'est ma première macro) et même si vous me donner un morceau de code je comprend pas trop comment l'intégrer est ce que quelqu'un pourrais m'apporter une réponse a mon niveau ^^ il faut un début a tout
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
3 oct. 2008 à 23:23
Ben tout dépend de ce que tu veux faire et de ce que tu sais (ou ne sais pas) faire, on ne peut pas deviner...
Tu peux te faire par exemple une fonction personnalisée :
Function extrait(cel As Range)
    Dim tmp As String
    tmp = Mid(cel.Value, 70)
    extrait = Left(tmp, InStr(tmp, ".") - 1)
End Function
à coller dans un module.
Si tu as ta phrase en A2, dans une cellule tu saisis
=extrait(A2) et tu y récupères ESCALATOR

eric
0
wilfried_42 Messages postés 907 Date d'inscription mardi 19 août 2008 Statut Contributeur Dernière intervention 8 décembre 2009 243
4 oct. 2008 à 05:47
re:

et pourquoi pas une simple formule alors
=STXT(A1;70;CHERCHE(".";A1;71)-70)

plus de probleme avec vba
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
4 oct. 2008 à 08:58
Bonjour wilfried,

heuuu, parce que le titre est 'macro excel' ?
Mais c'est vrai que lui donner en exemple d'intégration dans une macro une fonction n'était peut-être pas le meilleur car c'est vrai que là c'est totalement inutile.
Ce qui est amusant c'est qu'on ne lui a jamais demandé s'il le voulait absolument du vba et ta réponse le satisfera... :-)
eric
0