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