Exporter les données de plusieurs cellules dans un fichier texte

Bonjour,

Mon besoin est très proche de ce sujet : https://forum.excel-pratique.com/excel/creer-nommer-et-enregistrer-un-fichier-txt-80692

Je veux exporter le contenu de plusieurs cellules dans un fichier .txt. S'il existe alors on écrase.

Il faut pouvoir détecter la colonne et la ligne de fin. En clair, on part toujours de B9 par exemple et d'après le fichier joint :

• Cas1 : on doit exporter B9:B16

• Cas : on doit exporter B9:C14

Merci par avance pour votre aide.

EDIT : précision importante, le rendu dans le fichier txt doit correspondre un copier/coller.

Dans le cas 2 par exemple, le rendu dans le fichier txt doit être (un espace entre les 2 valeurs d'une même ligne) :

Et si possible, ne pas utiliser le presse-papier pour récupérer le contenu car le code sera exécuté dans une VM et elle a tendance à figer quand on déclenche le presse-papier :)

A9    B9
A10    B10
A11    B11
A12    B12
5classeur1.xlsm (9.29 Ko)

Bonsoir,

un essai (supposant que le nom du futur fichier sera dans la cellule A1)

Sub test()
Dim numfich As Long
Dim Tblo
Dim DerLig As Long, I As Long
With Sheets("Cas2")
    DerLig = .Cells(Rows.Count, "B").End(xlUp).Row
    Tblo = .Range("B9:C" & DerLig)
    numfich = FreeFile
    Open ThisWorkbook.Path & "\" & .Range("A1").Value & ".txt" For Output As #numfich
    For I = LBound(Tblo) To UBound(Tblo)
        Select Case Tblo(I, 2)
            Case ""
                Print #numfich, Tblo(I, 1) & vbCrLf;
            Case Else
                Print #numfich, Tblo(I, 1) & " " & Tblo(I, 2) & vbCrLf;
        End Select
    Next I
End With
Close #numfich
End Sub

Peut-être? (choix du dossier d'enregistrement à définir..)

Merci, je reste ça demain sans faute.

J'ai quelque chose d'intéressant via : https://forum.excel-pratique.com/s/goto/447978

Je vous fais un retour au plus vite.

Bonne soirée.

Bonjour,

C'est parfait comme ça, le chemin du fichier de sortie, je l'ai mis en dur car il ne bougera pas.

Merci pour ton aide & bonne journée !

Et comment envoyer de la même manière la sélection actuelle (une cellule ou plusieurs cellules en surbrillance) ?

Bonjour,

Pas sûr de bien comprendre...

Tu sélectionnes une plage, et tu voudrais imprimer cette plage dans un fichier txt?

Combien de colonnes pourrait comporter cette plage? (max :2?)

Si max=2, tu peux remplacer :

Code supprimé

S'il peut y avoir plus de colonnes, il faut revoir un peu le code, avec une boucle supplémentaire sur le nombre de colonnes du Tblo

Alors oui une plage de plusieurs cellules (sur 1 colonne et plusieurs lignes OU 2 colonnes max et 1 ou plusieurs lignes) ou une seule cellule. Il se peut qu'il y ait d''autres valeurs dans les cellules voisines mais on s'en occupe pas, pas de dernière ligne/colonne à identifier cette fois.

L'idéale serait de prendre en compte la sélection actuelle. Si pas possible alors, il faudrait faire 2 macros.
En tout cas, merci encore car ça va me faire gagner beaucoup de temps.

Re-,

OK, mon code précédent va déclencher une erreur s'il n'y a qu'une colonne, désolé....

Essaie avec ce code :

Sub test()
Dim numfich As Long
Dim Tblo

Tblo = Selection
numfich = FreeFile
Open ThisWorkbook.Path & "\" & .Range("A1").Value & ".txt" For Output As #numfich
For I = LBound(Tblo) To UBound(Tblo)
        Select Case Selection.Columns.Count
            Case 1
                Print #numfich, Tblo(I, 1) & vbCrLf;
            Case Else
                Print #numfich, Tblo(I, 1) & " " & Tblo(I, 2) & vbCrLf;
        End Select
Next I
Close #numfich
End Sub

Peut-être?

Mon explication manquait aussi de clarté, pas de soucis ;)

Ton nouveau code fonctionne bien quand je sélectionne plusieurs cellules de la même colonne mais pas quand :

- je sélectionne une seule cellule : incompatibilité de type avec renvoie sur

For I = LBound(Tblo) To UBound(Tblo)

- j'ai des lignes masquées : elles sont prises dans la copie alors que je voudrais que celles qui sont affichées/filtrées

(tu vois que je n'ai pas bien spécifié mon besoin de base :) ... désolé)

Pas de soucis si c'est plus simple de passer par 2 macros. Dans mon fichier, ça sera appliqué via des boutons ActiveX.

Re-,

Effectivement, avec un énoncé plus complet, et surtout un fichier exemple, on ne perdrait pas tout ce temps..

Peux-tu joindre un fichier exemple, avec autant d'onglets qu'il n'y a de potentielles contraintes, et le résultat espéré dans ce même onglet?

@ te relire

Voilà, j'ai listé tous les cas possibles. Encore désolé pour la perte de temps, je n'avais pas en tête tout ça au début.

3classeur1.xlsx (9.17 Ko)

Bonjour,

J'ai commencé, mais avant, je voudrais être sûr d'une chose...

Il n'y a pas de cas comportant des colonnes masquées????

Bonne journée

Bonjour,

Non, je n'ai que une ou deux colonnes.

Bonne journée également.

Re-,

Essaie alors avec ce code :

Sub test_2()
Dim numfich As Long
Dim Tblo
Dim I As Long, J As Long
numfich = FreeFile
Open ThisWorkbook.Path & "\" & Range("H1").Value & ".txt" For Output As #numfich
If Selection.Cells.Count > 1 Then
    Tblo = Selection
Else
    Print #numfich, Selection
    Close #numfich
    End
End If
J = 1
For I = LBound(Tblo) To UBound(Tblo)
        Select Case Selection.Columns.Count
            Case 1
                If Not Selection(I).Rows.Hidden Then Print #numfich, Tblo(I, 1) & vbCrLf;
            Case 2
                If Not Selection.Rows(J).Hidden Then Print #numfich, Tblo(I, 1) & " " & Tblo(I, 2) & vbCrLf;
                J = J + 1
        End Select
Next I
Close #numfich
End Sub

Bonne journée

C'est très concluant avec les cas de tests, bravo !

J'intégère ça dans mon fichier réel et te tiens au courant. Merci.

Je n'ai pas pu terminer mes tests dans mes fichiers réels mais tout fonctionne à merveille jusqu'ici donc je clos ce sujet.

Bonne journée.

Rechercher des sujets similaires à "exporter donnees fichier texte"