Combobox tri
RésoluJe 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
Configuration: Windows XP Internet Explorer 7.0
43 réponses
Le fil porte sur un formulaire Excel utilisant UsF_Modification et cinq combobox de tri ; lors d'une recherche multi-critères, si une valeur n’existe pas, l’exécution plante. Des participants proposent des corrections, notamment un remaniement du code pour lever l’erreur et la suppression d’une ligne, tandis qu’un autre signale une variable non définie et ajuste le démarrage. L’échange rappelle le rôle central de UsF_Modification pour extraire rapidement les données de la feuille BDD via les filtres, et propose une réorganisation vers une feuille dédiée avec désactivation des contrôles. En parallèle, les propositions vont jusqu’à supprimer l’UF Modification et créer une feuille simplifiée, afin de limiter les points d’échec et de stabiliser le filtrage multi-critères sans imposer une solution immédiate.
-
-
ContributeurJe ne parvient pas à recréer le problème (jamais eu)
Met un nouveau topic avec ta question, peut-être d'autre intervenants pourront te répondre.
A+ -
Salut!
Donc j'ai enlevé le .Value dans tous les Usf, et que je mette rien ou que je mette .Text, toujours le petit carré :(
A savoir que pour les Textboxs où j'appuie sur enter, j'ai mis => ENTERKEYBEHAVIOR à "True".
Je ne sais pas si ça a des incidences...
Mais il faut absolument que je trouve une solution car ça le fait vraiment pas quand j'imprime mes feuilles...
Pour ce qui est des 40 lignes :) je gardais ta méthode de côtés pour l'instant car ma base de donnée n'était pas figée, elle a pas mal évolué depuis! Mais maintenant que je sais qu'elle va rester telle quelle, je pense ça ça va être plus simple avec ta méthode! -
ContributeurRe,
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
-
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 -
Bon c'est parfait Mr lermitte222!
Un grand merci pour toute votre aide sans laquelle je n'aurais pu aboutir! -
Contributeurouppps, j'ai oublier..
dans l'UF Modification...LigInt = ListBox1.List(ListBox1.ListIndex)
-
J'ai essayé ton code, mais toujours pareil... Lorsque je dble clic sur une ligne, rien dans l'Usf_Creation....
-
ContributeurRemplace 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+ -
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....... -
ContributeurOk 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+
-
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+ -
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... -
OK ,
Alors regarde sur le lien ci-joint, tout y est expliqué.
Merci
http://www.cijoint.fr/cjlink.php?file=cj200905/cijIEEV3Dm.bmp -
ContributeurExplique 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+
-
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 -
ContributeurRe,
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+ -
Ok pas de souci, le voici:
http://www.cijoint.fr/cjlink.php?file=cj200905/cijTMrYZ6N.xls
Merci a toi! -
ContributeurDésolé mais les classeurs ne sont plus dispo sur Cjoint, tu peu remettre ?
A+ -
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.
- 1
- 2
- 3