Combobox tri

Résolu
tchulio Messages postés 174 Statut Membre -  
tchulio Messages postés 174 Statut Membre -
Bonjour,
Je me permets de vous soliciter car je suis de nouveau bloqué…
Lorsque vous cliquez sur recherche, il y a UsF_Modification qui se charge,
J’ai 5 Combobox de tri.
Voici le fichier : http://www.cijoint.fr/cjlink.php?file=cj200903/cijT1OKLdw.xls
Lorsque je fait une recherche avec une seule combobox , il n’y a pas de soucis, ça fonctionne, par contre lorsque je veux faire une recherche avec plusieurs combobox, si la valeur n’existe pas ça plante…. Il faut faire l’essai pour comprendre..
Y aurait-il possibilité de me donné un petit coup de main de nouveau…
Encore merci
A voir également:

43 réponses

lermite222 Messages postés 9042 Statut Contributeur 1 191
 
après contrôle, ta ligne...
LigInt = 1 + Me.ListBox1.ListIndex + 1
n'es pas juste, si tu sélectionne le 4 affiche le 3 !!!!
faut ajouter 2 à la modif
LigInt = ListBox1.list(ListBox1.ListIndex ,0) + 1
0
tchulio Messages postés 174 Statut Membre 1
 
Bon écoute, j’ai tout analysé… Tout est nickel… Encore merci a toi pour aide précieuse !!
Bonne fin de journée-
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
J'ai encore fait quelque simplfications dans ton UF Création... pas tester vu qu'il n'y a pas la feuille formulaire.
Je n'ai modifié que 2 sub pour l'exemple.
Tu peu t'en inspirer pour les autres.
https://www.cjoint.com/?eiqArC06gv
A+
0
tchulio Messages postés 174 Statut Membre 1
 
Salut excuse moi de t'ennuyer après tant de temps!

Ta macro fonctionne parfaitement. J'aurais juste une petite question.

Lorsque je clique sur un ligne de la listbox, pas de soucis tout fonctionne, mais lorsque je clique où il n'y a rien sur la listbox, là ça plante.

Il n'y aurait pas possibilité de mettre un code pour que lorsque l'on double clique, ça ne bug pas ?

Encore merci pour tout.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Désolé mais les classeurs ne sont plus dispo sur Cjoint, tu peu remettre ?
A+
0
tchulio Messages postés 174 Statut Membre 1
 
Ok pas de souci, le voici:

http://www.cijoint.fr/cjlink.php?file=cj200905/cijTMrYZ6N.xls

Merci a toi!
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Re,
Comprend pas, que l'ont clic ou double clic sur la partie vide ça donne les valeurs de la dernière ligne de la listBox ?
Ou alors explique plus en détails.
A+
0
tchulio Messages postés 174 Statut Membre 1
 
non en fait quand on clique sur la partie vide (blanche) en dessous des données la macro plante .
Je ne sait pas si tu vois ce que je veux dire?
Par exemple mets un filtre, et tu verra que si tu clique a peine plus bas que sur la ligne de donnée ça plante. rien de bien méchant a mon avis.

Sinon juste une autre question, est ce quelqu'un peut me dire si c'est possible que dans une textbox, lorsque j'appuie sur la touche "entrer" de mon clavier; le curseur se mette a la ligne (avec multiline=yes) comme dans word quoi... merci a vous
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Explique EXACTEMENT quel UF et les manip que tu fait pour que ça plante parce que je ne parvient pas à le faire planter.
2°)
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 13 Then
        TextBox1.Text = TextBox1.Text & Chr(13)
    End If
End Sub

A+
0
tchulio Messages postés 174 Statut Membre 1
 
OK ,

Alors regarde sur le lien ci-joint, tout y est expliqué.

Merci

http://www.cijoint.fr/cjlink.php?file=cj200905/cijIEEV3Dm.bmp
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Pas étonnant que ça plante, tu a ajouter du code, et tu l'a mis à l'envers.
TU FERME LE UF et ENSUITE tu essaye de lire la listbox ???????? GGGrrrrrrr
Inverse les 2 lignes.
A+
0
tchulio Messages postés 174 Statut Membre 1
 
