Je voudrais que dans les premieres utilisations les listes
déroulantes etant vides, saisir le nom des personnels afin qu'ils se
rajoutent dans la liste et que cette liste reste remplie meme apres
fermeture du document
Je voudrais que dans les premieres utilisations les listes
déroulantes etant vides, saisir le nom des personnels afin qu'ils se
rajoutent dans la liste et que cette liste reste remplie meme apres
fermeture du document
Je voudrais que dans les premieres utilisations les listes
déroulantes etant vides, saisir le nom des personnels afin qu'ils se
rajoutent dans la liste et que cette liste reste remplie meme apres
fermeture du document
Je voudrais que dans les premieres utilisations les listes
déroulantes etant
vides,
saisir le nom des personnels afin qu'ils se rajoutent dans la liste
et que cette liste reste remplie meme apres fermeture du document.
Je voudrais que dans les premieres utilisations les listes
déroulantes etant
vides,
saisir le nom des personnels afin qu'ils se rajoutent dans la liste
et que cette liste reste remplie meme apres fermeture du document.
Je voudrais que dans les premieres utilisations les listes
déroulantes etant
vides,
saisir le nom des personnels afin qu'ils se rajoutent dans la liste
et que cette liste reste remplie meme apres fermeture du document.
Bonjour,Je voudrais que dans les premieres utilisations les listes
déroulantes etantvides,
Au lieu de partir avec des listes vides, fais une liste dans le
bloc-notes sans faire Enter après le dernier nom et enregistre le
fichier au format texte (*.txt). Ensuite mets ceci dans un module de
ton fichier:
Remplace noms.txt par le nom de ton fichier texte et adapte le
chemin
d'accès
'========================================= > 'Pour Initialiser le combobox au lancement de la procédure, en
'utilisant les lignes du fichier noms.txt. Le ComboBox se nomme
Liste.
'La procédure renseignercombo est appelée à partir de la procédure
'UserForm_initialize de l'UserForm
'=========================================== > Public tableau
Sub renseignercombo()
Const ForAppending = 8
Const ForReading = 1
Const ForWriting = 2
Dim fs As Object, lefichier As Object
Dim derniereligne As Integer, nombrelignes As Integer
Dim ligne As String
Dim i As Integer, f1
'L'objet "FileSystemObjet" dispose de la propriété line
'qui permet de connaître le nombre de lignes du fichier.
'Ici on crée une liaison tardive avec FSO
Set fs = CreateObject("scripting.FileSystemObject")
'Associer la variable lefichier au FileSystemObject
Set lefichier = fs.opentextfile("c:mes documentsnoms.txt", _
ForAppending, True)
derniereligne = lefichier.Line
nombrelignes = derniereligne
lefichier.Close
ReDim tableau(nombrelignes)
Set lefichier = fs.opentextfile("c:mes documentsnoms.txt", _
ForReading, True)
'Relire le fichier et regrouper les noms dans un tableau unique
For i = 1 To derniereligne
ligne = lefichier.readline
UserForm1.Liste.AddItem (ligne)
tableau(i) = ligne
Next
lefichier.Close
Set fs = Nothing
End Subsaisir le nom des personnels afin qu'ils se rajoutent dans la liste
et que cette liste reste remplie meme apres fermeture du document.
'=================================== > 'Pour Mettre à jour la liste et enregistrer le fichier quand
'l'utilisateur choisit un nom et clique sur le bouton Retirer de son
'UserForm:
'==================================== >
Private Sub Retirer_Click()
Dim i As Integer, lebout As Integer
Dim fs As Object, lefichier As Object
UserForm1.Hide
lebout = UBound(tableau)
'Retirer le nom du contrôle
For i = 1 To lebout
If Liste.Value = tableau(i) Then
tableau(i) = ""
End If
Next
'Vider le contrôle
Liste.Clear
'Mettre le tableau à jour
For i = 1 To lebout - 1
If tableau(i) = "" Then
tableau(i) = tableau(i + 1)
tableau(i + 1) = ""
End If
Next
lebout = lebout - 1
ReDim Preserve tableau(lebout)
'Écrire le nouveau fichier
Set fs = _
CreateObject("scripting.FileSystemObject")
Set lefichier = _
fs.CreateTextFile("c:mes documentsnoms.txt")
For i = 1 To lebout
If i < lebout Then
lefichier.writeline (tableau(i))
Liste.AddItem tableau(i)
Else
lefichier.write (tableau(i))
Liste.AddItem tableau(i)
End If
Next
UserForm1.Show
End Sub
'========================================= > 'Mettre la liste et le fichier à jour, quand l'utilisateur ajoute
'un nom dans le ComboBox.
'========================================== > Private Sub Liste_BeforeUpdate(ByVal Cancel As
MSForms.ReturnBoolean)
Dim i As Integer
For i = 1 To UBound(tableau)
If Liste.Value = tableau(i) Then
tableau(0) = ""
Exit Sub
Else
tableau(0) = Liste.Value
End If
Next
'redimensionner le tableau
'sans en effacer le contenu
ReDim Preserve tableau(UBound(tableau) + 1)
'copier la donnée ajoutée à la nouvelle position
tableau(UBound(tableau)) = tableau(0)
Liste.AddItem (Liste.Value)
enregistrefichier
End Sub
Sub enregistrefichier()
'Enregistrer le fichier de noms
'après l'ajout d'un nom
Const ForAppending = 8
Dim i As Integer, fs As Object
Dim lefichier As Object
Set fs = _
CreateObject("scripting.FileSystemObject")
Set lefichier = _
fs.opentextfile("c:mes documentsnoms.txt", _
ForAppending, True)
lefichier.writeblanklines (1)
lefichier.write UserForm1.Liste.Value
lefichier.Close
End Sub
Pour le plaisir de la chose. Au lieu de créer le fichier texte
initial avec le bloc-notes, on peut utiliser la fonction array()
comme
support d'origine de la liste de noms et faire le fichier texte à
partir de là.
Sub fairefichier()
Dim fso As Object, fs As Object
Dim lesnoms As Variant, i As Integer
Dim maximum As Integer
lesnoms = Array("Lagaffe", "Gaston", "C'est ici", "Melrose")
maximum = UBound(lesnoms)
'Créer une liaison tardive avec le
'FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
Set fs = fso.CreateTextFile("c:mes documentsnoms.txt")
'Transférer le tableau dans le fichier
For i = 0 To maximum
If i < maximum Then
'writeline force un passage à la ligne
'pour tous les noms avant le dernier
fs.writeline lesnoms(i)
Else
'Write évite le passage à la ligne
'pour le dernier nom.
'Opération nécessaire pour éviter
'certaines erreurs subséquentes
fs.write lesnoms(i)
End If
Next
End Sub
Bonjour,
Je voudrais que dans les premieres utilisations les listes
déroulantes etant
vides,
Au lieu de partir avec des listes vides, fais une liste dans le
bloc-notes sans faire Enter après le dernier nom et enregistre le
fichier au format texte (*.txt). Ensuite mets ceci dans un module de
ton fichier:
Remplace noms.txt par le nom de ton fichier texte et adapte le
chemin
d'accès
'========================================= > 'Pour Initialiser le combobox au lancement de la procédure, en
'utilisant les lignes du fichier noms.txt. Le ComboBox se nomme
Liste.
'La procédure renseignercombo est appelée à partir de la procédure
'UserForm_initialize de l'UserForm
'=========================================== > Public tableau
Sub renseignercombo()
Const ForAppending = 8
Const ForReading = 1
Const ForWriting = 2
Dim fs As Object, lefichier As Object
Dim derniereligne As Integer, nombrelignes As Integer
Dim ligne As String
Dim i As Integer, f1
'L'objet "FileSystemObjet" dispose de la propriété line
'qui permet de connaître le nombre de lignes du fichier.
'Ici on crée une liaison tardive avec FSO
Set fs = CreateObject("scripting.FileSystemObject")
'Associer la variable lefichier au FileSystemObject
Set lefichier = fs.opentextfile("c:mes documentsnoms.txt", _
ForAppending, True)
derniereligne = lefichier.Line
nombrelignes = derniereligne
lefichier.Close
ReDim tableau(nombrelignes)
Set lefichier = fs.opentextfile("c:mes documentsnoms.txt", _
ForReading, True)
'Relire le fichier et regrouper les noms dans un tableau unique
For i = 1 To derniereligne
ligne = lefichier.readline
UserForm1.Liste.AddItem (ligne)
tableau(i) = ligne
Next
lefichier.Close
Set fs = Nothing
End Sub
saisir le nom des personnels afin qu'ils se rajoutent dans la liste
et que cette liste reste remplie meme apres fermeture du document.
'=================================== > 'Pour Mettre à jour la liste et enregistrer le fichier quand
'l'utilisateur choisit un nom et clique sur le bouton Retirer de son
'UserForm:
'==================================== >
Private Sub Retirer_Click()
Dim i As Integer, lebout As Integer
Dim fs As Object, lefichier As Object
UserForm1.Hide
lebout = UBound(tableau)
'Retirer le nom du contrôle
For i = 1 To lebout
If Liste.Value = tableau(i) Then
tableau(i) = ""
End If
Next
'Vider le contrôle
Liste.Clear
'Mettre le tableau à jour
For i = 1 To lebout - 1
If tableau(i) = "" Then
tableau(i) = tableau(i + 1)
tableau(i + 1) = ""
End If
Next
lebout = lebout - 1
ReDim Preserve tableau(lebout)
'Écrire le nouveau fichier
Set fs = _
CreateObject("scripting.FileSystemObject")
Set lefichier = _
fs.CreateTextFile("c:mes documentsnoms.txt")
For i = 1 To lebout
If i < lebout Then
lefichier.writeline (tableau(i))
Liste.AddItem tableau(i)
Else
lefichier.write (tableau(i))
Liste.AddItem tableau(i)
End If
Next
UserForm1.Show
End Sub
'========================================= > 'Mettre la liste et le fichier à jour, quand l'utilisateur ajoute
'un nom dans le ComboBox.
'========================================== > Private Sub Liste_BeforeUpdate(ByVal Cancel As
MSForms.ReturnBoolean)
Dim i As Integer
For i = 1 To UBound(tableau)
If Liste.Value = tableau(i) Then
tableau(0) = ""
Exit Sub
Else
tableau(0) = Liste.Value
End If
Next
'redimensionner le tableau
'sans en effacer le contenu
ReDim Preserve tableau(UBound(tableau) + 1)
'copier la donnée ajoutée à la nouvelle position
tableau(UBound(tableau)) = tableau(0)
Liste.AddItem (Liste.Value)
enregistrefichier
End Sub
Sub enregistrefichier()
'Enregistrer le fichier de noms
'après l'ajout d'un nom
Const ForAppending = 8
Dim i As Integer, fs As Object
Dim lefichier As Object
Set fs = _
CreateObject("scripting.FileSystemObject")
Set lefichier = _
fs.opentextfile("c:mes documentsnoms.txt", _
ForAppending, True)
lefichier.writeblanklines (1)
lefichier.write UserForm1.Liste.Value
lefichier.Close
End Sub
Pour le plaisir de la chose. Au lieu de créer le fichier texte
initial avec le bloc-notes, on peut utiliser la fonction array()
comme
support d'origine de la liste de noms et faire le fichier texte à
partir de là.
Sub fairefichier()
Dim fso As Object, fs As Object
Dim lesnoms As Variant, i As Integer
Dim maximum As Integer
lesnoms = Array("Lagaffe", "Gaston", "C'est ici", "Melrose")
maximum = UBound(lesnoms)
'Créer une liaison tardive avec le
'FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
Set fs = fso.CreateTextFile("c:mes documentsnoms.txt")
'Transférer le tableau dans le fichier
For i = 0 To maximum
If i < maximum Then
'writeline force un passage à la ligne
'pour tous les noms avant le dernier
fs.writeline lesnoms(i)
Else
'Write évite le passage à la ligne
'pour le dernier nom.
'Opération nécessaire pour éviter
'certaines erreurs subséquentes
fs.write lesnoms(i)
End If
Next
End Sub
Bonjour,Je voudrais que dans les premieres utilisations les listes
déroulantes etantvides,
Au lieu de partir avec des listes vides, fais une liste dans le
bloc-notes sans faire Enter après le dernier nom et enregistre le
fichier au format texte (*.txt). Ensuite mets ceci dans un module de
ton fichier:
Remplace noms.txt par le nom de ton fichier texte et adapte le
chemin
d'accès
'========================================= > 'Pour Initialiser le combobox au lancement de la procédure, en
'utilisant les lignes du fichier noms.txt. Le ComboBox se nomme
Liste.
'La procédure renseignercombo est appelée à partir de la procédure
'UserForm_initialize de l'UserForm
'=========================================== > Public tableau
Sub renseignercombo()
Const ForAppending = 8
Const ForReading = 1
Const ForWriting = 2
Dim fs As Object, lefichier As Object
Dim derniereligne As Integer, nombrelignes As Integer
Dim ligne As String
Dim i As Integer, f1
'L'objet "FileSystemObjet" dispose de la propriété line
'qui permet de connaître le nombre de lignes du fichier.
'Ici on crée une liaison tardive avec FSO
Set fs = CreateObject("scripting.FileSystemObject")
'Associer la variable lefichier au FileSystemObject
Set lefichier = fs.opentextfile("c:mes documentsnoms.txt", _
ForAppending, True)
derniereligne = lefichier.Line
nombrelignes = derniereligne
lefichier.Close
ReDim tableau(nombrelignes)
Set lefichier = fs.opentextfile("c:mes documentsnoms.txt", _
ForReading, True)
'Relire le fichier et regrouper les noms dans un tableau unique
For i = 1 To derniereligne
ligne = lefichier.readline
UserForm1.Liste.AddItem (ligne)
tableau(i) = ligne
Next
lefichier.Close
Set fs = Nothing
End Subsaisir le nom des personnels afin qu'ils se rajoutent dans la liste
et que cette liste reste remplie meme apres fermeture du document.
'=================================== > 'Pour Mettre à jour la liste et enregistrer le fichier quand
'l'utilisateur choisit un nom et clique sur le bouton Retirer de son
'UserForm:
'==================================== >
Private Sub Retirer_Click()
Dim i As Integer, lebout As Integer
Dim fs As Object, lefichier As Object
UserForm1.Hide
lebout = UBound(tableau)
'Retirer le nom du contrôle
For i = 1 To lebout
If Liste.Value = tableau(i) Then
tableau(i) = ""
End If
Next
'Vider le contrôle
Liste.Clear
'Mettre le tableau à jour
For i = 1 To lebout - 1
If tableau(i) = "" Then
tableau(i) = tableau(i + 1)
tableau(i + 1) = ""
End If
Next
lebout = lebout - 1
ReDim Preserve tableau(lebout)
'Écrire le nouveau fichier
Set fs = _
CreateObject("scripting.FileSystemObject")
Set lefichier = _
fs.CreateTextFile("c:mes documentsnoms.txt")
For i = 1 To lebout
If i < lebout Then
lefichier.writeline (tableau(i))
Liste.AddItem tableau(i)
Else
lefichier.write (tableau(i))
Liste.AddItem tableau(i)
End If
Next
UserForm1.Show
End Sub
'========================================= > 'Mettre la liste et le fichier à jour, quand l'utilisateur ajoute
'un nom dans le ComboBox.
'========================================== > Private Sub Liste_BeforeUpdate(ByVal Cancel As
MSForms.ReturnBoolean)
Dim i As Integer
For i = 1 To UBound(tableau)
If Liste.Value = tableau(i) Then
tableau(0) = ""
Exit Sub
Else
tableau(0) = Liste.Value
End If
Next
'redimensionner le tableau
'sans en effacer le contenu
ReDim Preserve tableau(UBound(tableau) + 1)
'copier la donnée ajoutée à la nouvelle position
tableau(UBound(tableau)) = tableau(0)
Liste.AddItem (Liste.Value)
enregistrefichier
End Sub
Sub enregistrefichier()
'Enregistrer le fichier de noms
'après l'ajout d'un nom
Const ForAppending = 8
Dim i As Integer, fs As Object
Dim lefichier As Object
Set fs = _
CreateObject("scripting.FileSystemObject")
Set lefichier = _
fs.opentextfile("c:mes documentsnoms.txt", _
ForAppending, True)
lefichier.writeblanklines (1)
lefichier.write UserForm1.Liste.Value
lefichier.Close
End Sub
Pour le plaisir de la chose. Au lieu de créer le fichier texte
initial avec le bloc-notes, on peut utiliser la fonction array()
comme
support d'origine de la liste de noms et faire le fichier texte à
partir de là.
Sub fairefichier()
Dim fso As Object, fs As Object
Dim lesnoms As Variant, i As Integer
Dim maximum As Integer
lesnoms = Array("Lagaffe", "Gaston", "C'est ici", "Melrose")
maximum = UBound(lesnoms)
'Créer une liaison tardive avec le
'FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
Set fs = fso.CreateTextFile("c:mes documentsnoms.txt")
'Transférer le tableau dans le fichier
For i = 0 To maximum
If i < maximum Then
'writeline force un passage à la ligne
'pour tous les noms avant le dernier
fs.writeline lesnoms(i)
Else
'Write évite le passage à la ligne
'pour le dernier nom.
'Opération nécessaire pour éviter
'certaines erreurs subséquentes
fs.write lesnoms(i)
End If
Next
End Sub
Au moins les questions à répétition sont finies.
"Clément Marcotte" a écrit dans le
message de news:Bonjour,Je voudrais que dans les premieres utilisations les listes
déroulantes etantvides,
Au lieu de partir avec des listes vides, fais une liste dans le
bloc-notes sans faire Enter après le dernier nom et enregistre le
fichier au format texte (*.txt). Ensuite mets ceci dans un module de
ton fichier:
Remplace noms.txt par le nom de ton fichier texte et adapte le
chemind'accès
'========================================= > > 'Pour Initialiser le combobox au lancement de la procédure, en
'utilisant les lignes du fichier noms.txt. Le ComboBox se nomme
Liste.'La procédure renseignercombo est appelée à partir de la procédure
'UserForm_initialize de l'UserForm
'=========================================== > > Public tableau
Sub renseignercombo()
Const ForAppending = 8
Const ForReading = 1
Const ForWriting = 2
Dim fs As Object, lefichier As Object
Dim derniereligne As Integer, nombrelignes As Integer
Dim ligne As String
Dim i As Integer, f1
'L'objet "FileSystemObjet" dispose de la propriété line
'qui permet de connaître le nombre de lignes du fichier.
'Ici on crée une liaison tardive avec FSO
Set fs = CreateObject("scripting.FileSystemObject")
'Associer la variable lefichier au FileSystemObject
Set lefichier = fs.opentextfile("c:mes documentsnoms.txt", _
ForAppending, True)
derniereligne = lefichier.Line
nombrelignes = derniereligne
lefichier.Close
ReDim tableau(nombrelignes)
Set lefichier = fs.opentextfile("c:mes documentsnoms.txt", _
ForReading, True)
'Relire le fichier et regrouper les noms dans un tableau unique
For i = 1 To derniereligne
ligne = lefichier.readline
UserForm1.Liste.AddItem (ligne)
tableau(i) = ligne
Next
lefichier.Close
Set fs = Nothing
End Subsaisir le nom des personnels afin qu'ils se rajoutent dans la liste
et que cette liste reste remplie meme apres fermeture du document.
'=================================== > > 'Pour Mettre à jour la liste et enregistrer le fichier quand
'l'utilisateur choisit un nom et clique sur le bouton Retirer de son
'UserForm:
'==================================== > >
Private Sub Retirer_Click()
Dim i As Integer, lebout As Integer
Dim fs As Object, lefichier As Object
UserForm1.Hide
lebout = UBound(tableau)
'Retirer le nom du contrôle
For i = 1 To lebout
If Liste.Value = tableau(i) Then
tableau(i) = ""
End If
Next
'Vider le contrôle
Liste.Clear
'Mettre le tableau à jour
For i = 1 To lebout - 1
If tableau(i) = "" Then
tableau(i) = tableau(i + 1)
tableau(i + 1) = ""
End If
Next
lebout = lebout - 1
ReDim Preserve tableau(lebout)
'Écrire le nouveau fichier
Set fs = _
CreateObject("scripting.FileSystemObject")
Set lefichier = _
fs.CreateTextFile("c:mes documentsnoms.txt")
For i = 1 To lebout
If i < lebout Then
lefichier.writeline (tableau(i))
Liste.AddItem tableau(i)
Else
lefichier.write (tableau(i))
Liste.AddItem tableau(i)
End If
Next
UserForm1.Show
End Sub
'========================================= > > 'Mettre la liste et le fichier à jour, quand l'utilisateur ajoute
'un nom dans le ComboBox.
'========================================== > > Private Sub Liste_BeforeUpdate(ByVal Cancel As
MSForms.ReturnBoolean)Dim i As Integer
For i = 1 To UBound(tableau)
If Liste.Value = tableau(i) Then
tableau(0) = ""
Exit Sub
Else
tableau(0) = Liste.Value
End If
Next
'redimensionner le tableau
'sans en effacer le contenu
ReDim Preserve tableau(UBound(tableau) + 1)
'copier la donnée ajoutée à la nouvelle position
tableau(UBound(tableau)) = tableau(0)
Liste.AddItem (Liste.Value)
enregistrefichier
End Sub
Sub enregistrefichier()
'Enregistrer le fichier de noms
'après l'ajout d'un nom
Const ForAppending = 8
Dim i As Integer, fs As Object
Dim lefichier As Object
Set fs = _
CreateObject("scripting.FileSystemObject")
Set lefichier = _
fs.opentextfile("c:mes documentsnoms.txt", _
ForAppending, True)
lefichier.writeblanklines (1)
lefichier.write UserForm1.Liste.Value
lefichier.Close
End Sub
Pour le plaisir de la chose. Au lieu de créer le fichier texte
initial avec le bloc-notes, on peut utiliser la fonction array()
commesupport d'origine de la liste de noms et faire le fichier texte à
partir de là.
Sub fairefichier()
Dim fso As Object, fs As Object
Dim lesnoms As Variant, i As Integer
Dim maximum As Integer
lesnoms = Array("Lagaffe", "Gaston", "C'est ici", "Melrose")
maximum = UBound(lesnoms)
'Créer une liaison tardive avec le
'FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
Set fs = fso.CreateTextFile("c:mes documentsnoms.txt")
'Transférer le tableau dans le fichier
For i = 0 To maximum
If i < maximum Then
'writeline force un passage à la ligne
'pour tous les noms avant le dernier
fs.writeline lesnoms(i)
Else
'Write évite le passage à la ligne
'pour le dernier nom.
'Opération nécessaire pour éviter
'certaines erreurs subséquentes
fs.write lesnoms(i)
End If
Next
End Sub
Au moins les questions à répétition sont finies.
"Clément Marcotte" <clement.marcotte@sympatico.ca> a écrit dans le
message de news:Ooi7RaelDHA.2232@TK2MSFTNGP09.phx.gbl...
Bonjour,
Je voudrais que dans les premieres utilisations les listes
déroulantes etant
vides,
Au lieu de partir avec des listes vides, fais une liste dans le
bloc-notes sans faire Enter après le dernier nom et enregistre le
fichier au format texte (*.txt). Ensuite mets ceci dans un module de
ton fichier:
Remplace noms.txt par le nom de ton fichier texte et adapte le
chemin
d'accès
'========================================= > > 'Pour Initialiser le combobox au lancement de la procédure, en
'utilisant les lignes du fichier noms.txt. Le ComboBox se nomme
Liste.
'La procédure renseignercombo est appelée à partir de la procédure
'UserForm_initialize de l'UserForm
'=========================================== > > Public tableau
Sub renseignercombo()
Const ForAppending = 8
Const ForReading = 1
Const ForWriting = 2
Dim fs As Object, lefichier As Object
Dim derniereligne As Integer, nombrelignes As Integer
Dim ligne As String
Dim i As Integer, f1
'L'objet "FileSystemObjet" dispose de la propriété line
'qui permet de connaître le nombre de lignes du fichier.
'Ici on crée une liaison tardive avec FSO
Set fs = CreateObject("scripting.FileSystemObject")
'Associer la variable lefichier au FileSystemObject
Set lefichier = fs.opentextfile("c:mes documentsnoms.txt", _
ForAppending, True)
derniereligne = lefichier.Line
nombrelignes = derniereligne
lefichier.Close
ReDim tableau(nombrelignes)
Set lefichier = fs.opentextfile("c:mes documentsnoms.txt", _
ForReading, True)
'Relire le fichier et regrouper les noms dans un tableau unique
For i = 1 To derniereligne
ligne = lefichier.readline
UserForm1.Liste.AddItem (ligne)
tableau(i) = ligne
Next
lefichier.Close
Set fs = Nothing
End Sub
saisir le nom des personnels afin qu'ils se rajoutent dans la liste
et que cette liste reste remplie meme apres fermeture du document.
'=================================== > > 'Pour Mettre à jour la liste et enregistrer le fichier quand
'l'utilisateur choisit un nom et clique sur le bouton Retirer de son
'UserForm:
'==================================== > >
Private Sub Retirer_Click()
Dim i As Integer, lebout As Integer
Dim fs As Object, lefichier As Object
UserForm1.Hide
lebout = UBound(tableau)
'Retirer le nom du contrôle
For i = 1 To lebout
If Liste.Value = tableau(i) Then
tableau(i) = ""
End If
Next
'Vider le contrôle
Liste.Clear
'Mettre le tableau à jour
For i = 1 To lebout - 1
If tableau(i) = "" Then
tableau(i) = tableau(i + 1)
tableau(i + 1) = ""
End If
Next
lebout = lebout - 1
ReDim Preserve tableau(lebout)
'Écrire le nouveau fichier
Set fs = _
CreateObject("scripting.FileSystemObject")
Set lefichier = _
fs.CreateTextFile("c:mes documentsnoms.txt")
For i = 1 To lebout
If i < lebout Then
lefichier.writeline (tableau(i))
Liste.AddItem tableau(i)
Else
lefichier.write (tableau(i))
Liste.AddItem tableau(i)
End If
Next
UserForm1.Show
End Sub
'========================================= > > 'Mettre la liste et le fichier à jour, quand l'utilisateur ajoute
'un nom dans le ComboBox.
'========================================== > > Private Sub Liste_BeforeUpdate(ByVal Cancel As
MSForms.ReturnBoolean)
Dim i As Integer
For i = 1 To UBound(tableau)
If Liste.Value = tableau(i) Then
tableau(0) = ""
Exit Sub
Else
tableau(0) = Liste.Value
End If
Next
'redimensionner le tableau
'sans en effacer le contenu
ReDim Preserve tableau(UBound(tableau) + 1)
'copier la donnée ajoutée à la nouvelle position
tableau(UBound(tableau)) = tableau(0)
Liste.AddItem (Liste.Value)
enregistrefichier
End Sub
Sub enregistrefichier()
'Enregistrer le fichier de noms
'après l'ajout d'un nom
Const ForAppending = 8
Dim i As Integer, fs As Object
Dim lefichier As Object
Set fs = _
CreateObject("scripting.FileSystemObject")
Set lefichier = _
fs.opentextfile("c:mes documentsnoms.txt", _
ForAppending, True)
lefichier.writeblanklines (1)
lefichier.write UserForm1.Liste.Value
lefichier.Close
End Sub
Pour le plaisir de la chose. Au lieu de créer le fichier texte
initial avec le bloc-notes, on peut utiliser la fonction array()
comme
support d'origine de la liste de noms et faire le fichier texte à
partir de là.
Sub fairefichier()
Dim fso As Object, fs As Object
Dim lesnoms As Variant, i As Integer
Dim maximum As Integer
lesnoms = Array("Lagaffe", "Gaston", "C'est ici", "Melrose")
maximum = UBound(lesnoms)
'Créer une liaison tardive avec le
'FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
Set fs = fso.CreateTextFile("c:mes documentsnoms.txt")
'Transférer le tableau dans le fichier
For i = 0 To maximum
If i < maximum Then
'writeline force un passage à la ligne
'pour tous les noms avant le dernier
fs.writeline lesnoms(i)
Else
'Write évite le passage à la ligne
'pour le dernier nom.
'Opération nécessaire pour éviter
'certaines erreurs subséquentes
fs.write lesnoms(i)
End If
Next
End Sub
Au moins les questions à répétition sont finies.
"Clément Marcotte" a écrit dans le
message de news:Bonjour,Je voudrais que dans les premieres utilisations les listes
déroulantes etantvides,
Au lieu de partir avec des listes vides, fais une liste dans le
bloc-notes sans faire Enter après le dernier nom et enregistre le
fichier au format texte (*.txt). Ensuite mets ceci dans un module de
ton fichier:
Remplace noms.txt par le nom de ton fichier texte et adapte le
chemind'accès
'========================================= > > 'Pour Initialiser le combobox au lancement de la procédure, en
'utilisant les lignes du fichier noms.txt. Le ComboBox se nomme
Liste.'La procédure renseignercombo est appelée à partir de la procédure
'UserForm_initialize de l'UserForm
'=========================================== > > Public tableau
Sub renseignercombo()
Const ForAppending = 8
Const ForReading = 1
Const ForWriting = 2
Dim fs As Object, lefichier As Object
Dim derniereligne As Integer, nombrelignes As Integer
Dim ligne As String
Dim i As Integer, f1
'L'objet "FileSystemObjet" dispose de la propriété line
'qui permet de connaître le nombre de lignes du fichier.
'Ici on crée une liaison tardive avec FSO
Set fs = CreateObject("scripting.FileSystemObject")
'Associer la variable lefichier au FileSystemObject
Set lefichier = fs.opentextfile("c:mes documentsnoms.txt", _
ForAppending, True)
derniereligne = lefichier.Line
nombrelignes = derniereligne
lefichier.Close
ReDim tableau(nombrelignes)
Set lefichier = fs.opentextfile("c:mes documentsnoms.txt", _
ForReading, True)
'Relire le fichier et regrouper les noms dans un tableau unique
For i = 1 To derniereligne
ligne = lefichier.readline
UserForm1.Liste.AddItem (ligne)
tableau(i) = ligne
Next
lefichier.Close
Set fs = Nothing
End Subsaisir le nom des personnels afin qu'ils se rajoutent dans la liste
et que cette liste reste remplie meme apres fermeture du document.
'=================================== > > 'Pour Mettre à jour la liste et enregistrer le fichier quand
'l'utilisateur choisit un nom et clique sur le bouton Retirer de son
'UserForm:
'==================================== > >
Private Sub Retirer_Click()
Dim i As Integer, lebout As Integer
Dim fs As Object, lefichier As Object
UserForm1.Hide
lebout = UBound(tableau)
'Retirer le nom du contrôle
For i = 1 To lebout
If Liste.Value = tableau(i) Then
tableau(i) = ""
End If
Next
'Vider le contrôle
Liste.Clear
'Mettre le tableau à jour
For i = 1 To lebout - 1
If tableau(i) = "" Then
tableau(i) = tableau(i + 1)
tableau(i + 1) = ""
End If
Next
lebout = lebout - 1
ReDim Preserve tableau(lebout)
'Écrire le nouveau fichier
Set fs = _
CreateObject("scripting.FileSystemObject")
Set lefichier = _
fs.CreateTextFile("c:mes documentsnoms.txt")
For i = 1 To lebout
If i < lebout Then
lefichier.writeline (tableau(i))
Liste.AddItem tableau(i)
Else
lefichier.write (tableau(i))
Liste.AddItem tableau(i)
End If
Next
UserForm1.Show
End Sub
'========================================= > > 'Mettre la liste et le fichier à jour, quand l'utilisateur ajoute
'un nom dans le ComboBox.
'========================================== > > Private Sub Liste_BeforeUpdate(ByVal Cancel As
MSForms.ReturnBoolean)Dim i As Integer
For i = 1 To UBound(tableau)
If Liste.Value = tableau(i) Then
tableau(0) = ""
Exit Sub
Else
tableau(0) = Liste.Value
End If
Next
'redimensionner le tableau
'sans en effacer le contenu
ReDim Preserve tableau(UBound(tableau) + 1)
'copier la donnée ajoutée à la nouvelle position
tableau(UBound(tableau)) = tableau(0)
Liste.AddItem (Liste.Value)
enregistrefichier
End Sub
Sub enregistrefichier()
'Enregistrer le fichier de noms
'après l'ajout d'un nom
Const ForAppending = 8
Dim i As Integer, fs As Object
Dim lefichier As Object
Set fs = _
CreateObject("scripting.FileSystemObject")
Set lefichier = _
fs.opentextfile("c:mes documentsnoms.txt", _
ForAppending, True)
lefichier.writeblanklines (1)
lefichier.write UserForm1.Liste.Value
lefichier.Close
End Sub
Pour le plaisir de la chose. Au lieu de créer le fichier texte
initial avec le bloc-notes, on peut utiliser la fonction array()
commesupport d'origine de la liste de noms et faire le fichier texte à
partir de là.
Sub fairefichier()
Dim fso As Object, fs As Object
Dim lesnoms As Variant, i As Integer
Dim maximum As Integer
lesnoms = Array("Lagaffe", "Gaston", "C'est ici", "Melrose")
maximum = UBound(lesnoms)
'Créer une liaison tardive avec le
'FileSystemObject
Set fso = CreateObject("Scripting.FileSystemObject")
Set fs = fso.CreateTextFile("c:mes documentsnoms.txt")
'Transférer le tableau dans le fichier
For i = 0 To maximum
If i < maximum Then
'writeline force un passage à la ligne
'pour tous les noms avant le dernier
fs.writeline lesnoms(i)
Else
'Write évite le passage à la ligne
'pour le dernier nom.
'Opération nécessaire pour éviter
'certaines erreurs subséquentes
fs.write lesnoms(i)
End If
Next
End Sub