Problème format nombre et enregistrement csv

Bonjour,

J'ai encore un souci...

J'ai une macro qui filtre une plage de données. Cette plage contient des nombres longs (17 caractères ou plus). J'exporte cette plage dans une nouvelle feuille. Je crée un nouveau classeur avec cette feuille. J'enregistre en csv séparateur point virgule. Quand j'ouvre mon fichier ( auquel je change l'extension en txt), mes nombres sont à exponsant... Type 3,453E+11....

Comment avoir le texte exact d'une cellule apres enregistrement en csv ??

Merci de vos réponses et éclaircissements !

Cordialement,

Innuendo67

Pourrais-tu joindre ton fichier ?

Bonsoir.

Je joindrais le code demain. Je précise que lorsque je fais les opérations manuellement, tout fonctionne. Les nombres sont sans exposants... Je ne comprends pas.

Merci.

Bonjour,

comme promis voici les codes:

le premier ouvre à l'ouverture du classeur un .txt séparateur point virgule de plusieurs centaines de milliers de lignes:

Private Sub Workbook_Open()

 Application.DisplayAlerts = False
 Application.ScreenUpdating = False

     Dim CLR As Workbook 
     Dim ONR As Worksheet
     Dim CH As String 
     Dim F As String 
     Dim CLD As Workbook 
     Dim OND As Worksheet 

  Dim wb As Workbook, ok As Boolean

     Set CLR = ThisWorkbook 

     CH = CLR.Path & "\TEST A TRAITER\" 
     F = Dir(CH & "test*.txt") 
     While F <> ""

  Workbooks.OpenText Filename:=CH & F, Origin:=xlMSDOS, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _
        xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=True, _
        Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1), _
        Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
        Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 2), Array(15 _
        , 1), Array(16, 2), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 2), Array(21, 2), _
        Array(22, 1), Array(23, 1)), TrailingMinusNumbers:=True 

    Columns("N:N").Select
    Selection.NumberFormat = "00000"
 Columns("T:T").Select
    Selection.NumberFormat = "00000"
 Columns("V:V").Select
    Selection.NumberFormat = "00000"
 Columns("U:U").Select
    Selection.NumberFormat = "00000"
 Columns("P:P").Select
    Selection.NumberFormat = "00000"

        Range("B4").Select
     Range(Selection, Selection.End(xlDown)).Select
     Selection.NumberFormat = "mm/dd/yyyy hh:mm:ss"

     F = Dir()
     Wend

     For Each wb In Workbooks

 If wb.Name Like "mise en forme test.xlsm" Then
 wb.Activate

 End If
 Next wb

 End Sub

Le second fait toute la partie séparation de ces centaines de milliers de lignes en plusieurs fichiers plus petits. Certaines cellules contiennent des nombres très longs et donc à la fin de la procédure d'enregistrement, ces nombres contiennent des exposants...

  Sub separation()

  Application.ScreenUpdating = False
  Application.DisplayAlerts = False

 Dim nomfichier As String
 Dim j As Variant
 Dim i As Integer

      Dim wb As Workbook, ok As Boolean

  For Each wb In Workbooks

  If wb.Name Like "test.*.txt" Then
  wb.Activate

  End If
  Next wb

 Range("B4").Select
  i = Range("B4", Selection.End(xlDown)).Cells.Count / 50000

  Dim nbonglets As Integer
  'nbonglets = i / 1000
 nbonglets = i
  For j = 1 To nbonglets

      Rows("1:3").Select
      Selection.Copy
      Sheets.Add After:=Sheets(Sheets.Count)
      Rows("1:1").Select
      ActiveSheet.Paste

  Sheets(Sheets.Count - j).Select

        ActiveSheet.Range("$B$1:$B$500000").AutoFilter Field:=1, Criteria1:= _
       "<" & Range("B" & j * 50000).Text, Operator:=xlAnd
          ActiveSheet.AutoFilter.ApplyFilter

 ''''''''''''''''''
 If Range("B" & j * 50000).Text = "" Then
 Columns("B:B").Select
 Selection.AutoFilter
 End If

 Columns("N:P").Select
    Selection.NumberFormat = "0"
 Columns("O:O").Select
    Selection.NumberFormat = "0"
 Columns("T:U").Select
    Selection.NumberFormat = "0"

    Columns("V:V").Select
    Selection.NumberFormat = "0"

      Rows("4:4").Select
      Range(Selection, Selection.End(xlDown)).Select
      Application.CutCopyMode = False
      Selection.Copy
      Sheets(Sheets.Count).Select
      Rows("4:4").Select
      ActiveSheet.Paste

      Range("B4").Select
      Range(Selection, Selection.End(xlDown)).Select
      Selection.NumberFormat = "dd/mm/yyyy hh:mm:ss"

 Next j

    For Each wb In Workbooks

  If wb.Name Like "test.*.txt" Then
  wb.Activate

  End If
  Next wb

      For Each wb In Workbooks

  If wb.Name Like "test.*.txt" Then
  wb.Activate

  End If
  Next wb

 If Sheets.Count > 1 Then

 Dim n As Variant

 For n = 1 To Sheets.Count - 1

 Sheets("Feuil" & n).Select

      If Range("B4").Value = "" Then

      ActiveWindow.SelectedSheets.Delete

      End If

 Dim dossierprincipal$

