Besoin d'aide pour modifier une macro

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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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.
 
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
 
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 ?
 
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 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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
733
Réponses
2
Affichages
440
Réponses
2
Affichages
573
Réponses
5
Affichages
847
Réponses
4
Affichages
692
Réponses
35
Affichages
2 K
Retour