Tri avec combobox dans userform

whooki

XLDnaute Occasionnel
Bonjour à tous,

Voilà je me prends la tête depuis pas mal de temps dans un USF.
J’ai établi un formulaire pour gérer des fournisseurs, et en // créer un code pour réaliser des demandes de prix ( qui n’est pas présent sur l’exemple).
J’ai créé ( en reprenant des exemples du forum) une combobox pour trier dans un premier temps mes fournisseurs par catégories, puis dans la seconde combobox il me met bien les fournisseurs triés. En revanche, lorsque je veux sélectionner les fournisseurs triés selon leur catégories dans les textbox associés( contact, tel, fax etc.. )le trie n’est pas réalisé. Le 2eme combobox prend automatiquement la première valeur de la colonne b.

Je suis complètement perdu, et je ne sais pas comment remédier à cela.

Autre problème, je souhaiterais à partir du USF vierge, créer (ou mettre à jour si usf chargé avec un fournisseur) un fournisseur en cliquant sur le bouton adéquate, le tout en triant la base de données fournisseurs par la colonne A.

Merci par avance de votre retour.
 

Pièces jointes

  • Classeur4.xlsm
    25.8 KB · Affichages: 117
  • Classeur4.xlsm
    25.8 KB · Affichages: 118
  • Classeur4.xlsm
    25.8 KB · Affichages: 118

Robert

XLDnaute Barbatruc
Repose en paix
Re : Tri avec combobox dans userform

Bonjour Whooki, bonjour le forum,

Impossible de travailler sur ton fichier avec ma version 2003... Pourrais-tu mettre aussi en pièce jointe ton fichier converti pour Excel 2003 ?
 

Dranreb

XLDnaute Barbatruc
Re : Tri avec combobox dans userform

Bonjour
Mon classeur de macros OutIdx vous simplifierait les choses.
Le problème est très voisin de la Démo ComboBoxCasc dans DémoOutIdx, ou on choisit d'abord une 1ère lettre prise d'une colonne puis un mot prise d'une autre.
À +

Bonjour Robert. Je n'arrive à rien non plus avec le classeur reconverti en .xls avec mon converter.
 
Dernière édition:

whooki

XLDnaute Occasionnel
Re : Tri avec combobox dans userform

voici le fichier au format .xls.

En ce qui concerne les classeurs de démonstration, je vais essayé de regarder tout celà.
 

Pièces jointes

  • Classeur4.xls
    49 KB · Affichages: 90
  • Classeur4.xls
    49 KB · Affichages: 94
  • Classeur4.xls
    49 KB · Affichages: 88

whooki

XLDnaute Occasionnel
Re : Tri avec combobox dans userform

je te remercie pour ton fichier, je vais l'adapter sur mon autre classeur.

En revanche, pour la 2eme partie de ma question, tu aurais une idée pour la fonction mise à jour, et ou ajout de fournisseur directement dans les bonnes colonnes.

Merci par avance
 

Dranreb

XLDnaute Barbatruc
Re : Tri avec combobox dans userform

Je vous donnerai bien le code complet du userform utilisant OutIdx dans un instant, mais je déteste travailler sur des adresses de cellules et non des plages nommées, sur des CodeNames non mnémoniques, et sur des contrôles aux noms qui ne commencent pas par un préfixe de 3 lettres identifiant leur nature suivi d'un mnémonique.
Voulez vous que je change tout ça ?

À +
 
Dernière édition:

whooki

XLDnaute Occasionnel
Re : Tri avec combobox dans userform

Honnêtement, je ne suis pas du tout spécialiste du VBA, je sais juste copier et coller certains codes trouvés sur des forums et ensuite le combiné, et je vous laisse le choix des manips.

Je suis certain que mon code peut être optimisé, mais étant donné qu’il y a d’autres fonctions et d’autres codes, je ne serais pas dire si c’est optimisable ou non.

