J'ai créer une applica vba Excel qui gére un carnet d'adresse, j'ai un
tableau Excel avec Nom, Prénom,... et ville.
J'ai un UserForm qui affiche la liste des contacts avec adresse et ville.
Pour facillité les recherches, j'ai créer une liste modifiable qui affiche
les villes (voir code ci-dessous).
J'ai deux questions :
1 - Comment puis-je afficher mes villes par ordre alphabétique
2 - J'ai plusieurs ville qui comment par la lettre "P" Si je tape "P" dans
la liste modifiable, elle m'affiche la première ville commençant par "P" si
je valide, ma liste m'affiche uniquement les contact de cette ville ce qui
est normale.
Moi j'aimerais que lorsque je tape "P", ma liste m'affiche tous les contacts
dont la ville comment par cette lettre.
Comment faire ?
Private Sub UserForm_Initialize()
' Définition des variables
Dim cel As Range
Dim Fin As Integer
Dim i As Integer
' initialisation des variables
Set cel = Range("A1")
Fin = cel.End(xlDown).Row - 1 ' Fin de la liste
' Constitution de la liste Ville
For i = 1 To Fin
list_contact.search_ville.AddItem cel.Offset(i, 4)
Next i
'Appel de la procèdure Liste affichant les contacts
Liste
End Sub
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
LE TROLL
Salut,
Affichage alpha croissant -> list1.sorted=true Mais je ne suis pas certain que ça existe en vba, sinon -> boucle de tri :o)
' Un tri bulle de ce genre: for k = 1 to maxi for i = 1 to to maxi for j = 1 to maxi if i <> j then if list1.list(i) > list1.list(j) then echange = list1.list(i) list1.list(i) = list1.list(j) list2.list(j) = echange endif endif next j next i next k
Ben zalors, en affichant tous les commençants par "P" en tapant "P", ben je dirais que faut trier sur le 1er octet, si octet1 = "p" -> met dans list2...
Heu, je donne les principes non exhaustifs, si tu veux du code, demande! En plus je ne sais pas dans quelle proportion ça s'applique en vbA... Sinon, tu as plein de logiciels gratuit qui gèrent les adresses, ou simplement dans Word avec la fonction "recherche", ça fonctionne très bien :o) ------------------
"Jean-Pierre" a écrit dans le message de news: 42c5090e$0$898$
Bonjour,
J'ai créer une applica vba Excel qui gére un carnet d'adresse, j'ai un tableau Excel avec Nom, Prénom,... et ville. J'ai un UserForm qui affiche la liste des contacts avec adresse et ville. Pour facillité les recherches, j'ai créer une liste modifiable qui affiche les villes (voir code ci-dessous). J'ai deux questions :
1 - Comment puis-je afficher mes villes par ordre alphabétique 2 - J'ai plusieurs ville qui comment par la lettre "P" Si je tape "P" dans la liste modifiable, elle m'affiche la première ville commençant par "P" si je valide, ma liste m'affiche uniquement les contact de cette ville ce qui est normale. Moi j'aimerais que lorsque je tape "P", ma liste m'affiche tous les contacts dont la ville comment par cette lettre. Comment faire ?
Private Sub UserForm_Initialize() ' Définition des variables Dim cel As Range Dim Fin As Integer Dim i As Integer ' initialisation des variables Set cel = Range("A1") Fin = cel.End(xlDown).Row - 1 ' Fin de la liste ' Constitution de la liste Ville For i = 1 To Fin list_contact.search_ville.AddItem cel.Offset(i, 4) Next i
'Appel de la procèdure Liste affichant les contacts Liste End Sub
Merci d'avance
JP
Salut,
Affichage alpha croissant -> list1.sorted=true
Mais je ne suis pas certain que ça existe en vba, sinon ->
boucle de tri :o)
' Un tri bulle de ce genre:
for k = 1 to maxi
for i = 1 to to maxi
for j = 1 to maxi
if i <> j then
if list1.list(i) > list1.list(j) then
echange = list1.list(i)
list1.list(i) = list1.list(j)
list2.list(j) = echange
endif
endif
next j
next i
next k
Ben zalors, en affichant tous les commençants par "P" en
tapant "P", ben je dirais que faut trier sur le 1er octet,
si octet1 = "p" -> met dans list2...
Heu, je donne les principes non exhaustifs, si tu veux
du code, demande! En plus je ne sais pas dans quelle
proportion ça s'applique en vbA...
Sinon, tu as plein de logiciels gratuit qui gèrent les
adresses, ou simplement dans Word avec la fonction
"recherche", ça fonctionne très bien :o)
------------------
"Jean-Pierre" <jp@free.fr> a écrit dans le message de news:
42c5090e$0$898$8fcfb975@news.wanadoo.fr...
Bonjour,
J'ai créer une applica vba Excel qui gére un carnet
d'adresse, j'ai un tableau Excel avec Nom, Prénom,... et
ville.
J'ai un UserForm qui affiche la liste des contacts avec
adresse et ville.
Pour facillité les recherches, j'ai créer une liste
modifiable qui affiche les villes (voir code ci-dessous).
J'ai deux questions :
1 - Comment puis-je afficher mes villes par ordre
alphabétique
2 - J'ai plusieurs ville qui comment par la lettre "P" Si
je tape "P" dans la liste modifiable, elle m'affiche la
première ville commençant par "P" si je valide, ma liste
m'affiche uniquement les contact de cette ville ce qui est
normale.
Moi j'aimerais que lorsque je tape "P", ma liste m'affiche
tous les contacts dont la ville comment par cette lettre.
Comment faire ?
Private Sub UserForm_Initialize()
' Définition des variables
Dim cel As Range
Dim Fin As Integer
Dim i As Integer
' initialisation des variables
Set cel = Range("A1")
Fin = cel.End(xlDown).Row - 1 ' Fin de la liste
' Constitution de la liste Ville
For i = 1 To Fin
list_contact.search_ville.AddItem cel.Offset(i, 4)
Next i
'Appel de la procèdure Liste affichant les contacts
Liste
End Sub
Affichage alpha croissant -> list1.sorted=true Mais je ne suis pas certain que ça existe en vba, sinon -> boucle de tri :o)
' Un tri bulle de ce genre: for k = 1 to maxi for i = 1 to to maxi for j = 1 to maxi if i <> j then if list1.list(i) > list1.list(j) then echange = list1.list(i) list1.list(i) = list1.list(j) list2.list(j) = echange endif endif next j next i next k
Ben zalors, en affichant tous les commençants par "P" en tapant "P", ben je dirais que faut trier sur le 1er octet, si octet1 = "p" -> met dans list2...
Heu, je donne les principes non exhaustifs, si tu veux du code, demande! En plus je ne sais pas dans quelle proportion ça s'applique en vbA... Sinon, tu as plein de logiciels gratuit qui gèrent les adresses, ou simplement dans Word avec la fonction "recherche", ça fonctionne très bien :o) ------------------
"Jean-Pierre" a écrit dans le message de news: 42c5090e$0$898$
Bonjour,
J'ai créer une applica vba Excel qui gére un carnet d'adresse, j'ai un tableau Excel avec Nom, Prénom,... et ville. J'ai un UserForm qui affiche la liste des contacts avec adresse et ville. Pour facillité les recherches, j'ai créer une liste modifiable qui affiche les villes (voir code ci-dessous). J'ai deux questions :
1 - Comment puis-je afficher mes villes par ordre alphabétique 2 - J'ai plusieurs ville qui comment par la lettre "P" Si je tape "P" dans la liste modifiable, elle m'affiche la première ville commençant par "P" si je valide, ma liste m'affiche uniquement les contact de cette ville ce qui est normale. Moi j'aimerais que lorsque je tape "P", ma liste m'affiche tous les contacts dont la ville comment par cette lettre. Comment faire ?
Private Sub UserForm_Initialize() ' Définition des variables Dim cel As Range Dim Fin As Integer Dim i As Integer ' initialisation des variables Set cel = Range("A1") Fin = cel.End(xlDown).Row - 1 ' Fin de la liste ' Constitution de la liste Ville For i = 1 To Fin list_contact.search_ville.AddItem cel.Offset(i, 4) Next i
'Appel de la procèdure Liste affichant les contacts Liste End Sub
Merci d'avance
JP
Hervé
Bonsoir Jean-Pierre, Comment affiche tu tes contacts une fois la ville sélectionnée ? En attendant, regarde le code ci-dessous pour ce qui est de l'ordre alphabétique :
Option Explicit Option Compare Text 'pour ne pas tenir compte de la case
Private Sub UserForm_Initialize() Dim I As Integer Dim Tbl() As String
With Worksheets("Feuil1") 'adapte le nom de la feuille For I = 1 To .Range(.[A1], _ .[A65536].End(xlUp)).Rows.Count ReDim Preserve Tbl(1 To I) Tbl(I) = .Range("A" & I) Next I End With
Tri Tbl()
For I = 1 To UBound(Tbl) Me.search_ville.AddItem Tbl(I) Next I
'Appel de la procèdure Liste affichant les contacts Liste End Sub
Sub Tri(Tbl() As String) Dim Tempo As String Dim I As Integer Dim J As Integer 'éffectue un tri décroissant "<" 'pour un tri croissant ">" For I = 1 To UBound(Tbl) - 1 For J = I + 1 To UBound(Tbl) If Tbl(I) > Tbl(J) Then Tempo = Tbl(J) Tbl(J) = Tbl(I) Tbl(I) = Tempo End If Next J Next I End Sub
Hervé.
"Jean-Pierre" a écrit dans le message de news: 42c5090e$0$898$
Bonjour,
J'ai créer une applica vba Excel qui gére un carnet d'adresse, j'ai un tableau Excel avec Nom, Prénom,... et ville. J'ai un UserForm qui affiche la liste des contacts avec adresse et ville. Pour facillité les recherches, j'ai créer une liste modifiable qui affiche les villes (voir code ci-dessous). J'ai deux questions :
1 - Comment puis-je afficher mes villes par ordre alphabétique 2 - J'ai plusieurs ville qui comment par la lettre "P" Si je tape "P" dans la liste modifiable, elle m'affiche la première ville commençant par "P"
si
je valide, ma liste m'affiche uniquement les contact de cette ville ce qui est normale. Moi j'aimerais que lorsque je tape "P", ma liste m'affiche tous les
contacts
dont la ville comment par cette lettre. Comment faire ?
Private Sub UserForm_Initialize() ' Définition des variables Dim cel As Range Dim Fin As Integer Dim i As Integer ' initialisation des variables Set cel = Range("A1") Fin = cel.End(xlDown).Row - 1 ' Fin de la liste ' Constitution de la liste Ville For i = 1 To Fin list_contact.search_ville.AddItem cel.Offset(i, 4) Next i
'Appel de la procèdure Liste affichant les contacts Liste End Sub
Merci d'avance
JP
Bonsoir Jean-Pierre,
Comment affiche tu tes contacts une fois la ville sélectionnée ? En
attendant, regarde le code ci-dessous pour ce qui est de l'ordre
alphabétique :
Option Explicit
Option Compare Text 'pour ne pas tenir compte de la case
Private Sub UserForm_Initialize()
Dim I As Integer
Dim Tbl() As String
With Worksheets("Feuil1") 'adapte le nom de la feuille
For I = 1 To .Range(.[A1], _
.[A65536].End(xlUp)).Rows.Count
ReDim Preserve Tbl(1 To I)
Tbl(I) = .Range("A" & I)
Next I
End With
Tri Tbl()
For I = 1 To UBound(Tbl)
Me.search_ville.AddItem Tbl(I)
Next I
'Appel de la procèdure Liste affichant les contacts
Liste
End Sub
Sub Tri(Tbl() As String)
Dim Tempo As String
Dim I As Integer
Dim J As Integer
'éffectue un tri décroissant "<"
'pour un tri croissant ">"
For I = 1 To UBound(Tbl) - 1
For J = I + 1 To UBound(Tbl)
If Tbl(I) > Tbl(J) Then
Tempo = Tbl(J)
Tbl(J) = Tbl(I)
Tbl(I) = Tempo
End If
Next J
Next I
End Sub
Hervé.
"Jean-Pierre" <jp@free.fr> a écrit dans le message de news:
42c5090e$0$898$8fcfb975@news.wanadoo.fr...
Bonjour,
J'ai créer une applica vba Excel qui gére un carnet d'adresse, j'ai un
tableau Excel avec Nom, Prénom,... et ville.
J'ai un UserForm qui affiche la liste des contacts avec adresse et ville.
Pour facillité les recherches, j'ai créer une liste modifiable qui affiche
les villes (voir code ci-dessous).
J'ai deux questions :
1 - Comment puis-je afficher mes villes par ordre alphabétique
2 - J'ai plusieurs ville qui comment par la lettre "P" Si je tape "P" dans
la liste modifiable, elle m'affiche la première ville commençant par "P"
si
je valide, ma liste m'affiche uniquement les contact de cette ville ce qui
est normale.
Moi j'aimerais que lorsque je tape "P", ma liste m'affiche tous les
contacts
dont la ville comment par cette lettre.
Comment faire ?
Private Sub UserForm_Initialize()
' Définition des variables
Dim cel As Range
Dim Fin As Integer
Dim i As Integer
' initialisation des variables
Set cel = Range("A1")
Fin = cel.End(xlDown).Row - 1 ' Fin de la liste
' Constitution de la liste Ville
For i = 1 To Fin
list_contact.search_ville.AddItem cel.Offset(i, 4)
Next i
'Appel de la procèdure Liste affichant les contacts
Liste
End Sub
Bonsoir Jean-Pierre, Comment affiche tu tes contacts une fois la ville sélectionnée ? En attendant, regarde le code ci-dessous pour ce qui est de l'ordre alphabétique :
Option Explicit Option Compare Text 'pour ne pas tenir compte de la case
Private Sub UserForm_Initialize() Dim I As Integer Dim Tbl() As String
With Worksheets("Feuil1") 'adapte le nom de la feuille For I = 1 To .Range(.[A1], _ .[A65536].End(xlUp)).Rows.Count ReDim Preserve Tbl(1 To I) Tbl(I) = .Range("A" & I) Next I End With
Tri Tbl()
For I = 1 To UBound(Tbl) Me.search_ville.AddItem Tbl(I) Next I
'Appel de la procèdure Liste affichant les contacts Liste End Sub
Sub Tri(Tbl() As String) Dim Tempo As String Dim I As Integer Dim J As Integer 'éffectue un tri décroissant "<" 'pour un tri croissant ">" For I = 1 To UBound(Tbl) - 1 For J = I + 1 To UBound(Tbl) If Tbl(I) > Tbl(J) Then Tempo = Tbl(J) Tbl(J) = Tbl(I) Tbl(I) = Tempo End If Next J Next I End Sub
Hervé.
"Jean-Pierre" a écrit dans le message de news: 42c5090e$0$898$
Bonjour,
J'ai créer une applica vba Excel qui gére un carnet d'adresse, j'ai un tableau Excel avec Nom, Prénom,... et ville. J'ai un UserForm qui affiche la liste des contacts avec adresse et ville. Pour facillité les recherches, j'ai créer une liste modifiable qui affiche les villes (voir code ci-dessous). J'ai deux questions :
1 - Comment puis-je afficher mes villes par ordre alphabétique 2 - J'ai plusieurs ville qui comment par la lettre "P" Si je tape "P" dans la liste modifiable, elle m'affiche la première ville commençant par "P"
si
je valide, ma liste m'affiche uniquement les contact de cette ville ce qui est normale. Moi j'aimerais que lorsque je tape "P", ma liste m'affiche tous les
contacts
dont la ville comment par cette lettre. Comment faire ?
Private Sub UserForm_Initialize() ' Définition des variables Dim cel As Range Dim Fin As Integer Dim i As Integer ' initialisation des variables Set cel = Range("A1") Fin = cel.End(xlDown).Row - 1 ' Fin de la liste ' Constitution de la liste Ville For i = 1 To Fin list_contact.search_ville.AddItem cel.Offset(i, 4) Next i
'Appel de la procèdure Liste affichant les contacts Liste End Sub
Merci d'avance
JP
Renfield_MVP.VB
Attention au code :
Dim I As Integer Dim Tbl() As String With Worksheets("Feuil1") 'adapte le nom de la feuille For I = 1 To .Range(.[A1], _ .[A65536].End(xlUp)).Rows.Count ReDim Preserve Tbl(1 To I) Tbl(I) = .Range("A" & I) Next I End With
en effet, les Redim Preserve sont effectué a chaque iteration de la boucle, ce qui doit ralentir considérablement la chose.
préférer le code suivant :
Dim I As Integer Dim Tbl() As String Dim RowCount as Long
ReDim Preserve Tbl(1 To I)
With Worksheets("Feuil1") 'adapte le nom de la feuille RowCount = .Range(.[A1], .[A65536].End(xlUp)).Rows.Count ReDim Tbl(1 To RowCount) As String For I = 1 To RowCount Tbl(I) = .Range("A" & I) Next I End With
Renfield
Attention au code :
Dim I As Integer
Dim Tbl() As String
With Worksheets("Feuil1") 'adapte le nom de la feuille
For I = 1 To .Range(.[A1], _
.[A65536].End(xlUp)).Rows.Count
ReDim Preserve Tbl(1 To I)
Tbl(I) = .Range("A" & I)
Next I
End With
en effet, les Redim Preserve sont effectué a chaque iteration de la
boucle, ce qui doit ralentir considérablement la chose.
préférer le code suivant :
Dim I As Integer
Dim Tbl() As String
Dim RowCount as Long
ReDim Preserve Tbl(1 To I)
With Worksheets("Feuil1") 'adapte le nom de la feuille
RowCount = .Range(.[A1], .[A65536].End(xlUp)).Rows.Count
ReDim Tbl(1 To RowCount) As String
For I = 1 To RowCount
Tbl(I) = .Range("A" & I)
Next I
End With
Dim I As Integer Dim Tbl() As String With Worksheets("Feuil1") 'adapte le nom de la feuille For I = 1 To .Range(.[A1], _ .[A65536].End(xlUp)).Rows.Count ReDim Preserve Tbl(1 To I) Tbl(I) = .Range("A" & I) Next I End With
en effet, les Redim Preserve sont effectué a chaque iteration de la boucle, ce qui doit ralentir considérablement la chose.
préférer le code suivant :
Dim I As Integer Dim Tbl() As String Dim RowCount as Long
ReDim Preserve Tbl(1 To I)
With Worksheets("Feuil1") 'adapte le nom de la feuille RowCount = .Range(.[A1], .[A65536].End(xlUp)).Rows.Count ReDim Tbl(1 To RowCount) As String For I = 1 To RowCount Tbl(I) = .Range("A" & I) Next I End With