Microsoft 365 Mauvais transfert de fichier excel

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 !

Bonjour,
Sélectionner la colonne, données/convertir et choisir la virgule come séparateur :
1656601485849.png


Puis terminer.
Ou utiliser power query comme Chris le conseille toujours 🙂

Cordialement
 
Bonjour,
Sélectionner la colonne, données/convertir et choisir la virgule come séparateur :
Regarde la pièce jointe 1144055

Puis terminer.
Ou utiliser power query comme Chris le conseille toujours 🙂

Cordialement
Merci beaucoup ! j'ai pu réaliser cette action pour ce fichier, cependant j'en ai une centaine et j'aimerai appliquer cette action à tout mon dossier, comment cela peut-être possible ?
 
Bonjour Meliodas0000, Dugenou,
j'en ai une centaine et j'aimerai appliquer cette action à tout mon dossier, comment cela peut-être possible ?
Téléchargez les fichiers zippés joints et voyez cette macro du fichier .xlsm :
VB:
Sub MAJ_CSV()
Dim t, chemin$, fichier$, n%
t = Timer
chemin = ThisWorkbook.Path & "\" 'à adapter
fichier = Dir(chemin & "*.csv") '1er fichier csv du dossier
Application.ScreenUpdating = False
While fichier <> ""
    n = n + 1
    Workbooks.OpenText chemin & fichier, Local:=True
    With ActiveSheet.Cells
        .Replace ",", ";", xlPart
        .Replace "é", "é"
        .Replace """", ""
    End With
    ActiveWorkbook.Close True
    fichier = Dir 'fichier suivant
Wend
MsgBox n & " fichier(s) csv traité(s) en " & Format(Timer - t, "0.00 \sec")
End Sub
Tous les fichiers csv à traiter doivent être placés dans le même dossier.

A+
 

Pièces jointes

Bonjour Meliodas0000, Dugenou,

Téléchargez les fichiers zippés joints et voyez cette macro du fichier .xlsm :
VB:
Sub MAJ_CSV()
Dim t, chemin$, fichier$, n%
t = Timer
chemin = ThisWorkbook.Path & "\" 'à adapter
fichier = Dir(chemin & "*.csv") '1er fichier csv du dossier
Application.ScreenUpdating = False
While fichier <> ""
    n = n + 1
    Workbooks.OpenText chemin & fichier, Local:=True
    With ActiveSheet.Cells
        .Replace ",", ";", xlPart
        .Replace "é", "é"
        .Replace """", ""
    End With
    ActiveWorkbook.Close True
    fichier = Dir 'fichier suivant
Wend
MsgBox n & " fichier(s) csv traité(s) en " & Format(Timer - t, "0.00 \sec")
End Sub
Tous les fichiers csv à traiter doivent être placés dans le même dossier.

A+
Bonjour Dugenou, Meliodas0000,

En appliquant le fichier xlms à mon dossier, j'ai le résultat suivant :

Sub MAJ_CSV()
Dim t, chemin$, fichier$, n%
t = Timer
chemin = ThisWorkbook.Path & "C:\Users\Amir\Documents\ADCC2\" 'à adapter
fichier = Dir(chemin & "logs_REM_22-06-2022.csv") '1er fichier csv du dossier
Application.ScreenUpdating = False
While fichier <> ""
n = n + 1
Workbooks.OpenText chemin & fichier, Local:=True
With ActiveSheet.Cells
.Replace ",", ";", xlPart
.Replace "é", "é"
.Replace """", ""
End With
ActiveWorkbook.Close True
fichier = Dir 'fichier suivant
Wend
MsgBox n & " fichier(s) csv traité(s) en " & Format(Timer - t, "0.00 \sec")
End Sub
Cependant, une erreur apparait pour la ligne "fichier = Dir...." m'indiquant que "Le nom ou le numéro du fichier est incorrect", je ne sais pas d'où peut bien provenir cette erreur en sachant qu'il s'agit bien du premier fichier csv du dossier.
 
Je vous ai dit de mettre tous les fichiers dans le même dossier.

Dans ce cas il suffit d'utiliser ma macro sans la modifier.

Puisque vous ne savez pas le faire.

Bonne nuit.
Bonsoir, merci pour la réponse,

J'ai bien mit tout les fichiers dans le même dossier et j'ai compléter les endroits à completer dans votre macro sans la modifier, cependant l'erreur persiste au même endroit.

Bonne nuit, merci.
 
Bonjour Meliodas0000, le forum,

L'ouverture d'une centaine de fichiers CSV prendra pas mal de temps.

Pour aller vite il faut les ouvrir en lecture séquentielle, voyez les fichiers zippés joints et la macro :
VB:
Sub MAJ_CSV()
Dim t, chemin$, fichier$, n%, x%, a(), i&, txt$
t = Timer
chemin = ThisWorkbook.Path & "\" 'à adapter si nécessaire
fichier = Dir(chemin & "*.csv") '1er fichier csv du dossier
While fichier <> ""
    n = n + 1
    x = FreeFile
    Open chemin & fichier For Input As #x 'ouverture en lecture séquentielle
    Erase a: i = 0 'RAZ
    While Not EOF(x) 'EOF = End Of File, dernière ligne
        Line Input #x, txt 'récupère la ligne
        txt = Replace(Replace(txt, ",", ";"), """", "")
        txt = Replace(txt, "é", "é")
        ReDim Preserve a(i) 'tableau en base 0
        a(i) = txt
        i = i + 1
    Wend
    Close #x
    Open chemin & fichier For Output As #x 'ouverture en écriture
    Print #x, Join(a, vbLf)
    Close #x
    fichier = Dir 'fichier suivant
