Format numérique de présentation

  • Initiateur de la discussion Initiateur de la discussion Unusual
  • Date de début Date de début

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 !

Unusual

XLDnaute Nouveau
Bonjour,

Je créé un fichier XLS à partir d'une application Delphi en me basant sur un modèle Excel (*.XLT). Une macro doit se charger de la présentation finale (réorganisation suivant le type des lignes et présentation dans un certain format).

Le fichier résultant doit être un fichier de type CSV (séparateur 😉 et les nombres doivent avoir pour séparateur numérique un point (et non une virgule). Comme je ne voudrais pas si possible changer le séparateur décimal au niveau de la configuration de Windows ou d'Excel, je me demande si cela est possible d'appliquer à une plage de cellules un format de ce type (qu'importe si excel le considère comme numérique ou pas) afin de pouvoir enregistrer le fichier CSV comme attendu.

Dans l'exemple très simple joint, la macro a déjà été jouée et la présentation est satisfaisante hormis le séparateur décimal.

Ex : 1,235 au lieu de 1.235
12,34 au lieu de 12.34

Le nombre de décimales peut être variant et il ne faut pas arrondir les valeurs présentes...

Merci à l'avance pour toute aide ou conseil...et bonne année 2006 à tous. [file name=test1_20060102104845.zip size=9982]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/test1_20060102104845.zip[/file]
 

Pièces jointes

Bonjour le Forum, Unusual,

Si j'ai bien compris dans ton fichier final il faut remplacer les , par des ., alors que les séparateurs de ton fichier CSV sont aussi des .

La solution la plus simple est :
1 - Importer ton CSV en l'état
2 - Convertir les colonnes en format texte
3 - Remplacer les , par des . pour chaques colonnes.

Bon je suis pas bien sûr de la question, mais je crois que c'estce que tu veux.

@+

Creepy
 
Bonjour Unusual, Creepy, le forum

Sinon, une solution VBA

Cordialement, A+

Code:
Option Explicit
Sub Export_Csv()
    'variables
    Dim Nom_Fichier As String, Titre_Box As String
    Dim Test_Fichier As Integer, Compteur As Long
    'désactive les messages d'alerte
    Application.DisplayAlerts = False
    'ferme le canal en cas d'erreur
    On Error GoTo Gere_Erreurs
    'paramètres d'enregistrement du fichier
    Titre_Box = 'Enregistrement du fichier Csv'
    Nom_Fichier = Left(ThisWorkbook.FullName, InStrRev(ThisWorkbook.FullName, '.')) & 'csv'
    'boucle des paramètres d'enregistrement
    Do
        Test_Fichier = 0
        Nom_Fichier = Application.GetSaveAsFilename(Nom_Fichier, FileFilter:='Fichiers Csv (*.Csv),*.Csv', Title:=Titre_Box)
        If Not (Dir$(Nom_Fichier, vbNormal) = '') Then Test_Fichier = MsgBox(LCase(Nom_Fichier) & ' existe déja' & Chr(10) & 'en date du ' & DateValue(FileDateTime(Nom_Fichier)) & Chr(10) & 'voulez vous l'écraser ?', vbYesNo + vbQuestion)
        If Test_Fichier = 7 Then Titre_Box = 'Redéfinissez le nom d'enregistrement'
        If Test_Fichier = 6 Then Kill Nom_Fichier
        If Nom_Fichier = 'Faux' Then MsgBox 'Fichier non enregistré !', vbOKOnly + vbExclamation: Sheets(1).Activate: Exit Sub
    Loop While Test_Fichier = 7
    'écriture du fichier
    Open Nom_Fichier For Output As #1
        For Compteur = 1 To Range('A65536').End(xlUp).Row
            Print #1, Replace(Cells(Compteur, 1) & ';' & Cells(Compteur, 2) & ';' & Cells(Compteur, 3) & ';' & Cells(Compteur, 4) & ';' & Cells(Compteur, 5) & ';' & Cells(Compteur, 6).Value, ',', '.')
        Next Compteur
Gere_Erreurs:
    Close #1
End Sub
 
Re bonjour

pour agir sur la feuille active uniquement

A+
Code:
Sub Virgule_en_point()
    Dim Cel_Ref As Range, Plage_Ref As Range
    Set Plage_Ref = Columns('D:F').SpecialCells(xlCellTypeConstants, 23)
    Plage_Ref.NumberFormat = '@'
    For Each Cel_Ref In Plage_Ref
    Cel_Ref.Value = Replace(Cel_Ref.Text, ',', '.')
    Next Cel_Ref
End Sub
 
Tout d'abord ...merci à Creepy et à Yeahou...

Grâce à votre aide, je suis sur la voie...j'ai adapté le code des dernières réponses pour avoir la sauvegarde et le remplacement voulu (',' par '.')car les colonnes ne sont pas régulières mais...

car il y a un mais...il subsiste 2 pb :

- J'ai des lignes en trop et des colonnes en trop dans le fichier CSV

- Lorsque la ',' est substituée par un '.' dans les numériques, le séparateur ';' est substitué par une ',' dans le fichier CSV comme vous pourrez le voir dans le fichier joint... 🙁 [file name=test_20060102161157.zip size=11135]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/test_20060102161157.zip[/file]
 

Pièces jointes

Evidemment, mon fichier à générer ne correspondait pas à un fichier CSV traditionnel, donc cela a posé qq problèmes...mais c'est résolu !

Merci à ceux qui suivi ce fil et m'ont aidé dans ma recherche...Je dois avouer que j'ai trouvé la solution surtout grâce à Yeahou...Merci beaucoup 😉
 
Le bout de code pour ceux que cela intéresse est disponible sur demande (je ne sais pas pourquoi mais quand je copie le bout de code dans le texte ci-dessous avec les balises adéquates, je ne peux poster la réponse, cela échoue systématiquement alors qu'en prévisualisation cela marche sans problème...)
 
- 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

Réponses
5
Affichages
601
Retour