Probleme export Excel vers format texte
Bonjour,
je ne connais rien en VBA mais j'ai commencé à utiliser des codes macros que j'ai adapté à mes besoins. Les codes récupérés sur Internet grâce à un moteur de recherche et mis bout à bout m'ont permis de réaliser ce que je souhaitais. Il n'y a qu'un petit souci qui, malgré mes recherches, ne me permet pas d'automatiser complètement la procédure, et pour cela je viens voir si quelqu'un de vous serait capable de me donner la solution. La macro qui suit me permet de copier les valeurs d'une plage de cellules et de les coller dans un fichier texte. Ces cellules vont récupérer des données dans un autre fichier (B). Lorsque il n'y a pas de données dans ce fichier (B) une formule SI laisse la cellule du fichier A sans valeur apparente ex: SI([B.xlsx]Feuil1!A1="";"";[B.xlsx]Feuil1!A1) . Dans le fichier texte les cellules sont remplacées par des ";" (points virgules). C'est ce qu'il faut pour que ce fichier texte soit pris en compte par un logiciel de comptabilité publique. Sur une même ligne certaines cases sont vides et donc toutes séparées par les points virgules ";". Mais du coup, vu que les formules vont jusqu'à la ligne 100 (A1:DU100), toutes les lignes qui restent sans valeur ont aussi des ";". Le fichier texte n'est pas pris en compte par le logiciel de compta et il faut que j'aille effacer tous les ";" des lignes supplémentaires. En effet, du moment qu'il y a une formule même si visiblement aucune valeur n'apparaît, c'est quand même pris en compte comme un contenu. D'ailleurs si au lieu d'un fichier texte je crée un fichier csv et que je l'ouvres avec Excel, les cellules correspondantes sans valeur mais avec formules seront apparement vides si je cliques desssus, mais si au lieu de l'ouvrir avec Excel je l'ouvres avec le bloc notes ces cellules correspondantes seront séparées par les ";". Si je retournes via Excel et que j'effaces ces cellules apparement vides (dans ce fichier .csv il n'y a plus de formules) et bien il n'y aura plus de ";" dans le bloc note pour les lignes suivantes sans données... Comme quoi même si on ne voit rien, une information donne une indication sur ces cellules...
- J'ai cherché une macro avec un collé/copié spécial qui permettrait de ne pas prendre en compte les lignes sans valeur visible, je n'ai rien trouvé.
- J'ai cherché aussi une macro qui ne copie que les lignes avec valeurs affichées : rien trouvé.
- J'ai essayé de trouver une macro pour insérer (recopie incrémenté) automatiquement une ligne supplémentaire si la ligne correspondante du fichier B offre des données de manière à ce que aucune ligne supplémentaire ne s'affiche s'il n'y a pas de données sur les lignes du fichier B et ainsi que cela n'ajoute pas de ";" inutiles. Rien trouvé.
Merci de m'avoir lu jusque là. Si vous avez besoin d'éclaircissement je suis à votre écoute (j'espère que j'ai été assez clair)
le code actuel :
Sub Copicol()
'
' Copicol Macro
' coller données dans fichiers TXT
'
'
Sheets("pour ecritures").Select
Range("A3:DU100").Select
Range("DU100").Activate
Selection.Copy
Workbooks.Open Filename:= _
"E:\CHABANIERE\COMPTABILITE\ECRITURES\generation-d-ecritures\MANDATS - Macro\WMAMC001.txt"
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:= _
"E:\CHABANIERE\COMPTABILITE\ECRITURES\generation-d-ecritures\MANDATS - Macro\WMAMC001.txt" _
, FileFormat:=xlCSV, local:=True, CreateBackup:=False
ActiveWorkbook.Close
Range("A3").Select
Sheets("pour PJ").Select
Range("A3:H100").Select
Range("H100").Activate
Selection.Copy
Workbooks.Open Filename:= _
"E:\CHABANIERE\COMPTABILITE\ECRITURES\generation-d-ecritures\MANDATS - Macro\WMAMC001PJ.txt"
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:= _
"E:\CHABANIERE\COMPTABILITE\ECRITURES\generation-d-ecritures\MANDATS - Macro\WMAMC001PJ.txt" _
, FileFormat:=xlCSV, local:=True, CreateBackup:=False
ActiveWorkbook.Close
Range("A3").Select
Sheets("Tableau de Bord").Select
End Sub
Merci pour ceux qui essaieront de trouver une aide
bonne journée à tous et toutes