D’autre part, j’ai adapté votre partie de code et en recompilant il me sort une erreur 9 ou erreur 38 dans la partie userform initialise.

Merci encore pour votre aide.
 

Dranreb

XLDnaute Barbatruc
Re : Tri avec combobox dans userform

J'en déduis que vous voulez bien que je change les CodeName et les noms de contrôles, et que je donne des noms aux plages.

Attention, je viens de mettre une nouvelle version de OutIdx. J'ai ajouté un paramètre optionnel Plage à la méthode Actualiser de ComboBoxCasc pour prendre en compte le changement de nombre de lignes suite à un ajout où une suppression.

Mais finalement je n'en ai pas eu besoin parce que j'ai fait comme d'habitude: pour ajouter une ligne je duplique la dernière en la copiant devant elle même puis je travaille sur l'originale repoussée une ligne plus bas. Non seulement toutes les références, que ce soit en noms de plages ou en formules, sont rectifiées en conséquence, mais même aussi un objet Range noté dans une variable d'un module de classe d'un autre classeur d'ailleurs masqué !
Veillez cependant à insérer le nombre de lignes nécessaires devant la dernière pour y mettre devant vos vrais fournisseurs. D'ailleurs je vais colorer en bleu ciel ce qui ne fait partie des plages nommées. N’écrivez rien dans ce bleu: insérez d'abord des lignes devant la dernière, mais pas devant la 1ère surtout, ça décalerait tout !

Veillez à corriger s'il y a lieu la référence à OutIdx, au moyen du service prévu à cet effet dans DémoOutIdx.

P.S. J'ai joint une nouvelle version avec code commenté et diverses petites améliorations.

P.S2. J'ai découvert ce matin que l'OutIdx.xls manquait dans la discussion citée plus haut. Je l'ai remis.
Remarquez, il serait aussi possible d'équiper le classeur des modules nécessaires, et de ne plus y faire appel. Mais il faudra quand même ajouter la référence "Microsoft Scripting Runtime" pour que les macros aient des liaisons précoces avec les méthodes des Dictonary pour une meilleure performance. Alors référence pour référence, autant mettre la référence à OutIdx !
Où en sont vos tests ?

À +
 

Pièces jointes

  • CbxCascFourniss.xls
    64.5 KB · Affichages: 156
  • CbxCascFourniss.xls
    64.5 KB · Affichages: 151
  • CbxCascFourniss.xls
    64.5 KB · Affichages: 145
Dernière édition:

whooki

XLDnaute Occasionnel
Re : Tri avec combobox dans userform

Bonjour,

