Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
Alors mon pb que je ne sais pas trop comment faire en ligne de commande (.bat) pour protéger un fichier csv par un mot de passe.
mon fichier est importer automatiquement par un PROC sqlserver au G:\FILES\EXPORT\APPLI_AS\monfichier.csv
je voudrais donc, créer un fichier .bat qui permet de rajouter un mdp à ce fichier et de le renvoyer par un sftp vers une répertoire partagé par une équipe de compta.
Pour le mot de passe d'accès je ne sais pas (j'ai des doutes) mais une autre idée serait peut être de crypter le fichier.
Tous le monde peut ouvrir le fichier mais pour l'utiliser il faudra le décrypter avec le bon mot de passe.
Bonjour,
Si le répertoire partagé est accessible à un groupe d'utilisateurs, il n'y a pas besoin d'intervenir sur le fichier csv Vu que seulement les personnes identifiées dans le groupe pourront y avoir accès.
Merci pour vos retours.
Sinon, c'est j'ai choisis le format .xlsx est ce que y'a un moyen de protéger le fichier par un mot de passe ? Merci d'avance. @dysorthographie, effectivement l'accès est restreint aux personnes qui ont le droit sur le répertoire \APPLI_AS, mais le fichier est destiné à deux personnes (Responsable, et son adjoint) seulement !
Les mots de passe il faut les mettre dans un coffre-fort numérique comme par exemple keepass. Il suffit de retenir le mot de passe qui ouvre le coffre-fort numérique (bien le choisir et très difficile à deviner) et on accède à tous ses mots de passe. La robustesse du cryptage du coffre-fort dépend du mot de passe choisi.
@dysorthographie, effectivement l'accès est restreint aux personnes qui ont le droit sur le répertoire \APPLI_AS, mais le fichier est destiné à deux personnes (Responsable, et son adjoint) seulement !
Tu peux peut-être demander à ton SI de créer un groupe de 3 personnes, toi, le chef et son adjoint après tu crées le fichier et tu donnes le droit d'accès à ce groupe seul.
À bientôt
PS : Là sur mon PC je ne peux pas te faire d'exemple mais au boulot on utilisait ce principe.
Le cryptage des fichiers CSV me paraît une très bonne solution.
Téléchargez les fichiers zippés joints.
Le fichier "Cryptage.xlsm" est protégé avec le mot de passe 123
Le fichier "Fichier CSV.csv" est crypté, je vous laisse le décrypter, voyez les macros :
VB:
Sub Nouveau_cryptage()
If MsgBox("Attention êtes-vous sûr que tous les fichiers CSV ont été décryptés ?", 4, "Nouveau cryptage") = 7 Then Exit Sub
Application.ScreenUpdating = False
With [A2:C225]
.Columns(3) = .Columns(2).Value
.Columns(4) = "=RAND()"
.Columns(4) = .Columns(4).Value
.Columns(3).Resize(, 2).Sort .Columns(4), xlAscending, Header:=xlNo 'tri
.Columns(4).ClearContents
End With
End Sub
Sub Decryptage()
Dim fichier As Variant, a, d As Object, i&, x$, j%
fichier = Application.GetOpenFilename("Fichiers .csv (*.csv), *.csv")
If fichier = False Then Exit Sub
If MsgBox("Attention êtes-vous sûr que ce fichier CSV est crypté ?", 4, "Décryptage") = 7 Then Exit Sub
a = [B2:C225]
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(a)
d(CStr(a(i, 2))) = a(i, 1)
Next i
Application.ScreenUpdating = False
With Workbooks.Open(fichier).Sheets(1) 'ouverture avec une seule colonne
a = .UsedRange.Resize(, 2) 'matrice, plus rapide, au moins 2 éléments
For i = 1 To UBound(a)
x = a(i, 1)
For j = 1 To Len(x)
Mid(x, j, 1) = d(Mid(x, j, 1))
Next j
a(i, 1) = x
Next i
.UsedRange = a
.Parent.Save 'enregistrement
End With
Application.ScreenUpdating = True
MsgBox "Le fichier CSV a été décrypté et enregistré", , "Décryptage"
End Sub
Sub Cryptage()
Dim fichier As Variant, a, d As Object, i&, x$, j%
fichier = Application.GetOpenFilename("Fichiers .csv (*.csv), *.csv")
If fichier = False Then Exit Sub
If MsgBox("Attention êtes-vous sûr que ce fichier CSV est décrypté ?", 4, "Cryptage") = 7 Then Exit Sub
a = [B2:C225]
Set d = CreateObject("Scripting.Dictionary")
For i = 1 To UBound(a)
d(CStr(a(i, 1))) = a(i, 2)
Next i
Application.ScreenUpdating = False
With Workbooks.Open(fichier).Sheets(1) 'ouverture avec une seule colonne
a = .UsedRange.Resize(, 2) 'matrice, plus rapide, au moins 2 éléments
For i = 1 To UBound(a)
x = a(i, 1)
For j = 1 To Len(x)
Mid(x, j, 1) = d(Mid(x, j, 1))
Next j
a(i, 1) = x
Next i
.UsedRange = a
.Parent.Save 'enregistrement
End With
Application.ScreenUpdating = True
MsgBox "Le fichier CSV a été crypté et enregistré", , "Cryptage"
End Sub
Hello,
en ce qui concerne les mots de passe en clair dans du code, j'ai peut-être trouvé une astuce pour les cacher :
Utiliser la base de registre et le HKCU ( utilisateur) car normalement seuls les administrateurs et l'utilisateur loggé peuvent y accéder (sinon permission refusée pour un autre utilisateur normal)
Principe on écrit le mot de passe dans sa HKCU comme ceci par exemple :
VB:
With CreateObject("WScript.Shell")
.RegWrite "HKCU\Software\MyApp\MdP", "MonMotDePasse", "REG_SZ"
End With
et ensuite quand on a besoin du mot de passe on le lit comme ceci :
VB:
With CreateObject("WScript.Shell")
sPwd = .RegRead("HKCU\Software\MyApp\MdP")
End With
Normalement, il n'y a que l'utilisateur qui a écrit le mot de passe et les administrateurs qui pourront lire le
mot de passe.
Ami calmant, J.P
Un fichier CSV (Comma-Separated Values) est un fichier texte brut qui ne prend pas en charge nativement les fonctionnalités de sécurité comme la protection par mot de passe. Cependant, voici plusieurs méthodes pour le protéger, selon vos besoins.
1. Compresser le fichier avec un mot de passe
Utilisez un outil de compression tel que WinRAR, 7-Zip, ou le ZIP intégré à Windows pour créer une archive contenant le fichier CSV et protéger cette archive par un mot de passe.
Étapes avec 7-Zip :
1. Faites un clic droit sur le fichier CSV.
2. Sélectionnez Ajouter à l'archive....
3. Définissez un mot de passe dans la section Cryptage.
2. Convertir en fichier Excel avec mot de passe
Ouvrez le fichier CSV dans Excel, puis enregistrez-le au format Excel (XLSX). Ajoutez ensuite un mot de passe au fichier.
Étapes dans Excel :
1. Ouvrez le fichier CSV.
2. Allez dans Fichier > Informations > Protéger le classeur > Chiffrer avec un mot de passe.
3. Entrez un mot de passe et enregistrez le fichier.
3. Chiffrer le fichier avec un script VBA
Vous pouvez chiffrer le contenu d'un fichier CSV en utilisant un algorithme de chiffrement basique en VBA, comme XOR.
Exemple VBA pour chiffrer un fichier CSV
Le script suivant lit un fichier CSV, applique un chiffrement simple (XOR) avec un mot de passe, et enregistre le résultat dans un nouveau fichier chiffré.
Code:
Sub EncryptCSV()
Dim inputFile As String
Dim outputFile As String
Dim password As String
Dim inputData As String
Dim encryptedData As String
Dim i As Long
' Définir les chemins des fichiers
inputFile = "C:\chemin\vers\fichier.csv"
outputFile = "C:\chemin\vers\fichier_chiffre.csv"
password = "VotreMotDePasse"
' Lire le contenu du fichier d'entrée
Dim fileContent As String
Open inputFile For Input As #1
fileContent = Input$(LOF(1), #1)
Close #1
' Chiffrement avec XOR
For i = 1 To Len(fileContent)
encryptedData = encryptedData & Chr(Asc(Mid(fileContent, i, 1)) Xor Asc(Mid(password, (i - 1) Mod Len(password) + 1, 1)))
Next i
' Enregistrer les données chiffrées dans le fichier de sortie
Open outputFile For Output As #1
Print #1, encryptedData
Close #1
MsgBox "Fichier CSV chiffré avec succès !"
End Sub
Code:
Sub DecryptCSV()
Dim inputFile As String
Dim outputFile As String
Dim password As String
Dim inputData As String
Dim decryptedData As String
Dim i As Long
' Définir les chemins des fichiers
inputFile = "C:\chemin\vers\fichier_chiffre.csv"
outputFile = "C:\chemin\vers\fichier_dechiffre.csv"
password = "VotreMotDePasse"
' Lire le contenu du fichier chiffré
Dim fileContent As String
Open inputFile For Input As #1
fileContent = Input$(LOF(1), #1)
Close #1
' Déchiffrement avec XOR
For i = 1 To Len(fileContent)
decryptedData = decryptedData & Chr(Asc(Mid(fileContent, i, 1)) Xor Asc(Mid(password, (i - 1) Mod Len(password) + 1, 1)))
Next i
' Enregistrer les données déchiffrées dans le fichier de sortie
Open outputFile For Output As #1
Print #1, decryptedData
Close #1
MsgBox "Fichier CSV déchiffré avec succès !"
End Sub
Comment utiliser ce script :
1. Remplacez C:\chemin\vers\fichier.csv par le chemin de votre fichier CSV.
2. Remplacez VotreMotDePasse par votre mot de passe souhaité.
3. Exécutez la macro depuis l'éditeur VBA.
Pour déchiffrer, exécutez le même script en inversant le rôle des fichiers d'entrée et de sortie.
4. Stocker le fichier sur un service sécurisé
Si vous partagez le fichier, stockez-le sur une plateforme sécurisée comme Google Drive, OneDrive, ou Dropbox, et restreignez l'accès avec un mot de passe ou une authentification.
5. Utiliser une base de données protégée
Pour des données fréquemment manipulées, envisagez de stocker les données dans une base de données (par ex. MySQL, PostgreSQL) avec un chiffrement pour une meilleure sécurité.
Conclusion
Ces méthodes permettent de protéger vos fichiers CSV de différentes façons, en choisissant celle qui correspond à vos besoins techniques et de sécurité.
Hello,
Pour crypter et décrypter un fichier en VBA on peut aussi utiliser 7zip en ligne de commande (si il est installé) car il permet non seulement de crypter des fichiers avec un mot de passe mais aussi de compresser les fichiers. 7zip est souvent installé dans les entreprises car il est gratuit. Voici un code en VBA qui crypte un fichier et le décrypte :
VB:
Public Function EncryptFile(ByVal sFile As String, ByVal sZipFile As String, ByVal sPwd As String) As Long
Dim sExePath As String, sShellCmd As String
On Error GoTo Error_Handler
' Emplacement de 7-zip si installé
With CreateObject("WScript.Shell")
sExePath = .RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\7zFM.exe\Path")
' .RegWrite "HKCU\Software\MyApp\MdP", sPwd, "REG_SZ"
' Commande 7-zip pour encrypter le fichier
sShellCmd = Chr(34) & sExePath & "7z.exe" & Chr(34) & " a -tzip -p" & sPwd & " " & Chr(34) & _
sZipFile & Chr(34) & " " & Chr(34) & sFile & Chr(34)
End With
Shell sShellCmd
EncryptFile = 0
Debug.Print "EnCrypt OK"
Exit Function
Error_Handler:
MsgBox "Erreur " & Err.Number & " : " & Err.Description
EncryptFile = Err.Number
End Function
Public Function DecryptFile(ByVal sZipFile As String, ByVal sDestDir As String, ByVal sPwd As String)
Dim sExePath As String, sShellCmd As String
On Error GoTo Error_Handler
' Emplacement de 7-zip si installé
With CreateObject("WScript.Shell")
sExePath = .RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\7zFM.exe\Path")
' sPwd = .RegRead("HKCU\Software\MyApp\MdP")
' Commande 7-zip pour décrypter le ficher
sShellCmd = Chr(34) & sExePath & "7z.exe" & Chr(34) & " x -p" & sPwd & " " & Chr(34) & _
sZipFile & Chr(34) & " -o" & Chr(34) & sDestDir & Chr(34) & " -aoa"
End With
Shell sShellCmd
DecryptFile = 0
Debug.Print "Decrypt OK"
Exit Function
Error_Handler:
MsgBox "Erreur " & Err.Number & " : " & Err.Description
DecryptFile = Err.Number
End Function
Sub TestEncryptDecrypt()
Dim sFile As String
Dim sZipFile As String
Dim sPwd As String
Dim sDestDir As String
sFile = "D:\Temp\range.csv"
sZipFile = "D:\Temp\star_data.zip"
sPwd = "MyPassword"
sDestDir = "D:\Tmp"
Kill sZipFile
If EncryptFile(sFile, sZipFile, sPwd) <> 0 Then Exit Sub
If DecryptFile(sZipFile, sDestDir, sPwd) <> 0 Then Exit Sub
End Sub
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.