OVH Cloud OVH Cloud

menu deroulant

12 réponses
Avatar
FB
Bonjour,

j'aimerais avec VBA faire une liste déroulante avec une partie du contenu
d'un fichier TXT

Exemple
Fichier TXT:
[nom]
Potter
Smith
Dupond
Dupont
[/nom]

[prenom]
Lulu
Harry
Jone
Alfred
[/prenom]

fin du fichier TXT

je voudrais juste créer un menu déroulant (listbox) avec les prénom et une
avec les nom.....!!!!!!

Merci à toute les personnes qui s'interesse à mon problème

10 réponses

1 2
Avatar
Jacky
Bonsoir FB

Le fichier txt est-il incorporé dans un fichier xls ??

JJ

"FB" a écrit dans le message de
news:
Bonjour,

j'aimerais avec VBA faire une liste déroulante avec une partie du contenu
d'un fichier TXT

Exemple
Fichier TXT:
[nom]
Potter
Smith
Dupond
Dupont
[/nom]

[prenom]
Lulu
Harry
Jone
Alfred
[/prenom]

fin du fichier TXT

je voudrais juste créer un menu déroulant (listbox) avec les prénom et une
avec les nom.....!!!!!!

Merci à toute les personnes qui s'interesse à mon problème


Avatar
Jacky
Regarde ici
http://cjoint.com/?jbtSxSz5zW
JJ

"Jacky" a écrit dans le message de
news:%
Bonsoir FB

Le fichier txt est-il incorporé dans un fichier xls ??

JJ

"FB" a écrit dans le message de
news:
Bonjour,

j'aimerais avec VBA faire une liste déroulante avec une partie du
contenu


d'un fichier TXT

Exemple
Fichier TXT:
[nom]
Potter
Smith
Dupond
Dupont
[/nom]

[prenom]
Lulu
Harry
Jone
Alfred
[/prenom]

fin du fichier TXT

je voudrais juste créer un menu déroulant (listbox) avec les prénom et
une


avec les nom.....!!!!!!

Merci à toute les personnes qui s'interesse à mon problème






Avatar
Jacky
Oupsss erreur de lien
http://cjoint.com/?jbtVXk751E
JJ
Avatar
FB
bonjour jacky,

