Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Boucle pour créer un import de fichier csv

Columbo

XLDnaute Nouveau
Bonjour à tous,
J'ai un fichier qui cumule des informations sur plusieurs factures (onglet test)
Le résultat que je dois avoir pour chaque facture dans l'onglet Data :
1 ligne E par facture
1 ligne RH par ligne de facture
1 ligne RU par ligne de facture
La macro que je viens de créer boucle bien sur les lignes RH et RU, mais la boucle sur la ligne E ramène également une ligne à blanc (en trop)
Savez-vous comment corriger le code pour que dans la boucle sur la ligne E ne ramène plus une ligne à blanc?

Cordialement
 

Pièces jointes

  • test forum.xlsm
    33.5 KB · Affichages: 20
Solution
Est-ce qu'il existe un moyen de ne pas créé les points virgules à la fin?
Normalement dans un fichier CSV on ne touche pas aux points-virgules en fin de ligne.

Mais on peut facilement les supprimer, voyez ce fichier (5) et cette boucle :
VB:
        For k = Len(texte) To 1 Step -1
            If Right(texte, 1) = ";" Then texte = Left(texte, k - 1) Else Exit For
        Next k

Columbo

XLDnaute Nouveau
Bonjour job75,
Effectivement le total RH se calcule lors de la création des fichiers et il est présent sur chacun des fichiers.
Autant pour moi, j'avais vérifié seulement sur le fichier global.
Merci beaucoup pour ton aide,
A bientôt
 

Columbo

XLDnaute Nouveau
Bonjour job75,
La macro bloque à ce niveau :
"Open ThisWorkbook.Path & "\FACT_" & tablo(i, 2) & "_" & tablo(i, 4) & ".csv" For Output As #x 'ouverture en écriture séquentielle"
Est-ce que tu sais pourquoi et comment corriger le blocage?
Merci
 

Pièces jointes

  • test forum.xlsm
    43.1 KB · Affichages: 12

Columbo

XLDnaute Nouveau
Très bizarre, effectivement quand je télécharge le fichier que j'ai mis, les 6 fichiers se créent sans problème.
D'ailleurs, une fois que les fichiers CSV sont crées, il y a sur chaque ligne de chaque fichier des ";" (sauf la 1ère ligne). Il s'agirait de "retour charriot".
Est-ce qu'il y a un moyen de ne pas les créer au moment où la première macro se lance?
Merci
 

job75

XLDnaute Barbatruc
Bonjour Columbo,

J'avions point vu :
D'ailleurs, une fois que les fichiers CSV sont crées, il y a sur chaque ligne de chaque fichier des ";" (sauf la 1ère ligne). Il s'agirait de "retour charriot".
Les points-virgules ne sont pas du tout des retours chariot mais les séparateurs de colonnes (champs).

Ma macro en crée 9 sur chaque ligne (y compris la 1ère) puisqu'il y a 10 colonnes.

Je ne vois pas le rapport avec votre "blocage" d'ailleurs si je comprends bien les 6 fichiers CSV se créent !!!

A+
 

Columbo

XLDnaute Nouveau
Bonjour job75,
Le blocage apparait chez moi lorsque le fichier se trouve ailleurs que dans le dossier téléchargement. Dans le fichier téléchargement la macro créée bien les 6 fichiers.
Les fichiers CSV sont ensuite intégrés sur une plate-forme qui les rejettent à cause des points virgules à la fin.
Est-ce qu'il existe un moyen de ne pas créé les points virgules à la fin?
Merci
 

job75

XLDnaute Barbatruc
Est-ce qu'il existe un moyen de ne pas créé les points virgules à la fin?
Normalement dans un fichier CSV on ne touche pas aux points-virgules en fin de ligne.

Mais on peut facilement les supprimer, voyez ce fichier (5) et cette boucle :
VB:
        For k = Len(texte) To 1 Step -1
            If Right(texte, 1) = ";" Then texte = Left(texte, k - 1) Else Exit For
        Next k
 

Pièces jointes

  • test forum(5).xlsm
    38.7 KB · Affichages: 4

Columbo

XLDnaute Nouveau
Bonjour job75,
Bravo, la macro ne me met plus de ";" à la fin.
Par contre, chez moi, elle ne fonctionne que lorsque je suis dans le dossier "Téléchargement",
Si je suis sur un autre emplacement, ça bloque




Merci encore
 

job75

XLDnaute Barbatruc
Bonjour Columbo,

Je ne vois vraiment pas pourquoi chez vous le dossier Téléchargement se différencierait des autres dossiers.

Dans tous les cas la macro doit créer les fichiers CSV dans ThisWorkbook.Path.

Faites un test : avant la ligne qui beugue: mettez l'instruction MsgBox ThisWorkbook.Path

Qu'indique exactement le message ?

A+
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…