[vba] classer par ordre alphabetique (userform)
Dernière réponse : dans Programmation
Slt cette fois j'ai une question interressante
j'ai crée un répertoire telephonique en vb avec une userform.
voila le probleme ,en fait je voudrai quand je creer un nouveau numero le mettre dans la bonne feuille excel (feuil 1 -> nom commencant par a jusqua f
feuil 2 ->nom commencant par g jusqua m
...........)
pour les classer par ordre alphabetique.
voici mon code pour l'instant:
alor quelqu'un peut-il maider ?merci
j'ai crée un répertoire telephonique en vb avec une userform.
voila le probleme ,en fait je voudrai quand je creer un nouveau numero le mettre dans la bonne feuille excel (feuil 1 -> nom commencant par a jusqua f
feuil 2 ->nom commencant par g jusqua m
...........)
pour les classer par ordre alphabetique.
voici mon code pour l'instant:
Private Sub Ajouter_Click()
Dim Cel As Range
Dim Cel2 As Range
Dim Cel3 As Range
If Range("A2") = "" Then
Set Cel = Range("A2")
Set Cel2 = Range("A2").Offset(0, 1)
Set Cel3 = Range("A2").Offset(0, 2)
Else
Set Cel = Range("A1").End(xlDown).Offset(1, 0) 'pour le nom
Set Cel2 = Range("A1").End(xlDown).Offset(1, 1) 'pour le numero
Set Cel3 = Range("A1").End(xlDown).Offset(1, 2) 'pour le service(bouleau)
End If
'je pense que c'est ici qu'il faut choisir sur qu'elle feuille envoyer le contenu (nom,num,service)
Cel = TextBoxNom
Cel2 = TextBoxNum
Cel3 = ComboBoxServ
End Sub
alor quelqu'un peut-il maider ?merci
Autres pages sur : vba classer ordre alphabetique userform
Lassé par la pub ? Créez un compte
louloukg a dit :
Else
Set Cel = Range("A1").End(xlDown).Offset(1, 0) 'pour le nom
Set Cel2 = Range("A1").End(xlDown).Offset(1, 1) 'pour le numero
Set Cel3 = Range("A1").End(xlDown).Offset(1, 2) 'pour le service(bouleau)
End If
waou là où tu bosses ils ont des bureaux en bois massif...impressionant!
je sais pas si il existe un comparateur pour l'alphabet, mais au pire tu te fait un tableau avec tout l'alphabet.
Tu met la valeur de cel dans une variable (pour pouvoir la maltraiter).
Puis tu compare la première lettre avec toutes tes premières lettres de tes feuilles.
Une fois que tu tombes sur la bonne, tu continue jusqu'au prochain changement de première lettre (comme ca tu sauras quelle limite ne pas dépasser).
après tu fais un truc du genre:
nom = right(nom, Len(nom) - i)
i=i+1
comme ca tu récupère la 2ème lettre et tu recommences dans l'espace restraint que tu à créer... et ainsi de suite.
quand tu as déterminé à quel numéro de ligne ca correspond, tu insères une ligne. il me semble que c'est comme ca:
et tu y copies tes cel, cel2, cel3
rows("X:X").select //ligne que tu as déterminé
selection.insert shift:=xltodown
ba ebcore une ptite question .Je voudrai avoir un bouton qui me chance de feullie quand je clic dessus. moi j'ai fai ca :
probleme c'est que ca m'envoi toujours sur la feuille2 car quand je fais du pas a pas ca passe toujours que dans le premier if.Les conditions doivent être mauvaise mais je sais pas quoi mettre .help
Private Sub CommandButtonDroite_Click()
If (Worksheets("Feuille1").Select) Then
Worksheets("Feuille2").Select
Exit Sub
End If
If (Worksheets("Feuille2").Select) Then
Worksheets("Feuille3").Select
Exit Sub
End If
If (Worksheets("Feuille3").Select) Then
Worksheets("Feuille4").Select
Exit Sub
End If
If (Worksheets("Feuille4").Select) Then
Worksheets("Feuille1").Select
Exit Sub
End If
End Sub
probleme c'est que ca m'envoi toujours sur la feuille2 car quand je fais du pas a pas ca passe toujours que dans le premier if.Les conditions doivent être mauvaise mais je sais pas quoi mettre .help
ActiveSheet.Index -> pemiere feuille ????
Non. Feuille courante.
Sheets.Count->nombre total de feuille
Oui
et j'ai essayer avec - 1 et + 3 ( j'ai 4 feuille)ca marche pas
Meuh non. modulo n est toujours compris entre 0 et n-1. Comme les feuilles sont indicées à partir de 1, je rajoute une unité.
mod : C’est le reste de la division par un nombre ?
Oui.
est ce possible de faire defiler les feuilles dans l'autre sens ?
Oui
Non. Feuille courante.Sheets.Count->nombre total de feuille
Ouiet j'ai essayer avec - 1 et + 3 ( j'ai 4 feuille)ca marche pas
Meuh non. modulo n est toujours compris entre 0 et n-1. Comme les feuilles sont indicées à partir de 1, je rajoute une unité.mod : C’est le reste de la division par un nombre ?
Oui.est ce possible de faire defiler les feuilles dans l'autre sens ?
Oui
encore une question est ce possible de creer un tableau pour lire sur plusieur feuilles.j'y arrive que sur une feuille
help please
Worksheets("A-F").Select
Dim i As Integer
Dim Repertoire(0 To 100, 1 To 3) As String
For i = 0 To NbreCase
Repertoire(i, 1) = Range("A1").Offset(i)
Repertoire(i, 2) = Range("B1").Offset(i)
Repertoire(i, 3) = Range("C1").Offset(i)
Next i
ListBoxListeRep1.List = Repertoire
help please
comme ca sa marchera jamais faut que je passe dans chaque feuille tu crois pas que ca marcherai mieu si je faisai un truc du genre :
for each sheet
parce que j'ai fais sa et sa marche pas
for each sheet
parce que j'ai fais sa et sa marche pas
Dim Repertoire11(0 To 100, 1 To 3) As String
Dim i11 As Integer
Dim i12 As Integer
For i12 = 1 To 4
For i11 = 0 To NbreCase
Repertoire11(i11, 1) = Sheets(i12).Range("A1").Offset(i11)
Repertoire11(i11, 2) = Sheets(i12).Range("B1").Offset(i11)
Repertoire11(i11, 3) = Sheets(i12).Range("C1").Offset(i11)
Next
Next
ListBoxListeRep1.List = Repertoire11
For Each est une bonne idée.
Mais quand tu dis que ça ne marche pas, ce n'est pas à cause de la boucle. Merci de mettre des points d'arrêt dans ton code et/ou d'afficher le contenu de Repertoire11 à la fin, et de constater que le problème vient du fait que :
1° tu écrases les données de la première feuille avec la seconde, celles de la seconde avec la troisième, etc.
2° je vérifierais le type de liste qu'attend ListBoxListeRep1.List
Concernant le point 1°, la valeur de NbreCase est-elle différente selon la feuille ?
Mais quand tu dis que ça ne marche pas, ce n'est pas à cause de la boucle. Merci de mettre des points d'arrêt dans ton code et/ou d'afficher le contenu de Repertoire11 à la fin, et de constater que le problème vient du fait que :
1° tu écrases les données de la première feuille avec la seconde, celles de la seconde avec la troisième, etc.
2° je vérifierais le type de liste qu'attend ListBoxListeRep1.List
Concernant le point 1°, la valeur de NbreCase est-elle différente selon la feuille ?
voici avec quel forme je me suis aider il suffit juste de la telecharger
http://www.excelabo.net/xl/userforms.php#usftransparent
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :
- articlesReaddir ordre alphabetique
- ForumMp3 ordre alphabetique
- ForumWindows 2000 ordre alphabetique
- ForumComment classer par ordre alpha sur une page
- ForumGraver des mp3 par ordre alphabetique
- ForumOrdre alphabetique dans itunes
- benchmarkEncodage musicmatch piste de lalbum par ordre alphabetique
- ForumClasser vba
- ForumVba userform
- ForumRã duire userform vba
- Voir plus