dossierprincipal = "C:\Users\test\test\test" & Format(Now, " yyyy-mm-dd.hhmmss") & "\MONI\"

MkDir ("C:\Users\test\test\test" & Format(Now, " yyyy-mm-dd.hhmmss"))

If Dir("C:\Users\test\test\test" & Format(Now, " yyyy-mm-dd.hhmmss"), vbDirectory) <> "" Then

MkDir ("C:\Users\test\test\test" & Format(Now, " yyyy-mm-dd.hhmmss") & "\DONNEES")
MkDir ("C:\Users\test\test\test" & Format(Now, " yyyy-mm-dd.hhmmss") & "\GUY")
MkDir ("C:\Users\test\test\test" & Format(Now, " yyyy-mm-dd.hhmmss") & "\MONI")
MkDir ("C:\Users\test\test\test" & Format(Now, " yyyy-mm-dd.hhmmss") & "\AUTRES")
MkDir ("C:\Users\test\test\test" & Format(Now, " yyyy-mm-dd.hhmmss") & "\SIERRA")
MkDir ("C:\Users\test\test\test" & Format(Now, " yyyy-mm-dd.hhmmss") & "\ENREGISTREMENTS")
MkDir ("C:\Users\test\test\test" & Format(Now, " yyyy-mm-dd.hhmmss") & "\VICTOR")

End If

  nomfichier = "test." & Format(Now, "yyyy-mm-dd.hhmm" & n & n) & ".txt"

      Sheets("Feuil" & n).Select

     Sheets("Feuil" & n).Move

      ActiveWorkbook.SaveAs Filename:=dossierprincipal & nomfichier, _
          FileFormat:=xlCSV, Local:=True, CreateBackup:=False

    Columns("N:N").Select
    Selection.NumberFormat = "0000"
    Columns("O:O").Select
    Selection.NumberFormat = "0000"
    Columns("P:P").Select
    Selection.NumberFormat = "0000"
    Columns("T:T").Select
    Selection.NumberFormat = "0000"
    Columns("U:U").Select
    Selection.NumberFormat = "0000"
    Columns("V:V").Select
    Selection.NumberFormat = "0000"

      ActiveWorkbook.SaveAs , Local:=True
      ActiveWindow.Close
 Next n
 Else

 End If

     For Each wb In Workbooks

  If wb.Name Like "mise en forme test.xlsm" Then
  wb.Activate

  End If
  Next wb

 MsgBox "Traitement terminé."

  End Sub

Vous reconnaitrez certains bouts de code qui appartiennent à des usagers de ce forum.

Mon code contient d'énormes lourdeurs (je ne suis pas un pro...) mais il s’exécute sans aucune erreur.

Merci de vos réponses car tout bloque à cause de ce petit détail...

Cordialement,

Innuendo67

Rechercher des sujets similaires à "probleme format nombre enregistrement csv"