Wend
MsgBox n & " fichier(s) csv traité(s) en " & Format(Timer - t, "0.00 \sec")
End Sub
Cela nous permet de constater sur l'exemple qu'il n'y a qu'une seule ligne => Ubound(a) = 0.

En effet le fichier n'est pas un fichier csv normal.

A+
 

Pièces jointes

Bonjour Meliodas0000, le forum,

L'ouverture d'une centaine de fichiers CSV prendra pas mal de temps.

Pour aller vite il faut les ouvrir en lecture séquentielle, voyez les fichiers zippés joints et la macro :
VB:
Sub MAJ_CSV()
Dim t, chemin$, fichier$, n%, x%, a(), i&, txt$
t = Timer
chemin = ThisWorkbook.Path & "\" 'à adapter si nécessaire
fichier = Dir(chemin & "*.csv") '1er fichier csv du dossier
While fichier <> ""
    n = n + 1
    x = FreeFile
    Open chemin & fichier For Input As #x 'ouverture en lecture séquentielle
    Erase a: i = 0 'RAZ
    While Not EOF(x) 'EOF = End Of File, dernière ligne
        Line Input #x, txt 'récupère la ligne
        txt = Replace(Replace(txt, ",", ";"), """", "")
        txt = Replace(txt, "é", "é")
        ReDim Preserve a(i) 'tableau en base 0
        a(i) = txt
        i = i + 1
    Wend
    Close #x
    Open chemin & fichier For Output As #x 'ouverture en écriture
    Print #x, Join(a, vbLf)
    Close #x
    fichier = Dir 'fichier suivant
Wend
MsgBox n & " fichier(s) csv traité(s) en " & Format(Timer - t, "0.00 \sec")
End Sub
Cela nous permet de constater sur l'exemple qu'il n'y a qu'une seule ligne => Ubound(a) = 0.

En effet le fichier n'est pas un fichier csv normal.

A+
Bonjour Job75, merci pour la réponse, le programme fonctionne correctement et je n'ai aucune erreur sur les fichiers identiques à ceux que j'ai envoyé. Cependant, certains fichiers comme celui ci-joint montre une latitude et une longitude avec une partie décimal représenté par une virgule et non un point, ce qui provoque donc un décalage dans les données, je sais qu'il faut ajouter une nouvelle fenêtre pour cela.
 

Pièces jointes

Fichier (4) pour rendre homogènes les fichiers traités :
VB:
Option Explicit

Sub MAJ_CSV()
Dim t, chemin$, fichier$, n%, x%, a(), i&, txt$
t = Timer
chemin = ThisWorkbook.Path & "\" 'à adapter si nécessaire
fichier = Dir(chemin & "*.csv") '1er fichier csv du dossier
While fichier <> ""
    n = n + 1
    x = FreeFile
    Open chemin & fichier For Input As #x 'ouverture en lecture séquentielle
    Erase a: i = 0 'RAZ
    While Not EOF(x)
        Line Input #x, txt 'récupère la ligne
        txt = Replace(Replace(txt, """,", ";"), """", "")
        txt = Replace(txt, ",", ".") 'séparateur décimal le point pour tous les fichiers
        txt = Replace(txt, "é", "é")
        ReDim Preserve a(i) 'base 0
        a(i) = txt
        i = i + 1
    Wend
    Close #x
    Open chemin & fichier For Output As #x 'ouverture en écriture
    Print #x, Join(a, vbLf)
    Close #x
    fichier = Dir 'fichier suivant
Wend
MsgBox n & " fichier(s) csv traité(s) en " & Format(Timer - t, "0.00 \sec")
End Sub
Ainsi pour tous les fichiers traités le séparateur décimal sera le point.
 

Pièces jointes

Fichier (4) pour rendre homogènes les fichiers traités :
VB:
Option Explicit

Sub MAJ_CSV()
Dim t, chemin$, fichier$, n%, x%, a(), i&, txt$
t = Timer
chemin = ThisWorkbook.Path & "\" 'à adapter si nécessaire
fichier = Dir(chemin & "*.csv") '1er fichier csv du dossier
While fichier <> ""
    n = n + 1
    x = FreeFile
    Open chemin & fichier For Input As #x 'ouverture en lecture séquentielle
    Erase a: i = 0 'RAZ
    While Not EOF(x)
        Line Input #x, txt 'récupère la ligne
        txt = Replace(Replace(txt, """,", ";"), """", "")
        txt = Replace(txt, ",", ".") 'séparateur décimal le point pour tous les fichiers
        txt = Replace(txt, "é", "é")
        ReDim Preserve a(i) 'base 0
        a(i) = txt
        i = i + 1
    Wend
    Close #x
    Open chemin & fichier For Output As #x 'ouverture en écriture
    Print #x, Join(a, vbLf)
    Close #x
    fichier = Dir 'fichier suivant
Wend
MsgBox n & " fichier(s) csv traité(s) en " & Format(Timer - t, "0.00 \sec")
End Sub
Ainsi pour tous les fichiers traités le séparateur décimal sera le point.
Bonjour Job75, merci beaucoup pour ton aide, maintenant tout les fichiers sont correctement traiter, je n'ai plus de problème. Merci ! Je reviendrai vers vous en cas de nouveaux problèmes futurs
 
- 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
22
Affichages
909
Réponses
30
Affichages
449
Réponses
11
Affichages
112
Retour