J'ai regardé votre fichier, et j'ai des messages d'erreur à l'ouverture. A dire vrai, je nage complètement dans la lecture de ce code ( c'est normal je ne sais pas programmer).

Par contre j'ai réussi à adapter le code de ROBERT dans mon fichier source, et j'ai un message d'erreur 1004 dans ce code là:
Private Sub ComboBox1_Change()


Dim r As Range 'définit la variable r (Recherche)
Dim pa As String 'définit la variable pa (Premi1ere Adresse)
Dim ent As Integer 'définit la variable ent

If test = True Then Exit Sub 'si test est vrai, sort de la procédure
Set r = f.Columns(6).Find(Me.ComboBox36.Value, , xlValues, xlWhole) 'définit la recherche r
If Not r Is Nothing Then 'condition 1 : si il existe au moins une occurrence trouvée
pa = r.Address 'définit l'adresse de la première occurrence
Do 'exécute la boucle
If r.Offset(0, -5).Value = Me.ComboBox1 Then 'condition 2 : si la cellule en colonne A de l'occurrence trouvé est égale à la valeur de la ComboBox1
ent = r.Row 'définit la variable ent
GoTo suite 'va à l'étiquette "suite" (sans rechercher les occurrences suivantes...)
End If 'fin de la condition 2
Set r = f.Columns(6).FindNext(r) 'redéfinit la recherche r (occurrence suivante)
Loop While Not r Is Nothing And r.Address <> pa 'boucle tant qu'il existe de nouvelles occurrences ailleurs qu'en pa

End If 'fin de la condition 1
suite: 'étiquette

TextBox4 = Sheets("fournisseurs").Cells(ent, 2) 'contacts'
TextBox5 = Sheets("fournisseurs").Cells(ent, 3) 'téléphone'
TextBox6 = Sheets("fournisseurs").Cells(ent, 4) 'fax'
TextBox45 = Sheets("fournisseurs").Cells(ent, 5) 'mail'

With Sheets("demande")
.Range("l13").Value = ComboBox1.Value 'fournisseurs'
.Range("q17").Value = TextBox5.Value 'telephone'
.Range("r17").Value = TextBox6.Value 'fax'
.Range("l16").Value = TextBox4.Value 'contact'
.Range("l20").Value = TextBox45.Value 'email'
.Range("l18").Value = Range("s17").Value
End With



With Sheets("EMAIL")

Range("b2").Value = TextBox45.Value 'email'

End With

End Sub

Pareillement, je ne sais pas d'où cela peut venir.

Une nouvelle fois merci par avance
 

Dranreb

XLDnaute Barbatruc
Re : Tri avec combobox dans userform

Chez moi tout marche.
Vous avez, malgré mes réitérations, oublié d'ajouter les références à OutIdx et à Miscrosoft Scripting Runtime.
Ce qui est d'autant plus regrettable que DémoOutIdx a un service pour vous les mettre.
Sinon si vous ne me dites pas quelle instruction pose problème et quel message d'erreur, alors je ne peux absolument plus rien pour vous
 

whooki

XLDnaute Occasionnel
Re : Tri avec combobox dans userform

Bonjour Dranreb, Le forum,

Effectivement j’ai essayé d’ouvrir le fichier DémoOutIdx, mais il marque également un message d’erreur ( je suis obligé de fermer les applications avec ctrl+alt+sppr).

Le code fonctionne bien, mais lorsque je ne désire pas faire un tri avec la combobox 36, mais prendre uniquement la combobox 1 il me met un message d’erreur 1004 à la ligne 17 :
suite: 'étiquette

TextBox4 = Sheets("fournisseurs").Cells(ent, 2) 'contacts'
 

whooki

XLDnaute Occasionnel
Re : Tri avec combobox dans userform

Oui, j'ai ouvert ce fichier et il me met le message d'erreur 1004 ( voir print écran).

Et oui le fichier OutIdx.xls est ouvert.

Cordialement
 

Pièces jointes

  • apercu.jpg
    apercu.jpg
    49.7 KB · Affichages: 163
  • apercu.jpg
    apercu.jpg
    49.7 KB · Affichages: 195
  • apercu.jpg
    apercu.jpg
    49.7 KB · Affichages: 199
  • apercu2.jpg
    apercu2.jpg
    48.1 KB · Affichages: 105

Dranreb

XLDnaute Barbatruc
Re : Tri avec combobox dans userform

Ce n'est pas mon code. ça. Je parle de mon fichier CbxCascFourniss.
Ou plutôt non, je parlais de DémoOutIdx d'abord. Vous me disiez avoir un message un message d'erreur à son ouverture. Lequel ?
N'envoyez pas d'image: le texte du message et une citation de l'instruction qui plante.
Si c'est une histoire de bibliothèque, allez dans VBE, menu Outils, Références, décochez d'éventuels "MANQUANT" marqués comme ça en majuscules.
S'il était en cours d'exécution, peut être nécessaire de faire d'abord menu Exécution, Réinitialiser.

P.S. Je reste à votre disposition pour vous expliquer ce que vous ne comprenez pas (du moins la 1ère chose que vous ne comprenez pas, parce que si vous dite que vous n'y comprenez rien, je ne sais pas par quoi commencer)
À +
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 945
Membres
103 989
dernier inscrit
jralonso