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".
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?
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 :/
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
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...?
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 : https://www.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+
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.
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
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 :)
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 ?
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
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 :/
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