tibss
Messages postés21Date d'inscriptionmercredi 26 avril 2006StatutMembreDernière intervention12 septembre 2006
-
10 sept. 2006 à 12:07
tibss
Messages postés21Date d'inscriptionmercredi 26 avril 2006StatutMembreDernière intervention12 septembre 2006
-
10 sept. 2006 à 20:05
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?
geobasic
Messages postés69Date d'inscriptionjeudi 6 novembre 2003StatutMembreDernière intervention 3 octobre 2006 10 sept. 2006 à 12:34
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:
tibss
Messages postés21Date d'inscriptionmercredi 26 avril 2006StatutMembreDernière intervention12 septembre 2006 10 sept. 2006 à 17:00
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?
tibss
Messages postés21Date d'inscriptionmercredi 26 avril 2006StatutMembreDernière intervention12 septembre 2006 10 sept. 2006 à 18:46
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 ?
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 10 sept. 2006 à 19:05
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 #
tibss
Messages postés21Date d'inscriptionmercredi 26 avril 2006StatutMembreDernière intervention12 septembre 2006 10 sept. 2006 à 20:05
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