Comment tu dis inverser les 2 lignes, comme cela?

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)



LigInt = ListBox1.List(ListBox1.ListIndex, 0) + 1


UsF_Modification.Hide

UsF_Creation.Show
End Sub


Car ça plante aussi comme cela...
0
tchulio Messages postés 174 Statut Membre 1
 
Pour voir si ça plante, tu cliques sur le bouton initialiser puis là tu essaies sur la zone blanche, là on voit que ça plante... Tu vois ce que je veux dire ?
Merci a+
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Ok je pense que j'ai compris, mais quand tu donne des explications il faut tout dire, a savoir..
QUAND IL N'Y A PAS DE SELECTION CA PLANTE...
Private Sub ListBox1_Click() 'au clic dans la ListBox
    If ListBox1.ListIndex < 0 Then Exit Sub
    For Y = 1 To 9
      Me.Controls("TextBox" & Y).Value = ListBox1.List(ListBox1.ListIndex, Y - 1)
    Next Y
    TextBox1.SetFocus
    TextBox1.SelStart = 0
    TextBox1.SelLength = Len(TextBox1.Value)
End Sub

et au double click, tu change le code.. maintenant tu met Hide et sur le classeur c'est Unload !!!!!
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    ' Masquer le formulaire Modification
    'UsF_Modification.Hide
    Unload Me
    LigInt = ListBox1.List(ListBox1.ListIndex, 0) + 1
    UsF_Creation.Show
  End Sub

doit être
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
' Masquer le formulaire Modification
LigInt = ListBox1.List(ListBox1.ListIndex, 0) + 1
'UsF_Modification.Hide
Unload Me
UsF_Creation.Show
End Sub
A+


0
tchulio Messages postés 174 Statut Membre 1
 
Salut !

effectivement en mettant ceci : If ListBox1.ListIndex < 0 Then Exit Sub
ça fonctionne parfaitement, désolé de ne pas avoir expliqué comme il le fallait depuis le début...

A mon avis il ne devrait plus y avoir beaucoup de problèmes , si ce n'est celui qui vient de m'arriver ce matin:
En fait dans la listbox, tant que les N° dans la colonne tout à gauche ( comme dans le fichier que sur ci -joint) sont consécutifs, 1 - 2 - 3 -4 , .... lorsque je double clic sur une ligne, pas de soucis, les valeurs se chargent comme il se doit dans le Usf_Création, par contre, j'utilise réelement ce programme depuis ce matin, et mes numéros ne sont pas consécutifs, ça commence à 96 - 99 - 101 - 105 ,... et là, lorsque je double clic sur un ligne, le Usf_Création se chargent mes sans les valeurs....

Il doit y avoir un petit paramètre à changer, mais je n'arrive pas à trouver d'où ça vient.....

