Sélectionner une chaîne de caracère se trouvant avant un point

Résolu
Signaler
Messages postés
21
Date d'inscription
mercredi 26 avril 2006
Statut
Membre
Dernière intervention
12 septembre 2006
-
Messages postés
21
Date d'inscription
mercredi 26 avril 2006
Statut
Membre
Dernière intervention
12 septembre 2006
-
Bonjour tout le monde,
Je voudrais sélectionner dans des cellules d'un tableau Excel, tous les caractères se trouvant avant le premier point de la chaîne complète.
Ex : la cellulel contient : "bonjour.jesperketoutlemondevabien"; je voudrais sélectionner seulement "bonjour", (le nombre de caractère se trouvant avant le point varie en fonction des cellules).
J'ai un tableau contenant à peu près 2000 lignes.
Serait-il possible de réaliser ce genre de pgm avec =STXT? Comment STXT s'emploie-t-il?

7 réponses

Messages postés
630
Date d'inscription
vendredi 5 mai 2006
Statut
Membre
Dernière intervention
17 février 2007

Salut,

Le principe c'est :
'à l'aide des fonctions Excel
=STXT(A1;1;(CHERCHE(".";A1;1))-1)
'en code VBA
ChaineAvantPoint = Left$(Cells(1, 1).Value, Instr(Cells(1, 1).Value, ".") - 1)

Reste à savoir si tu veux faire exactement, juste sélectionner ? remplacer ?...
Messages postés
69
Date d'inscription
jeudi 6 novembre 2003
Statut
Membre
Dernière intervention
3 octobre 2006

En VBA tu peux utiliser la commande Instr qui permet de repérer la position d'un caractère dans une chaîne. Dans ton exemple tu fais :
pos = Instr(MaCellule,".")

Si pos te rend une valeur > 0 alors tu utilise Left pour  extraire la chaîne avant le point:

chaine = Left(MaCellule, pos - 1)

c'est tout.
Messages postés
21
Date d'inscription
mercredi 26 avril 2006
Statut
Membre
Dernière intervention
12 septembre 2006

Merci Dolphin et geobasic,
En fait je ne pense pas m'être très bien exprimé dans ma première explication
Pour être plus précis, je voudrais que le point et tous les caractères se trouvant à droite du point disparaissent.
Par exemple, je voudrais que la macro permette à  la cellule qui contient  : "bonjour.jesperketoutlemondevabien"; d'afficher seulement "bonjour".

C'est pour cela que je pensais au début utiliserun "STXT", qu'en pensez vous?
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Pourquoi les solutions qui t'ont été donné ne te conviennent-elles pas ?

Elles répondent pourtant à ta question.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
21
Date d'inscription
mercredi 26 avril 2006
Statut
Membre
Dernière intervention
12 septembre 2006

Alors en ce qui concerne la solution de dolphin :

Dim chaîneAvantPoint As String
ChaineAvantPoint = Left$(Cells(1, 1).Value, InStr(Cells(1, 1).Value, ".") - 1)

Cela ne donne rien lorsque je le test sur la première cellule

en ce qui concerne la solution de geobasic, et là encore, j'ai essayé de tester la solution mais sans succés,
Voici le code :

Dim pos As Integer
Dim chaine As String



j = 1
pos = InStr(Aj, ".")
If pos > 0 Then chaine = Left(Aj, pos - 1)



Do
j = j + 1
pos = InStr(Aj, ".")
If pos > 0 Then chaine = Left(Aj, pos - 1)



Loop While j < 2000



End Sub


Il ne se passe rien lorsque je lance cette macro  
j'avais mis dans les trois premières celleules de la colonne A :
<colgroup><col style=\"WIDTH: 48pt\" width=\"64\" /></colgroup>----
bonjour.essais, ----
test2.essais, ----
espoir.4ever
j'aurais voulu obtenir les résultats suivants : bonjour, test2, espoir.
Quelqu'un aurais une idée de l'erreur que j'ai commise ?
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
41
Pour la première solution :
Cells(1, 1).Value =  Left$(Cells(1, 1).Value, InStr(Cells(1, 1).Value, ".") - 1)
<small> </small>

Pour la seconde :
Dim pos As Integer 
Dim chaine As String 

For j  = 1 To 1999 
    pos =  InStr (Cells(j, 1).Value, ".") 
    If pos > 0 Then 
        chaine  = Left(Cells(j, 1).Value, pos - 1) 
        Cells(j, 1).Value = chaine 
    End If 
Next

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
Messages postés
21
Date d'inscription
mercredi 26 avril 2006
Statut
Membre
Dernière intervention
12 septembre 2006

Merci bcp casy , je vois que ma macro ne risquais pas de marcher lol non seulemnt j'utilisais mal pos mais en plus je ne réinitialisait pas cells(j,1) avec le nouveau résultat

@+++