Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Modif macro qui transforme point en virgule

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Bernard-Louis

XLDnaute Occasionnel
Bonjour a toutes et tous.
Je vous soumet un probleme que je n'arrive pas a resoudre.
J'ai une macro qui transforme les points en virgule d'un fichier que j'importe. Ce fichier comporte une 50 de colonnes et 5000 lignes.
Des que la macro tombe sur un chiffre : 50,000. elle bloque parce qu il y a une , puis apres les 000 un point. exemple en colonne E
Auriez vous la solution a mon probleme ?
Avec mes remerciements anticipes.
Cordialement
 
Re : Modif macro qui transforme point en virgule

Bonjour OVDJ, Pierrejean ainsi que le forum,
Je reviens vers vous car j'ai modifier le tableau excel en supprimant les colonnes qui ne me seraient pas dans la base access.
Avec cette macro tout fonctionne parfaitement.
Encore merci a vous.
Cordialement

Sub Miseajour()

'Cette macro supprime les colonnes apres la AX ou colonne 50


ActiveWindow.ScrollColumn = 2
ActiveWindow.ScrollColumn = 3
ActiveWindow.ScrollColumn = 4
ActiveWindow.ScrollColumn = 5
ActiveWindow.ScrollColumn = 6
ActiveWindow.ScrollColumn = 7
ActiveWindow.ScrollColumn = 8
ActiveWindow.ScrollColumn = 9
ActiveWindow.ScrollColumn = 10
ActiveWindow.ScrollColumn = 11
ActiveWindow.ScrollColumn = 12
ActiveWindow.ScrollColumn = 13
ActiveWindow.ScrollColumn = 14
ActiveWindow.ScrollColumn = 15
ActiveWindow.ScrollColumn = 16
ActiveWindow.ScrollColumn = 17
ActiveWindow.ScrollColumn = 18
ActiveWindow.ScrollColumn = 19
ActiveWindow.ScrollColumn = 20
ActiveWindow.ScrollColumn = 21
ActiveWindow.ScrollColumn = 22
ActiveWindow.ScrollColumn = 23
ActiveWindow.ScrollColumn = 24
ActiveWindow.ScrollColumn = 25
ActiveWindow.ScrollColumn = 26
ActiveWindow.ScrollColumn = 27
ActiveWindow.ScrollColumn = 28
ActiveWindow.ScrollColumn = 29
ActiveWindow.ScrollColumn = 30
ActiveWindow.ScrollColumn = 31
ActiveWindow.ScrollColumn = 32
ActiveWindow.ScrollColumn = 33
ActiveWindow.ScrollColumn = 34
ActiveWindow.ScrollColumn = 35
ActiveWindow.ScrollColumn = 36
ActiveWindow.ScrollColumn = 37
ActiveWindow.ScrollColumn = 38
ActiveWindow.ScrollColumn = 39
ActiveWindow.ScrollColumn = 40
ActiveWindow.ScrollColumn = 41
ActiveWindow.ScrollColumn = 42
ActiveWindow.ScrollColumn = 43
ActiveWindow.ScrollColumn = 44
ActiveWindow.ScrollColumn = 45
ActiveWindow.ScrollColumn = 46
ActiveWindow.ScrollColumn = 47
Columns("AY:BZ").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
Range("A1").Select

'cette macro supprime les espaces et ajoute 0
Range("AO:AO,AR:AR").Select
Range("AR1").Activate
Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:="", Replacement:="0", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Range("A1").Select

'Le code ci-dessous empeche de voir le defilement des cellules quand la macro travaille
Application.ScreenUpdating = False

'FOR EACH = pour chaque cellule de la plage, Cells (N°de ligne, N°de colonne)
'Activ cell.column = la colonne ou se trouve le curseur (pour une colonne fixe)

'For Each Cellule In Range(Cells(1, ActiveCell.Column), _
Cells(65536, ActiveCell.Column).End(xlUp))

'prise en compte de toutes les cellules de la feuille (en partant de A1)
For Each Cellule In Range("a1").CurrentRegion


'selection de la cellule en cours
'exemple cellule contient 123.45
Cellule.Select

If IsError(Cellule) Then
Application.StatusBar = "erreur en cellule : " & Cellule.Address
MsgBox "erreur en cellule : " & Cellule.Address
End
Else
Application.StatusBar = Cellule.Address & " : " & Cellule
End If

'Attente de 1 seconde entre chaque cellule(formule dessous)
'Application.Wait Now + TimeValue("00:00:01")

'calcul du point dans la cellule en cours
'ici en position 4
Position_Décimale = InStr(1, Cellule, ".")

If Position_Décimale > 0 Then
'on ne prends en compte que les cellules qui contiennent 1 point

If IsNumeric(Left(Cellule, Position_Décimale - 1)) Or _
Position_Décimale = 1 Then
'prends en compte
'1.que les cellules dont la partie qui precede le point, est numerique
'exemple : 123.45
'2.les cellules qui ont un point en 1ere position exemple .45

'position decimale -1 : ici 3
'Left(Cellule, Position_Décimale - 1): correspond a la partie entiere : ici 123
'Len(Cellule) : correspond au nombre de caractere de la cellule, ici 6
'Len(Cellule) - Position_Décimale)correspond au nombre de caractere
'de la partie decimale, ici 2 (= 6-4)
'Right(Cellule, Len(Cellule) - Position_Décimale)correspond a la partie decimale, ici 45
'CDec = conversion en valauer decimale

Selection = CDec(Left(Cellule, Position_Décimale - 1) & "," & _
Right(Cellule, Len(Cellule) - Position_Décimale))
'le resultat final = partie entiere suivi d'une virgule suivi de la partie decimale
' ici 123,45
End If
End If

Next Cellule

'restauration de la barre d'etat
Application.StatusBar = False

'selection de la premiere cellule en cours
Range("a1").Select

'message de fin de traitement
MsgBox Range("a1").CurrentRegion.Cells.Count & " Cellules ont été traitées" & vbCrLf & _
Range("a65536").End(xlUp).Row & " Lignes" & vbCrLf & _
Range("iv1").End(xlToLeft).Column & " Colonnes" & vbCrLf & _
"Pour la feuille " & ActiveSheet.Name

End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Y
Réponses
6
Affichages
1 K
yangerber64500
Y
K
Réponses
2
Affichages
5 K
K
I
Réponses
3
Affichages
2 K
O
Réponses
6
Affichages
4 K
N
Réponses
2
Affichages
9 K
Nostromo
N
R
Réponses
2
Affichages
1 K
runisland
R
P
Réponses
2
Affichages
2 K
Phoenix
P
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…