Un grand merci si tu arrives à me donner ce dernier coup de main.......
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Remplace la sub Activate de l'UF Création par
Private Sub UserForm_Activate()
Dim lig As Long

    With Sheets("INTERVENTIONS")
      For lig = 2 To .Cells(65536, 1).End(xlUp).Row
        If .Cells(lig, 1) = LigInt Then Exit For
      Next lig
      Me.Cb_rnc = .Range("A" & lig)
      Me.TB_soc = .Range("B" & lig)
      Me.TB_NumBon = .Range("E" & lig)
      Me.CB_art = .Range("D" & lig)
      Me.TB_TempsInt = .Range("F" & lig)
      Me.CB_cre = .Range("C" & lig)
      Me.TB_Probleme = .Range("G" & lig)
      Me.TB_Cause = .Range("H" & lig)
      Me.col_9 = .Range("I" & lig)
      Me.col_10 = .Range("J" & lig)
      Me.col_12 = .Range("L" & lig)
      Me.col_11 = .Range("K" & lig)
      Me.col_13 = .Range("M" & lig)
      Me.col_14 = .Range("N" & lig)
      Me.col_15 = .Range("O" & lig)
      Me.col_16 = .Range("P" & lig)
      Me.col_17 = .Range("Q" & lig)
      Me.col_18 = .Range("R" & lig)
      Me.col_19 = .Range("S" & lig)
      Me.col_20 = .Range("T" & lig)
      Me.col_24 = .Range("X" & lig)
      Me.col_25 = .Range("Y" & lig)
      Me.col_26 = .Range("Z" & lig)
      Me.col_27 = .Range("AA" & lig)
      Me.col_28 = .Range("AB" & lig)
      Me.col_29 = .Range("AC" & lig)
      Me.col_30 = .Range("AD" & lig)
      Me.col_31 = .Range("AE" & lig)
      Me.col_32 = .Range("AF" & lig)
      Me.col_33 = .Range("AG" & lig)
      Me.col_34 = .Range("AH" & lig)
      Me.col_35 = .Range("AI" & lig)
      Me.col_36 = .Range("AJ" & lig)
      Me.col_37 = .Range("AK" & lig)
      Me.col_38 = .Range("AL" & lig)
      Me.col_39 = .Range("AM" & lig)
      Me.col_40 = .Range("AN" & lig)
      Me.col_41 = .Range("AO" & lig)
      Me.col_42 = .Range("AP" & lig)
    End With
  If col_42 <> "" Then c.Visible = True
End Sub

Et je t'ai pourtant déja expliquer comment remplacer tes 40 lignes par 4 lignes !!
A+
0
tchulio Messages postés 174 Statut Membre 1
 
J'ai essayé ton code, mais toujours pareil... Lorsque je dble clic sur une ligne, rien dans l'Usf_Creation....
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
ouppps, j'ai oublier..
dans l'UF Modification...
LigInt = ListBox1.List(ListBox1.ListIndex)

0
tchulio Messages postés 174 Statut Membre 1
 
Bon c'est parfait Mr lermitte222!

Un grand merci pour toute votre aide sans laquelle je n'aurais pu aboutir!
0
tchulio Messages postés 174 Statut Membre 1
 
Salut!

J'écris pour autre chose car la macro fonctionne parfaitement!

C'est juste que lorsque je veux mettre les données de mes textbox dans la feuille "Formulaire" avec le bouton éditer rapport, ça fonctionne bien mais si dans une textbox j'appuie sur "ENTER" pour aller à la ligne et que j'exporte, ben la il y a un carré qui se mets sur ma feuille (là ou j'ai appuyé sur enter...) tu vois ce que je veux dire?
Alors là quand j'imprime ma feuille ça me fait des carrés un peu partout...
Que dois je faire pour éviter celà?


Merci
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
Re,
dans ..
      .Cells(LigInt, 1) = Me.Cb_rnc.Value
      .Cells(LigInt, 2) = Me.TB_soc.Value
      .Cells(LigInt, 3) = Me.CB_cre.Value
      .Cells(LigInt, 4) = Me.CB_art.Value
     .....
     .....

Remplacer les Value par text ou par rien.
      .Cells(LigInt, 2) = TB_soc
      .Cells(LigInt, 3) = CB_cre
      .Cells(LigInt, 4) = CB_art
     .....
     .....

Comme tu est dans l'UF pas besoin du Me.
A+
Rappel.. remplacer tes 40 lignes par 4
Dans le Tag des textbox mettre sont N°, par ex: dans TB_soc mettre Tag à 1, CB_cre mettre tag à 2
.... col_24 mettre tag à 24 (en mode édition bien sùr)
Si il y a des TextBox autre mettre le tag à 99
pour sauver..
Dim Cont as control
    For Each Cont In Me.Controls
        If TypeOf Cont Is MSForms.TextBox Then
            N = Cont.tag
            if N<99 then
                Cells(Lig, N) = Cont.Object.Text 
            end if
        End If
    Next Cont

ou bien Autre méthode
0