Pb code macro

nickos2406

XLDnaute Junior
Bonjour,

J'ai créé deux macro faisant apparaitre une liste de recherche. Je vous joins un exemple.

Mon problème est dans l'écriture de ces macros. Comme je ne suis pas expert, je n'arrive pas à trouver les solutions à mes problèmes:
1- Pourquoi le label "entret tout ou partie etc.." (dans userform 2) n'est pas visible?
2- Comment faire pour que le curseur apparaisse toujours dnas la zone de recherche?
3- Lorsque je fais une recherche, et que j'efface avec la touche, parfois il duplique les lignes?
4- J'ai un soucis sur le tri des intitulés du userform2 (macro de l'onglet Liste_Recherche_personne). Je n'arrive pas à comprendre pourquoi il plante? Apparemment il n'aime pas le code "If IsNumeric(f1.Cells(1, col)) "

Merci d'avance pour votre aide...
Cordialement
Nicolas
 

Pièces jointes

  • test.zip
    33.4 KB · Affichages: 16
  • test.zip
    33.4 KB · Affichages: 19
  • test.zip
    33.4 KB · Affichages: 16
G

Guest

Guest
Re : Pb code macro

Bonjour,

Question 1: Parcequ'il s'appelle "Label1" et que dans Initialize tu essaies d'en ajouter un au même nom. Alors nomme le Label0 ou Machin

Question 2: Affichage/Ordre de Tabulation -> fait remonter son nom dans la liste. Dans initialize, en dernière ligne rajoute TextBox2.SetFocus

Question 3: IsNumeric(f1.Cells(1, col)) Col renvoie 0 (zéro)
Ajouter le numéro du label dans sa propriété Tag lors de sa création. puis récupérer ce numéro dans le module de classe.

Code:
Private Sub UserForm_Initialize()
    nbcol = [MaDB_personne].Columns.Count
    Set f1 = Sheets("Liste_Recherche_personne")
    Me.ListBox2.ColumnCount = nbcol
    Me.ListBox2.List = [MaDB_personne].Value
    i = 1
    x = 7
    For i = 1 To nbcol
        retour = Me.Controls.Add("Forms.Label.1", "Label" & i, True)
       [COLOR=red][B] With Me("label" & i)
            .Caption = f1.Cells(1, i)
            .Top = 45
            .Left = x
       [/B][/COLOR][COLOR=red][B]     .Tag = i
        End With
[/B][/COLOR]        x = x + f1.Columns(i).Width * 1
        temp = temp & f1.Columns(i).Width * 1 & ";"
    Next
    Me.ListBox2.ColumnWidths = temp
    For b = 1 To nbcol: Set Lbl(b).GrLabel = Me("Label" & b): Next b
    Me.ListBox2.List = [MaDB_personne].Value
    [B][COLOR=red]TextBox2.SetFocus
[/COLOR][/B]End Sub

Code:
Private Sub GrLabel_Click()
  nbcol = [MaDB_personne].Columns.Count
[COLOR=red][B]  col = Val(GrLabel.Tag)
  num = IsNumeric(f1.Cells(1, col))
[/B][/COLOR]  For i = 1 To nbcol
    UserForm2("label" & i).ForeColor = vbBlack
  Next i
  UserForm2(temp).ForeColor = vbBlue
  Dim a()
  a = UserForm2.ListBox2.List
  nbcol = UBound(a, 2) - LBound(a, 2) + 1
  If col <> OrdreAncien1 Then ordre1 = False
  Call TriCD1(a(), UBound(a), col - 1, Not ordre1, nbcol, num)
  ordre1 = Not ordre1
  OrdreAncien1 = col
  UserForm2.ListBox2.List = a
End Sub

Déclare toutes tes variables. Et rajoute Option Explicit en haut de tes modules.

A+
 

Discussions similaires

Statistiques des forums

Discussions
312 322
Messages
2 087 284
Membres
103 507
dernier inscrit
tapis23