Problème de point et de virgule

UJAP

XLDnaute Occasionnel
Salut,

Un petit problème de virgule et de point ! La semaine dernière kjin m’a crée un code pour automatiser la mise en page d’un tableau (encore merci bcp).

Aujourd’hui j’ai juste un problème au niveau des chiffres où nous avons remplacé les points par des virgules sauf qu’après l’exécution du code les chiffres ne sont pas reconnus ! et je ne peux pas effectuer des calculs sur ces montants.

Je ne vois pas comment faire ? Avez-vous une idée ?

Merci,

Ci-joint le code :
Sub EffaceRecopie()
Dim k As Integer, i As Integer, j As Integer 'déclaration des variables
Application.ScreenUpdating = False 'désactivation du rafraichissement d'écran
Rows("1:8").Delete 'effacement lignes 1 à 8
For k = ActiveSheet.UsedRange.Rows.Count To 2 Step -1 'boucle n° de la dernière ligne de la feuille jusqu'à 2
If Cells(k, 13) <> "M" And Cells(k, 13) <> "F" Then Rows(k).Delete 'si valeur col M ligne k on supprime la ligne
Next k 'n° ligne suivant
For i = 1 To ActiveSheet.Range("A1").CurrentRegion.Rows.Count 'boucle n° de la dernière ligne de la plage jusqu'à 2
For j = 1 To 8 'boucle n° colonne 1 à 8
If Cells(i, j) = "" Then Cells(i, j) = Cells(i - 1, j) 'si cel vide on copie la valeur de la cel précédente
Next j 'n° colonne suivant
Range("I" & i & ":K" & i).Replace What:=".", Replacement:=",", LookAt:=xlPart 'remplacement "." par "," col I,J,K
Range("N" & i) = Format(Date, "mm/dd/yyyy") 'col N = date du jour
Next i 'n° ligne suivant
Range("N1") = "DATE" 'texte cellule N1
ActiveSheet.Shapes("Bouton 1").Delete 'la macro effaçant les 8 première lignes je préfère supprimer le bouton
Application.ScreenUpdating = True 'réactivation du rafraichissement d'écran

End Sub
 

Pièces jointes

  • Fichier-original-pb-virg.xls
    21.5 KB · Affichages: 108
Dernière édition:

CB60

XLDnaute Barbatruc
Re : Problème de point et de virgule

Bonjour
Il te suffit de mettre 1 dans une cellule, la copier et faire un collage special " Multiplication"

Ou peut être de cette façon:
Code:
  Range("I" & i & ":K" & i).Replace What:=".", Replacement:=",", LookAt:=xlPart * 1
 

CB60

XLDnaute Barbatruc
Re : Problème de point et de virgule

re
Pas très estetique mais ça fonctionne,
Ajoute
Code:
 Sub EffaceRecopie()
Dim k As Integer, i As Integer, j As Integer 'déclaration des variables
[COLOR=blue][B]On Error Resume Next[/B][/COLOR]
  Application.ScreenUpdating = False 'désactivation du rafraichissement d'écran
    Rows("1:8").Delete 'effacement lignes 1 à 8
    For k = ActiveSheet.UsedRange.Rows.Count To 2 Step -1 'boucle n° de la dernière ligne de la feuille jusqu'à 2
        If Cells(k, 13) <> "M" And Cells(k, 13) <> "F" Then Rows(k).Delete 'si valeur col M ligne k on supprime la ligne
    Next k 'n° ligne suivant
    For i = 1 To ActiveSheet.Range("A1").CurrentRegion.Rows.Count 'boucle n° de la dernière ligne de la plage jusqu'à 2
        For j = 1 To 8 'boucle n° colonne 1 à 8
            If Cells(i, j) = "" Then Cells(i, j) = Cells(i - 1, j) 'si cel vide on copie la valeur de la cel précédente
        Next j 'n° colonne suivant
    Range("I" & i & ":K" & i).Replace What:=".", Replacement:=",", LookAt:=xlPart * 1 'remplacement "." par "," col I,J,K
    Range("N" & i) = Format(Date, "mm/dd/yyyy") 'col N = date du jour
    [COLOR=blue][B]Range("I" & i).Value = Range("I" & i) * 1
    Range("J" & i).Value = Range("J" & i) * 1
    Range("K" & i).Value = Range("K" & i) * 1[/B][/COLOR]
    Next i 'n° ligne suivant
    Range("N1") = "DATE" 'texte cellule N1
    ActiveSheet.Shapes("Bouton 1").Delete 'la macro effaçant les 8 première lignes je préfère supprimer le bouton
  Application.ScreenUpdating = True 'réactivation du rafraichissement d'écran
  