ta solution est bonne, certe..... Mais le problème c'est que j'ai un fichier
TXT pour justement décharger mon fichier XLS (mon fichier txt contient bcp
bcp bcp de données) donc pour répondre a ta premier question .... mes données
ne sont pas dans excel !!!! (c 'est la le problème)

Encore merci de te soucier de mon problème


Oupsss erreur de lien
http://cjoint.com/?jbtVXk751E
JJ






Avatar
Jacky
RE...
Et en ouvrant le fichier .TXT avec
Ouvrir==>type de fichier .txt
Puis, avec l'assistant d'importation de texte, cela ne fonctionne pas ??
JJ

"FB" a écrit dans le message de
news:
bonjour jacky,

ta solution est bonne, certe..... Mais le problème c'est que j'ai un
fichier

TXT pour justement décharger mon fichier XLS (mon fichier txt contient bcp
bcp bcp de données) donc pour répondre a ta premier question .... mes
données

ne sont pas dans excel !!!! (c 'est la le problème)

Encore merci de te soucier de mon problème









Avatar
Ange Ounis
Une listbox ou une combobox, peuvent être "peuplées" en une seule passe avec un
tableau. Tu peux récupérer, à partir de ton fichier texte un tableau des noms
avec ce genre de fonction :

''''''''''''''''''''''''''''''
Function RecupLesNoms(LeFichier As String)
Dim S As String, Str As String
Dim tmp1 As String, tmp2 As String
On Error GoTo Fin
Open LeFichier For Input As #1
Do While Not EOF(1)
Line Input #1, S
Str = Str & ";" & S
Loop
tmp1 = Split(Str, "[nom]")(1)
tmp2 = Split(tmp1, "[/nom]")(0)
RecupLesNoms = Split(Mid(tmp2, 2, Len(tmp2) - 2), ";")
Fin:
Close #1
End Function
'''''''''''''''''''''''''''''''

A partir de là, en supposant une ListBox1 sur la feuille Feuil1 de ton classeur,
tu peux la "peupler" de cette manière :

'''''''''''''''''''''''''''''''
Sub essai()
Dim Arr, Fich As String
Fich = "d:donnees.txt" 'à adapter of course
Arr = RecupLesNoms(Fich)
With Sheets("Feuil1").ListBox1
.Clear
.List = Arr
End With
End Sub
'''''''''''''''''''''''''''''''

----------
Ange Ounis
----------

Bonjour,

j'aimerais avec VBA faire une liste déroulante avec une partie du contenu
d'un fichier TXT

Exemple
Fichier TXT:
[nom]
Potter
Smith
Dupond
Dupont
[/nom]

[prenom]
Lulu
Harry
Jone
Alfred
[/prenom]

fin du fichier TXT

je voudrais juste créer un menu déroulant (listbox) avec les prénom et une
avec les nom.....!!!!!!

Merci à toute les personnes qui s'interesse à mon problème


Avatar
FB
Bonjour ange ounis,

merci pour ton aide ..... mais je ne comprend rien a cette programmation (ca
marche mais je comprend pas)
pourrais tu m'expliquer ce que tu fais exactement
peux tu me dire comment je peux apprendre à programmer de cette façon
peux tu me donner un nom de site ou ce genre de programmation est expliqué

encore un grand merci



Une listbox ou une combobox, peuvent être "peuplées" en une seule passe avec un
tableau. Tu peux récupérer, à partir de ton fichier texte un tableau des noms
avec ce genre de fonction :

''''''''''''''''''''''''''''''
Function RecupLesNoms(LeFichier As String)
Dim S As String, Str As String
Dim tmp1 As String, tmp2 As String
On Error GoTo Fin
Open LeFichier For Input As #1
Do While Not EOF(1)
Line Input #1, S
Str = Str & ";" & S
Loop
tmp1 = Split(Str, "[nom]")(1)
tmp2 = Split(tmp1, "[/nom]")(0)
RecupLesNoms = Split(Mid(tmp2, 2, Len(tmp2) - 2), ";")
Fin:
Close #1
End Function
'''''''''''''''''''''''''''''''

A partir de là, en supposant une ListBox1 sur la feuille Feuil1 de ton classeur,
tu peux la "peupler" de cette manière :

'''''''''''''''''''''''''''''''
Sub essai()
Dim Arr, Fich As String
Fich = "d:donnees.txt" 'à adapter of course
Arr = RecupLesNoms(Fich)
With Sheets("Feuil1").ListBox1
.Clear
.List = Arr
End With
End Sub
'''''''''''''''''''''''''''''''

----------
Ange Ounis
----------

Bonjour,

j'aimerais avec VBA faire une liste déroulante avec une partie du contenu
d'un fichier TXT

Exemple
Fichier TXT:
[nom]
Potter
Smith
Dupond
Dupont
[/nom]

[prenom]
Lulu
Harry
Jone
Alfred
[/prenom]

fin du fichier TXT

je voudrais juste créer un menu déroulant (listbox) avec les prénom et une
avec les nom.....!!!!!!

Merci à toute les personnes qui s'interesse à mon problème





Avatar
Ange Ounis
Bon, j'esseplique entre les lignes :

''''''''''''''''''''''''''''''
Function RecupLesNoms(LeFichier As String)
Dim S As String, Str As String
Dim tmp1 As String, tmp2 As String

'en cas d'erreur, branchement vers la fin de la procédure
'pour fermer le fichier texte (sinon il reste ouvert en
'mémoire et provoque une erreur si on relance la fonction)
On Error GoTo Fin

'ouvre le fichier texte en lecture
Open LeFichier For Input As #1

'boucle jusqu'à la fin du fichier (EOF) pour lire
'les lignes une par une
Do While Not EOF(1)

'récupère une ligne dans la variable S
Line Input #1, S

'crée une chaîne unique (Str) avec toutes les lignes
'concaténées avec le séparateur ";"
Str = Str & ";" & S
Loop

'découpe la chaîne Str avec le délimiteur "[nom]" et
'affecte à tmp1 le 2ème élément du tableau renvoyé par
'Split (en clair tmp1 contient tout ce qui se trouve
'après "[nom]" dans la chaine Str
tmp1 = Split(Str, "[nom]")(1)

'on fait la même manip pour récupérer ensuite
'tout ce qui se trouve avant "[/nom]" (tmp2 contient
'maintenant tous les noms, encadrés par des ";"
tmp2 = Split(tmp1, "[/nom]")(0)

'découpe tmp2 pour renvoyer un tableau des noms (pour
'éviter les ";" parasites, il faut éliminer les 1er et
'dernier caractères de la chaine tmp2 à l'aide de la
'fonction Mid). Le tableau renvoyé par Split est
'affecté à la fonction RecupLesNoms.
RecupLesNoms = Split(Mid(tmp2, 2, Len(tmp2) - 2), ";")

Fin:
'on ferme le fichier texte
Close #1
End Function
'''''''''''''''''''''''''''''''

Voili voila. Tu peux de la même manière récupérer un tableau des prénoms : seul
les délimiteurs fournis à la fonction Split pour trouver tmp1 puis tmp2 vont
changer.

peux tu me dire comment je peux apprendre à programmer de cette façon
peux tu me donner un nom de site ou ce genre de programmation est expliqué


Le mpfe est un excellent endroit, AMA, pour faire des apprentissages divers et
variés qui touchent de près ou de loin Excel, dont sa programmation. Tu as aussi
des bouquins (liste sur la FAQ : http://dj.joss.free.fr) et qq sites dont
l'incontournable excelabo (http://www.excelabo.net/).

----------
Ange Ounis
----------

Bonjour ange ounis,

merci pour ton aide ..... mais je ne comprend rien a cette programmation (ca
marche mais je comprend pas)
pourrais tu m'expliquer ce que tu fais exactement
peux tu me dire comment je peux apprendre à programmer de cette façon
peux tu me donner un nom de site ou ce genre de programmation est expliqué

encore un grand merci




Une listbox ou une combobox, peuvent être "peuplées" en une seule passe avec un
tableau. Tu peux récupérer, à partir de ton fichier texte un tableau des noms
avec ce genre de fonction :

''''''''''''''''''''''''''''''
Function RecupLesNoms(LeFichier As String)
Dim S As String, Str As String
Dim tmp1 As String, tmp2 As String
On Error GoTo Fin
Open LeFichier For Input As #1
Do While Not EOF(1)
Line Input #1, S
Str = Str & ";" & S
Loop
tmp1 = Split(Str, "[nom]")(1)
tmp2 = Split(tmp1, "[/nom]")(0)
RecupLesNoms = Split(Mid(tmp2, 2, Len(tmp2) - 2), ";")
Fin:
Close #1
End Function
'''''''''''''''''''''''''''''''

A partir de là, en supposant une ListBox1 sur la feuille Feuil1 de ton classeur,
tu peux la "peupler" de cette manière :

'''''''''''''''''''''''''''''''
Sub essai()
Dim Arr, Fich As String
Fich = "d:donnees.txt" 'à adapter of course
Arr = RecupLesNoms(Fich)
With Sheets("Feuil1").ListBox1
.Clear
.List = Arr
End With
End Sub
'''''''''''''''''''''''''''''''

----------
Ange Ounis
----------


Bonjour,

j'aimerais avec VBA faire une liste déroulante avec une partie du contenu
d'un fichier TXT

Exemple
Fichier TXT:
[nom]
Potter
Smith
Dupond
Dupont
[/nom]

[prenom]
Lulu
Harry
Jone
Alfred
[/prenom]

fin du fichier TXT

je voudrais juste créer un menu déroulant (listbox) avec les prénom et une
avec les nom.....!!!!!!

Merci à toute les personnes qui s'interesse à mon problème







Avatar
Jacky
Bonjour Ange

Bon, j'esseplique entre les lignes :



Une question.......
Sur Xl 97, split provoque une erreur.
Par quoi pourrait-on remplacer??

Salutations
JJ

"Ange Ounis" a écrit dans le message de
news:
Bon, j'esseplique entre les lignes :

''''''''''''''''''''''''''''''
Function RecupLesNoms(LeFichier As String)
Dim S As String, Str As String
Dim tmp1 As String, tmp2 As String

'en cas d'erreur, branchement vers la fin de la procédure
'pour fermer le fichier texte (sinon il reste ouvert en
'mémoire et provoque une erreur si on relance la fonction)
On Error GoTo Fin

'ouvre le fichier texte en lecture
Open LeFichier For Input As #1

'boucle jusqu'à la fin du fichier (EOF) pour lire
'les lignes une par une
Do While Not EOF(1)

'récupère une ligne dans la variable S
Line Input #1, S

'crée une chaîne unique (Str) avec toutes les lignes
'concaténées avec le séparateur ";"
Str = Str & ";" & S
Loop

'découpe la chaîne Str avec le délimiteur "[nom]" et
'affecte à tmp1 le 2ème élément du tableau renvoyé par
'Split (en clair tmp1 contient tout ce qui se trouve
'après "[nom]" dans la chaine Str
tmp1 = Split(Str, "[nom]")(1)

'on fait la même manip pour récupérer ensuite
'tout ce qui se trouve avant "[/nom]" (tmp2 contient
'maintenant tous les noms, encadrés par des ";"
tmp2 = Split(tmp1, "[/nom]")(0)

'découpe tmp2 pour renvoyer un tableau des noms (pour
'éviter les ";" parasites, il faut éliminer les 1er et
'dernier caractères de la chaine tmp2 à l'aide de la
'fonction Mid). Le tableau renvoyé par Split est
'affecté à la fonction RecupLesNoms.
RecupLesNoms = Split(Mid(tmp2, 2, Len(tmp2) - 2), ";")

Fin:
'on ferme le fichier texte
Close #1
End Function
'''''''''''''''''''''''''''''''

Voili voila. Tu peux de la même manière récupérer un tableau des prénoms :
seul

les délimiteurs fournis à la fonction Split pour trouver tmp1 puis tmp2
vont

changer.

peux tu me dire comment je peux apprendre à programmer de cette façon
peux tu me donner un nom de site ou ce genre de programmation est
expliqué



Le mpfe est un excellent endroit, AMA, pour faire des apprentissages
divers et

variés qui touchent de près ou de loin Excel, dont sa programmation. Tu as
aussi

des bouquins (liste sur la FAQ : http://dj.joss.free.fr) et qq sites dont
l'incontournable excelabo (http://www.excelabo.net/).

----------
Ange Ounis
----------




Avatar
anonymousA
bonjour

extrait de la bibliothèque des programmes du site de Frédéric Sigonneau

Function Split97(ByVal Chaine$, Optional Separateur$ = " ")
'renvoie un tableau de base 0
Dim Tablo(), pos%, S$

S = Trim(Chaine): ReDim Tablo(0)
Recurse:
pos = InStr(1, S, Separateur)
If pos = 0 Then
Tablo(UBound(Tablo)) = S
Split97 = Tablo()
Exit Function
Else
Tablo(UBound(Tablo)) = Left(S, pos - 1)
S = Right(S, Len(S) - (pos + Len(Separateur) - 1))
ReDim Preserve Tablo(UBound(Tablo) + 1)
GoTo Recurse
End If
End Function 'fs, mpfe

Function Split_97(Chaine As String, Separateur As String)
'Pierre Fauconnier, mpfe (renvoie un tableau de base 1)
Dim i As Integer, NbreTab As Integer
Dim DebutChaine As Integer, Tableau()

NbreTab = 0
DebutChaine = 1
For i = 1 To Len(Chaine)
If Mid(Chaine, i, 1) = Separateur Then
NbreTab = NbreTab + 1
ReDim Preserve Tableau(1 To NbreTab)
Tableau(NbreTab) = _
Mid(Chaine, DebutChaine, i - DebutChaine)
i = i + 1
DebutChaine = i
End If
Next i
If i > DebutChaine Then
NbreTab = NbreTab + 1
ReDim Preserve Tableau(1 To NbreTab)
Tableau(NbreTab) = _
Mid(Chaine, DebutChaine, i - DebutChaine)
End If
If NbreTab = 0 Then
ReDim Tableau(1)
Tableau(1) = Chaine
End If
Split_97 = Tableau()
End Function

A+


Bonjour Ange


Bon, j'esseplique entre les lignes :




Une question.......
Sur Xl 97, split provoque une erreur.
Par quoi pourrait-on remplacer??

Salutations
JJ

"Ange Ounis" a écrit dans le message de
news:

Bon, j'esseplique entre les lignes :

''''''''''''''''''''''''''''''
Function RecupLesNoms(LeFichier As String)
Dim S As String, Str As String
Dim tmp1 As String, tmp2 As String

'en cas d'erreur, branchement vers la fin de la procédure
'pour fermer le fichier texte (sinon il reste ouvert en
'mémoire et provoque une erreur si on relance la fonction)
On Error GoTo Fin

'ouvre le fichier texte en lecture
Open LeFichier For Input As #1

'boucle jusqu'à la fin du fichier (EOF) pour lire
'les lignes une par une
Do While Not EOF(1)

'récupère une ligne dans la variable S
Line Input #1, S

'crée une chaîne unique (Str) avec toutes les lignes
'concaténées avec le séparateur ";"
Str = Str & ";" & S
Loop

'découpe la chaîne Str avec le délimiteur "[nom]" et
'affecte à tmp1 le 2ème élément du tableau renvoyé par
'Split (en clair tmp1 contient tout ce qui se trouve
'après "[nom]" dans la chaine Str
tmp1 = Split(Str, "[nom]")(1)

'on fait la même manip pour récupérer ensuite
'tout ce qui se trouve avant "[/nom]" (tmp2 contient
'maintenant tous les noms, encadrés par des ";"
tmp2 = Split(tmp1, "[/nom]")(0)

'découpe tmp2 pour renvoyer un tableau des noms (pour
'éviter les ";" parasites, il faut éliminer les 1er et
'dernier caractères de la chaine tmp2 à l'aide de la
'fonction Mid). Le tableau renvoyé par Split est
'affecté à la fonction RecupLesNoms.
RecupLesNoms = Split(Mid(tmp2, 2, Len(tmp2) - 2), ";")

Fin:
'on ferme le fichier texte
Close #1
End Function
'''''''''''''''''''''''''''''''

Voili voila. Tu peux de la même manière récupérer un tableau des prénoms :


seul

les délimiteurs fournis à la fonction Split pour trouver tmp1 puis tmp2


vont

changer.

peux tu me dire comment je peux apprendre à programmer de cette façon
peux tu me donner un nom de site ou ce genre de programmation est



expliqué

Le mpfe est un excellent endroit, AMA, pour faire des apprentissages


divers et

variés qui touchent de près ou de loin Excel, dont sa programmation. Tu as


aussi

des bouquins (liste sur la FAQ : http://dj.joss.free.fr) et qq sites dont
l'incontournable excelabo (http://www.excelabo.net/).

----------
Ange Ounis
----------









1 2