Besoin d'aide pour modifier une macro

  • Initiateur de la discussion yorrick
  • Date de début
Y

yorrick

Guest
bonjour,

J'utilise la macro suivante :

Private Sub CommandButton1_Click()
Dim Lig, Col, x0, x1 As Long
Dim b0, b1, b2, d, dv As String
Dim Fic, adxirs, adxifs As String

Fic = 'C:\\tft cde excel\\nomdufichier.txt'
d = Chr$(34)
dv = d + ';'

Sheets('Feuil1').Activate
Range('A1').Activate
Open Fic For Output As #1
b0 = ''
x0 = 0
Lig = 1
Do While ActiveCell.Offset(Lig, 0).Text <> ''
b1 = ActiveCell.Offset(Lig, 0).Text
x0 = x0 + 1
If x0 = 185 Then
x0 = 0
b0 = ''
End If
If b0 <> b1 Then
'---- nouvelle commande
Print #1, d & 'E' & dv;
Print #1, d & ActiveCell.Offset(Lig, 0).Text & dv;
Print #1, d & ActiveCell.Offset(Lig, 2).Text & dv;
Print #1, d & ActiveCell.Offset(Lig, 1).Text & d
b0 = b1
End If
Print #1, d & 'L' & dv;
Print #1, d & ActiveCell.Offset(Lig, 3).Text & dv;
Print #1, d & ActiveCell.Offset(Lig, 4).Text & d
Lig = Lig + 1
Loop
Close #1
MsgBox ('Fichier ' & Fic & ' généré !')
End Sub


J'aimerais pouvoir faire en sorte que le nom du fichier txt
soit demandé par une fenetre dans le fichier exce lors du lancement de la macro.

Ou si cela n'est pas possible le contenu d'une cellule de ma
feuille excel.

Merci d'avance de votre aide.
 

mutzik

XLDnaute Barbatruc
Bonjour Yorrick, le forum

Dim NomFichier As String
Do While NomFichier = ''
NomFichier = InputBox('Veuillez donner le nom du Fichier de sortie', 'NomFichier')
Loop

à rajouter dans ton code bien entendu

à+
Bertrand
 
Y

yorrick

Guest
Merci de vos reponses si rapide

Bertrand ...

Je met a quel endroit dans ma macro ton code car
la je seche un peu par rapport au lieu de stockage
du fichier.

J'espere que tu m'aura compris.
 
Y

yorrick

Guest
Merci arnaud de ta réponse

Mais j'ai encore un hic j'ai le message suivant :

erreur d'acces chemin/fichier

Voici a quoi ressemble ma macro maintenant :

Private Sub CommandButton1_Click()
Dim Lig, Col, x0, x1 As Long
Dim b0, b1, b2, d, dv As String
Dim Fic, adxirs, adxifs As String

Dim NomFichier As String
Do While NomFichier = ''
NomFichier = InputBox('Veuillez donner le nom du Fichier de sortie', 'NomFichier')
Loop

d = Chr$(34)
dv = d + ';'

Sheets('donttouch').Activate
Range('A1').Activate
Open Fic For Output As #1
b0 = ''
x0 = 0
Lig = 1
Do While ActiveCell.Offset(Lig, 0).Text <> ''
b1 = ActiveCell.Offset(Lig, 0).Text
x0 = x0 + 1
If x0 = 185 Then
x0 = 0
b0 = ''
End If
If b0 <> b1 Then
'---- nouvelle commande
Print #1, d & 'E' & dv;
Print #1, d & ActiveCell.Offset(Lig, 0).Text & dv;
Print #1, d & ActiveCell.Offset(Lig, 2).Text & dv;
Print #1, d & ActiveCell.Offset(Lig, 1).Text & d
b0 = b1
End If
Print #1, d & 'L' & dv;
Print #1, d & ActiveCell.Offset(Lig, 3).Text & dv;
Print #1, d & ActiveCell.Offset(Lig, 4).Text & d
Lig = Lig + 1
Loop
Close #1
MsgBox ('Fichier ' & Fic & ' généré !')
End Sub

Auriez vous la solution ?
 
A

Arnaud

Guest
effectivement c'est normal
Avant le nom de ton fichier était dans la variable Fic et maintenant elle est dans NomFichier.
Donc soit tu remplace partout Fic pour maintenant Nomfichier soit tu met le résultat dans Fic : Fic = InputBox('Veuillez donner le nom du Fichier de sortie', 'NomFichier')
 
A

Arnaud

Guest
a oui et pense a l'enlever partout NomFichier sinon ça va tourner en boucle :)

Code:
rivate Sub CommandButton1_Click()
Dim Lig, Col, x0, x1 As Long
Dim b0, b1, b2, d, dv As String
Dim Fic, adxirs, adxifs As String

Do While Fic = ''
Fic = InputBox('Veuillez donner le nom du Fichier de sortie', 'NomFichier')
Loop

d = Chr$(34)
dv = d + ';'

Sheets('donttouch').Activate
Range('A1').Activate
Open Fic For Output As #1
b0 = ''
x0 = 0
Lig = 1
Do While ActiveCell.Offset(Lig, 0).Text <> ''
b1 = ActiveCell.Offset(Lig, 0).Text
x0 = x0 + 1
If x0 = 185 Then
x0 = 0
b0 = ''
End If
If b0 <> b1 Then
'---- nouvelle commande
Print #1, d & 'E' & dv;
Print #1, d & ActiveCell.Offset(Lig, 0).Text & dv;
Print #1, d & ActiveCell.Offset(Lig, 2).Text & dv;
Print #1, d & ActiveCell.Offset(Lig, 1).Text & d
b0 = b1
End If
Print #1, d & 'L' & dv;
Print #1, d & ActiveCell.Offset(Lig, 3).Text & dv;
Print #1, d & ActiveCell.Offset(Lig, 4).Text & d
Lig = Lig + 1
Loop
Close #1
MsgBox ('Fichier ' & Fic & ' généré !')
End Sub
 

mutzik

XLDnaute Barbatruc
Bonjour Yorrick, le fil et le forum,

Au lieu de dire simplement dans la inputbox le nom du fichier, tu peux très bien saisir la totale, à savoir : c:\\temp\\monDossier\\fichBAA.txt et il devrait le créer à cet endroit

Sinon :

- tu peux mettre dans une cellule le chemin dans lequel il faut créer le fichier par ex :

en b1 tu mets : c:\\temp\\monDossier\\
et dans ton code

Do While Fic = ''
Fic = InputBox('Veuillez donner le nom du Fichier de sortie', 'NomFichier')
Loop
fic = b1 & fic

ce qui va concaténer ton répertoire et lui ajouter le nom du fichier que tu viens de donner dans inputbox

à+
Bertrand
 

Discussions similaires

Réponses
25
Affichages
835

Membres actuellement en ligne

Statistiques des forums

Discussions
312 196
Messages
2 086 100
Membres
103 116
dernier inscrit
kutobi87