Existence de fichier et creation de fichier
Bonjour,
je suis novice niveau codage et je ne c'est pas ou mon code pèche, si quel q'un aurait l’amabilité de m'indiqué ou je commet une erreur.
merci d'avance
SlideShowWindows(Index:=1).View.Next
End Sub
Sub suiv12_Click()
'Initialise les champs
TkR1 = ""
TkR2 = ""
TkR3 = ""
TkR4 = ""
'Nom de la personne
TkR1 = TextBox1.Value
'Adresse de la personne
TkR2 = TextBox2.Value
'Email de la personne
TkR3 = TextBox3.Value
'autres infos
TkR4 = TextBox4.Value
' variable
Dim chemin_dossier As String
' identifier le chemin du dossier
chemin_dossier = "C:\Users\Joker\Desktop\projet 2\"
' Test l'existence du fichier
If Dir(chemin_dossier, vbDirectory) <> vbNullString Then
Open "FICHTEST.csv" For Output As #1 ' Création du fichier en écriture.
'Open "FICHTEST" For Random As #1
Print #1, "nom"; ";"; "adresse"; ";"; "email"; ";"; "Autres"
Close #1
Else
Open "FICHTEST.csv" For Append As #1 ' Ouvre le fichier en écriture.
Print #1, TkR1; ";"; TkR2; ";"; TkR3; ";"; TkR4 ' Écrit le texte dans le fichier.
TextBox1.Value = ""
TextBox2.Value = ""
TextBox3.Value = ""
TextBox4.Value = ""
Close #1 ' Ferme le fichier.
End If
End SubBonjour,
Voici un essai :
Sub suiv12_Click()
Dim dossier As String
TkR1 = TextBox1.Value
TkR2 = TextBox2.Value
TkR3 = TextBox3.Value
TkR4 = TextBox4.Value
dossier = "C:\Users\Joker\Desktop\projet 2\"
chemin = dossier & "FICHTEST.csv"
' Test l'existence du fichier
If Dir(chemin) <> "" Then
Open chemin For Output As #1 ' Création du fichier en écriture.
Print #1, "nom"; ";"; "adresse"; ";"; "email"; ";"; "Autres"
Close #1
Else
Open chemin For Append As #1 ' Ouvre le fichier en écriture.
Print #1, TkR1; ";"; TkR2; ";"; TkR3; ";"; TkR4 ' Écrit le texte dans le fichier.
TextBox1.Value = ""
TextBox2.Value = ""
TextBox3.Value = ""
TextBox4.Value = ""
Close #1 ' Ferme le fichier.
End If
End SubCdlt,
Bonjour tout le monde.
Une contribution expliquée : tu peux laisser les n° de ligne pour tester le code tel quel, elles seront traitées comme des étiquettes.
Private Sub CommandButton1_Click()
1 Dim dossier As String, sdossier As String, tablo() As String
2 Dim i As Integer
3
4 dossier = "C:\Users2\Joker\Desktop\projet 2\"
5 ' Si le dossier n'existe pas, on le crée
6 If Dir(dossier, vbDirectory) = "" Then
7 tablo = Split(dossier, "\")
8 For i = 0 To UBound(tablo) - 1
9 sdossier = sdossier & tablo(i) & "\"
10 If i > 0 Then
11 MkDir Left(sdossier, Len(sdossier) - 1)
12 End If
13 Next i
14 End If
15
16 ' Maintenant le dossier existe
17 If Dir(dossier & "FICHTEST.csv", vbNormal) = "" Then
18 ' Si le fichier n'existe pas on le crée avec la barre des titres
19 Open dossier & "FICHTEST.csv" For Output As #1
20 Print #1, "nom;adresse;email;Autres"
21 Close #1
22 Else
23 ' sinon on le remplit avec le formulaire
24 Open dossier & "FICHTEST.csv" For Append As #1
25 Print #1, TkR1 & ";" & TkR2 & ";" & TkR3 & ";" & TkR4
26 Close #1
27 End If
28 Unload Me
End SubA la ligne 4, j'ai remplacé le dossier c:\Users par c:\Users2 parce que pour écrire dans c:\Users (qui est un dossier système), il y a une procédure d'administration qui serait compliquée et hors sujet. Si tu mets en place une gestion d'erreur, tu devrais obtenir une erreur 75.
De la ligne 6 à 14 on crée la série des sous-dossiers en cascade, car il n'est pas possible de créer directement le sous-dossier "C:\Users2\Joker\Desktop\projet 2\".
On aurait aussi bien pu écrire :
MkDir"C:\Users2"
MkDir "C:\Users2\Joker"
MkDir "C:\Users2\Joker\Desktop"
MkDir "C:\Users2\Joker\Desktop\projet 2\"
mais un tableau est plus pratique (à mon avis) pour faire ça, même si c'est plus difficile à lire.
A la ligne 20 tu t'es cassé la tête pour rien en cherchant à mettre des séparateurs : on va plus vite avec
Print #1, "nom;adresse;email;Autres"Le reste, tu sais faire. Bonne journée à vous.