transformation de caracteres

E

erwann

Guest
Bonjour le forum, ;)

Dans une colonne de A1:A5000, les cellules contiennent des valeurs ex: XXXXXXXX001.1, comment transformer cette valeur en XXXXXXXX1_1 dans la colonne E.
En fait il faut supprimer 2 zéro et transformer le '.' en '_'

L'opération inverse m'intérresse aussi.... :eek:
Merci pour vos futures réponses [file name=trans_carct.zip size=1565]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/trans_carct.zip[/file]
 

Pièces jointes

  • trans_carct.zip
    1.5 KB · Affichages: 12
E

erwann

Guest
Mille excusessssssssss.
Je suis désolé.
:eek: :eek: :eek: :eek: :eek: :eek: :eek: :eek: :eek: :eek: :eek: :eek: :eek: :eek: :eek: :eek:
[file name=PourErwann_20051029194430.zip size=9414]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/PourErwann_20051029194430.zip[/file]
 

Pièces jointes

  • PourErwann_20051029194430.zip
    9.2 KB · Affichages: 7

andré

XLDnaute Barbatruc
Re,

Donc, si je comprend bien :

on ne touche pas aux 8 premiers caractères
de 002.10 tu veux faire 2_10
de 032.6 tu veux faire 32_6
si tu avais 032.12 tu voudrais en faire 32_12
de 102.8 tu veux faire 102_8
et si tu avais 105.15 tu voudrais en faire 105_15

Chat échaudé crains l'eau froide (lol)
Â+
 

andré

XLDnaute Barbatruc
Re,

Voici donc l'analyse que j'attendais au départ :

on ne touche pas aux 8 premiers chiffres
on supprime les 0 devant les nombres précédent le . (10 rest 10)
on remplace le . par _
on copie le nombre après le _ (ex .)

Aurais-tu déjà entendu parler du Golgotha ?

Je regarde cela demain matin, maintenant la soupe est chaude.

Â+
 

myDearFriend!

XLDnaute Barbatruc
Re erwann, excalibur, andré,

Dans l'attente d'une solution par formule ( :p ), ci-joint une réponse VBA :
Sub Traitement()
Dim Plage As Range, Cellule As Range
Dim T As String
      Application.ScreenUpdating = False
      Set Plage = ActiveSheet.UsedRange.SpecialCells _
                        (xlCellTypeConstants, xlNumbers + xlTextValues)
      For Each Cellule In Plage
            T = Cellule.Value
            If Mid(T, 9) Like '*#.#*' Then
                  Cellule.Value = Left(T, 8) & Int(Val(Mid(T, 9))) _
                                          & '_' & Mid(T, InStr(T, '.') + 1)
            End If
      Next Cellule
      Application.ScreenUpdating = True
End Sub


Sub Reconstitution()
Dim Plage As Range, Cellule As Range
Dim T As String
      Application.ScreenUpdating = False
      Set Plage = ActiveSheet.UsedRange.SpecialCells _
                        (xlCellTypeConstants, xlNumbers + xlTextValues)
      For Each Cellule In Plage
            T = Cellule.Value
            If Mid(T, 9) Like '*#_#*' Then
                  Cellule.Value = Left(T, 8) & Format(Val(Mid(T, 9)), '000') _
                                          & '.' & Mid(T, InStr(T, '_') + 1)
            End If
      Next Cellule
      Application.ScreenUpdating = True
End Sub
C'est vrai que cette fois, je n'ai pas fait dans la dentelle...

Cordialement,

PS : je te souhaite un bon week-end également andré :) [file name=PourErwann2.zip size=10070]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/PourErwann2.zip[/file]
 

Pièces jointes

  • PourErwann2.zip
    9.8 KB · Affichages: 12
L

laM

Guest
bonjour à tous

je n'ai pas de mérite l'analyse a été faite par André et j'ai quasiment copié le code de myDearFriend!
Donc si A1 contient la chaîne en question :
=GAUCHE(A1;8)&CNUM(STXT(A1;9;CHERCHE('.';A1)-9))&'_'
&STXT(A1;CHERCHE('.';A1)+1;NBCAR(A1)-CHERCHE('.';A1))

Par contre je n'ai pas compris le principe de la formule de reconstruction. Comment savoir le nombre de zéro à rajouter ?
(pour le '_' en '.' le SUBSTITUE(A1;'_';'.') fonctionne à merveille)

au revoir, à bientôt
 

Discussions similaires

Réponses
1
Affichages
1 K

Statistiques des forums

Discussions
312 963
Messages
2 093 996
Membres
105 906
dernier inscrit
aifa