Créer et coller les lignes du tableau dans un fichier txt [Résolu/Fermé]

Signaler
Messages postés
260
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
2 octobre 2019
-
roideseaux
Messages postés
260
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
2 octobre 2019
-
Bonjour,

Comme le titre l'indique, je cherche à créer un fichier et y placer les lignes non vides de mon tableau de la colonne A à T.
Je voudrais également une fenêtre contextuelle pour sélectionner le chemin ou sera enregistré le fichier ainsi que le choix de choisir le nom de ce fichier.

Voilà ce que j'ai fait pour le moment :
Sub Ecriture()
Dim Chemin As String
Dim DerniereLigne As Long           'Index de la dernière ligne
Dim Tableau() As Variant
Dim Ligne As Long

Dim Repertoire As FileDialog

Set Repertoire = Application.FileDialog(msoFileDialogFolderPicker)
Repertoire.Show

Chemin = CStr(Repertoire.SelectedItems(1))

DerniereLigne = Range("A1").SpecialCells(xlCellTypeLastCell).Row

'Création du tableau par une boucle
Ligne = 2
Do While Ligne <= DerniereLigne
 'Ajout 1 élément à l'array en conservant les éléments précédents
    ReDim Preserve Tableau(Ligne)
'Affectation de la valeur au nouvel élément
    'Tableau(Ligne) = Range("A" & Ligne).Value
    Tableau(Ligne) = Range(Cells(Ligne, 0), Cells(Ligne, 19)).Value
    Ligne = Ligne + 1
Loop

'Ecrit dans le fichier txt
Ligne = 1
Do While Ligne <= DerniereLigne
    Open Chemin & "Vision.plx" For Append As #Ligne
    Print #Ligne, Tableau(Ligne)
    Close
    Ligne = Ligne + 1
Loop
    
MsgBox ("c'est ok")

End Sub


Il faut savoir mes lignes contiennent des formules pour la mise en forme de tous les éléments, donc quand je dis lignes non vides, je ne prend bien sur pas en compte les lignes ou il y a une formule mais pas de donnée (j'y ai fait un SIERREUR(Z1*25.4;"") ce qui me permet de ne rien afficher lorsque ma case Z1 est vide).
Donc voilà, ma macro a fonctionné mais elle ne fonctionne plus. De plus lorsqu'elle fonctionnait je crois qu'elle prenait également les lignes "vides".

Merci !

4 réponses

Messages postés
14949
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
17 janvier 2020
1207
Bonjour
Pourquoi le fichier est ouvert et ferme à l'intérieur de la boucle for?
Pourquoi en append, car à chaque lancement de votre Sub vous ajouter des lignes au fichier?
Quelle cellule est testée pour savoir si "ligne" vide?
roideseaux
Messages postés
260
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
2 octobre 2019
3
Pour savoir si une ligne est "vide" c'est la cellule en A qui est testée

C'est vrai que ce n'est pas logique de faire une ouverture et une fermeture à chaque ligne à écrire...
J'avouerais que le code n'est pas entièrement de moi, j'y ai juste ajouté quelques fonctions (comme la sélection du chemin). Donc pour le append, je ne sais pas du tout :/
f894009
Messages postés
14949
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
17 janvier 2020
1207 > roideseaux
Messages postés
260
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
2 octobre 2019

Re,

Pour l'ouverture fichier, il suffit de dire si vous voulez un fichier avec seulement les enregistrements en cours ou si vous voulez empilez dans le meme fichier x tour de votre programme
Messages postés
260
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
2 octobre 2019
3
Je débute en VBA, donc je ne suis absolument pas doué, j'arrive à peut près a comprendre ce que je lis mais pour coder ce que j'ai en tête, c'est un peu plus compliqué !!
Je voudrais que ma macro demande un chemin pour créer un fichier txt et y place les lignes de ma feuille qui ne sont pas vides, et si c'est possible sans prendre les lignes qui contiennent une formule mais dont le calcul renvoi une erreur (dans ce cas, je n'affiche pas le résultat sur ma feuille)...
Le code que j'ai mit au début doit surement être pas mal modifié pour arriver au résultat que je voudrais...?
f894009
Messages postés
14949
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
17 janvier 2020
1207
Bonjour,

Je vous fais un exemple.

Possible d'avoir votre fichier sans donnees sensible, pour voir vos histoires de formules
Pour transmettre un fichier,
Veillez a ce qu'il n'y ait PAS DE DONNEES CONFIDENTIELLES
il faut passer par un site de pièce jointe tel que cjoint.com
Quel separateur entre les donnees: espace, point-virgule, ou .....?

Allez sur ce site : http://cjoint.com
Clic sur parcourir,
Cherche ton fichier,
clic sur ouvrir,
Clic sur "Créer le lien cjoint",
Copier le lien,
Revenir ici le coller dans une réponse...
A+
Messages postés
260
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
2 octobre 2019
3
Bonsoir,

voilà un lien pour accéder au téléchargement de mon fichier :
http://www.cjoint.com/c/FKCwCQhww7x

En fait, pour faire simple, je colle une suite de données dans la case X et cette suite est ensuite décomposée et classée dans les cases de A a T.
Et je voudrais que l'extraction soit faite sur les cases de A à T.

merci :)
f894009
Messages postés
14949
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
17 janvier 2020
1207
Bonjour,

Oui, mais quel separateur entre les donnees cellules d'une meme ligne??????

suite:
fichier modifie avec Colonne X pour nombre de ligne, Colonne H en test non vide pour enregistrer la "ligne" et tabulation en separateur de donnee ligne

http://www.cjoint.com/c/FLcj0mZCEqf

A+
Messages postés
260
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
2 octobre 2019
3
Personne ?
f894009
Messages postés
14949
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
17 janvier 2020
1207
Bonjour,
Vous le faites exprès, regardez le post 8. J'ai modifié votre fichier, récupérez le et dites nous que faire pour la suire
roideseaux
Messages postés
260
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
2 octobre 2019
3
Oups, désolé, je n'avais pas vu le message, il me semblai pourtant avoir actualisé la page...

Merci, ça fonctionne :)
pour le séparateur, il n'y a pas d'importance, du moment que les données ne soient pas collées !
Je continu mes tests avant de marquer résolu :)
roideseaux
Messages postés
260
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
2 octobre 2019
3
Encore une petite chose,
Je cherche à pouvoir modifier le nom du fichier enregistré, sauf que quand je passe par msoFileDialogSaveAs, je n'ai pas la possibilité de prendre comme extension .plx (c'est un format peu commun !)
Donc est-ce qu'il est possible tout de même de modifier cette extension, ou bien faut-il créer une infobox pour demander le nom du fichier ?
f894009
Messages postés
14949
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
17 janvier 2020
1207 > roideseaux
Messages postés
260
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
2 octobre 2019

Bonjour
Avec une inputbox ça devrait le faire,ceci avant la ligne open, remplacez le vision.plx par la variable qui reçoit le inputbox complétée du ".plx". Évidemment,tester que le inputbox ne soit pas égal à rien
roideseaux
Messages postés
260
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
2 octobre 2019
3 > f894009
Messages postés
14949
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
17 janvier 2020

impeccable !
merci !