End Sub
[COLOR=red][/COLOR]

Je te remets la macro complete, j'ai ajouté un " error resume next" pour la premiere ligne
 
Dernière édition:

CB60

XLDnaute Barbatruc
Re : Problème de point et de virgule

re
Le "on error resume next" me permet de passer l'anomalie
Car la macro part de la ligne 1 et sur cette ligne nous avons du texte "base..." et si nous ne le mettons pas la macro plante, cela permet de passer l'anomalie et de boucler sur les autres cellules
 

kjin

XLDnaute Barbatruc
Re : Problème de point et de virgule

Bonjour,
Désolé, je pensais le pb résolu
UJAP, tu n'avais pas répondu à ma question de savoir si, quand tu appuies sur le point du pavé numérique de ton clavier, tu obtenais un point ou une virgule à l'écran ?
Dans le fichier que tu as joints, les nombres contiennent bien des virgules, je ne sais pas si pour Bruno c'est la même chose, sauf qu'ils sont au format standard.
A+
kjin
 

kjin

XLDnaute Barbatruc
Re : Problème de point et de virgule

Re,
Donc à priori pb avec tes paramètres régionnaux et linguistiques du panneaux de configuration de Windows
J'utilise clavier Français, symbole décimal virgule (on ne vois pas très bien sur mon écran et on peut très bien confondre avec le point)
Je suis sous excel 2000 Francais et je ne sais pas ce qu'il en est avec des versions anglaises
Que donne la procédure de Bruno ?
A+
kjin
 

UJAP

XLDnaute Occasionnel
Re : Problème de point et de virgule

Re,
Donc je viens de modifier les paramètres ds. le panneau de configuration pour obtenir des virgules à la place des points,

Donc maintenant le code fonctionne parfaitement,

Mais vous savez pourquoi on est obligé de * par 1 ?

Bonne ap,
 

kjin

XLDnaute Barbatruc
Re : Problème de point et de virgule

Re,
*1 pour renvoyer un format nombre
Avec ton nouveau paramétrage en principe tu n'as plus besoin de ça
Par contre on peut en profiter pour formater les cellules :
Code:
Sub EffaceRecopie()
Dim k As Integer, i As Integer, j As Integer 'déclaration des variables
Application.ScreenUpdating = False 'désactivation du rafraichissement d'écran
Rows("1:8").Delete 'effacement lignes 1 à 8
For k = ActiveSheet.UsedRange.Rows.Count To 2 Step -1 'boucle n° de la dernière ligne de la feuille jusqu'à 2
If Cells(k, 13) <> "M" And Cells(k, 13) <> "F" Then Rows(k).Delete 'si valeur col M ligne k on supprime la ligne
Next k 'n° ligne suivant
For i = 1 To ActiveSheet.Range("A1").CurrentRegion.Rows.Count 'boucle n° de la dernière ligne de la plage jusqu'à 2
For j = 1 To 8 'boucle n° colonne 1 à 8
If Cells(i, j) = "" Then Cells(i, j) = Cells(i - 1, j) 'si cel vide on copie la valeur de la cel précédente
Next j 'n° colonne suivant
Range("I" & i & ":K" & i).Replace What:=".", Replacement:=",", LookAt:=xlPart 'remplacement "." par "," col I,J,K
[COLOR="Blue"]Range("I" & i & ":K" & i).NumberFormat [/COLOR]= "0.00"
Range("N" & i) = Format(Date, "mm/dd/yyyy") 'col N = date du jour
Next i 'n° ligne suivant
Range("N1") = "DATE" 'texte cellule N1
ActiveSheet.Shapes("Bouton 1").Delete 'la macro effaçant les 8 première lignes je préfère supprimer le bouton
Application.ScreenUpdating = True 'réactivation du rafraichissement d'écran
Essaie et dis nous
A+
kjin
 
Dernière édition:

Discussions similaires

Réponses
5
Affichages
236

Statistiques des forums

Discussions
312 217
Messages
2 086 352
Membres
103 195
dernier inscrit
martel.jg