Macro : enregistrer feuille 5 en csv puis xlsm
Salut le forum,
alors je cherche juste a améliorer mon fichier excel qui est en xlsm et fonctionnement très bien mais en rajoutant une nouvelle fonction :
une macro qui va enregistrer ma feuille 5 en CSV séparateur point virgule avec une taille max
ci joint mon code utilisé pour la fonction print
".PageSetup.PrintArea = ""
.PageSetup.PrintArea = "$A$1:$J$" & t "
en gardant t qui est donc le nombre max de lignes que je souhaite
Donc taille max de A à J avec t le nombre max de lignes
j'ai déjà une macro pour enregistrer mon fichier de base, ci joint le code
"Dim Chemin$, mondossier$, Fichier$
Chemin = "D:\Utilisateurs\M140067\Desktop\"
Fichier = Sheets("Liste").Range("D3") & ".xlsm"
ActiveWorkbook.SaveAs Chemin & "\" & Fichier"
donc je souhaiterais garder le même nom de fichier (Sheets("Liste").Range("D3")), le même chemin mais enregistrer en csv séparateur point virgule non pas la feuille active mais la feuille 5 (bouton positionné sur la feuille 2 par exemple) et SURTOUT que mon fichier reste ouvert et en xlsm donc avec un double enregistrement ?
sur chaque page j'ai activé la macro suivante "ActiveWorkbook.Save" mais ducoup ça va continuer de sauvegarder le .csv ? alors que je veux juste créer un .csv spécifique mais continuer de travailler sur mon .xlsm de base
Dites moi si avez besoin de plus d'infos et merci d'avance pour votre aide !
Alors j'ai travaillé sur mon soucis et j'arrive au code suivant :
Sub csv()
'
' csv Macro
'
Dim sh5, sh2, sh1
Set sh5 = Sheets("CSV")
Set sh2 = Sheets("tirage")
Set sh1 = Sheets("Liste")
With sh5
Dim Plage As Object, oL As Object, oC As Object, Tmp$, Sep$
Sep = ";"
Set Plage = .Range("A1:J" & sh2.Range("J4").End(xlUp).Row)
Open "Fichiers.csv" For Output As #1
For Each oL In Plage.Rows
Tmp = ""
For Each oC In oL.Cells
Tmp = Tmp & CStr(oC.Text) & Sep
Next
Print #1, Tmp
Next
End With
Close
End Sub
donc la macro m'enregistre bien un fichier csv de la feuille 5 de A à J mais pas avec le bon nombre de lignes.
& sh2.Range("J4").End(xlUp).Row) -> je souhaite que le nombre max de lignes soit le nombre rentré dans la cellule J4 en feuille 2, comment faire ?
Autre problème : je souhaite que le nom du fichier soit modifiable
Open "Fichiers.csv" For Output As #1
avec le texte rentré en cellule D4 de la feuille 1
et que le fichier s'enregistre sous : S:\VDN\Com_Interne\Travail Commun - Tirages\
Est ce possible ? je bloque vraiment sur ces 2 variables, merci d'avance votre aide