1 pièce(s) jointe(s)
Verification, création, répertoire, fichier et attribut
Bonjour,
Avec ce que j’ai collecté sur le forum, j’ai voulu faire une macro pour créer un fichier CSV dans un répertoire.
Mais à priori, j’ai voulu vérifié que le dossier existe et le créer s’il n’existe pas.
Puis créer le fichier csv (en lecture seule) dans ce répertoire.
Mais j’ai vite déchanté, j’ai obtenu un résultat bizarre (en fait, c’est mon code qui est bizarre).
Le Répertoire est créé, mais le fichier est enregistré dans "MesDocuments". Je n'ai rien compris.
J’espère être clair, je voudrais parvenir à recréer ce fichier csv s’il est effacé ou le mettre à jour.
Mon premier souci est l’enregistrement de ce fichier dans le bon répertoire.
Le second est le « SetAttr Fichier, vbNormal » quand le fichier n’a pas encore été créé.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
| Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim nomdossier As String, chemin As String, Fichier As String, nomfichier As String
Dim i, j, DernièreLigne, DernièreColonne
'----------------------------------------------------------------------------------------------
nomdossier = "Archive des BD"
nomfichier = "Historique des connexions" & ".csv"
chemin = ThisWorkbook.Path
ChDir chemin 'se place sur le repertoire du programme
If Dir(chemin & "\" & nomdossier & "\", vbDirectory) = "" Then
MkDir chemin & "\" & nomdossier
End If
repert = chemin & "\" & nomdossier
ChDir repert
Fichier = repert & "\" & nomfichier
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Application.ScreenUpdating = False
With Sheets("Connexion")
.Visible = True
.Activate
'On Error Resume Next
'SetAttr Fichier, vbNormal
Open nomfichier For Output As #1 'Tu crées le fichier
DernièreColonne = .Range("A1").End(xlToRight).Column
DernièreLigne = .Cells(1, 1).SpecialCells(xlCellTypeLastCell).Row '- 1
For i = 1 To DernièreLigne
For j = 1 To DernièreColonne ' - 1
Print #1, Cells(i, j).Value, ";";
Next j
Print #1, Cells(i, j + 1).Value
Next i
Close #1
'SetAttr Fichier, vbReadOnly
.Visible = False
End With
Sheets("Menu").Activate
Application.ScreenUpdating = True
End Sub |
Je vous remercie pour votre aide.
NB:La feuille "Connexion" concernée par le fichier csv est cachée.
Cordialement,