[Résolu] Rechercher avec 2 Combobox pour un même résultat dans une listBox

Webperegrino

XLDnaute Impliqué
Supporter XLD
Bonsoir Le Forum,

Je ne sais pas si c'est possible...
Ci-joint un exemple de conception que j'ai trouvé ici sur le Forum à partir duquel je pose le problème d'alimentation d'une listbox à partir de choix sur l'un des deux ComboBox qui sont au-dessous.

Le premier de gauche fonctionne parfaitement.
Celui de droite, que j'ai ajouté, ne contient pas les éléments désiré et ne donne pas non plus le bon résultat dans la listBox du dessus.

Cette recherche à partir de ces deux Combos est-elle possible ou faut-il ne rester qu'avec le premier ?
Merci pour vos lumières car j'essaie de réaliser une application similaire depuis plusieurs jours sans résultat satisfaisant.
Webperegrino
 

Pièces jointes

  • Modèle_Suivi_Correction.xls
    77 KB · Affichages: 106
  • Modèle_Suivi_Correction.xls
    77 KB · Affichages: 100
  • Modèle_Suivi_Correction.xls
    77 KB · Affichages: 110
Dernière édition:

Webperegrino

XLDnaute Impliqué
Supporter XLD
[Résolu] : Rechercher avec 2 Combobox pour un même résultat dans une listBox

Le Forum,
Dranreb,
Ne te soucie pas du problème de l'heure.
Dans la feuille FICHEcaisse les données s'afficheront de toute façon dans la cellule sans problème sous forme de 'Texte du lieu avec retour à la ligne et la plage horaire au-dessous', l'ensemble en affichage centré horizontalement et verticalement.
Dans listBoxRécap, l''ensemble doit donc figurer à la suite à la lecture, pour l'opérateur, pour son choix.
L'opérateur s'habituera à cette présentation proposée et s'y retrouvera dans son choix.
Il y aura donc une présentation sous forme d'affichage dans 'ListBoxRécap' en longueur : LIEU XXXXXXXXXXXXXXXXXXX 1 suivi de 08:00 - 11:00 par exemple, avec le symbole du retour à la ligne (P inversé et double-barre) entre le texte et la plage horaire, quitte à devoir élargir ll'Userform si nécessaire pour lire l'ensemble des 6 critères.
Ce ne sera pas un problème pour l'opérateur, comme pour moi.
C'est le reste du fonctionnement des textbox, listbox et combobox qui importent.
Merci de t'être toutefois penché sur cette spécificité à priori insolvable sous Excel, c'est bon à savoir.
Vous me comblez avec votre volonté de m'aider à ce point.
Webperegrino
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Rechercher avec 2 Combobox pour un même résultat dans une listBox

S'il n'est pas indispensable de pouvoir sélectionner le lieu (impossible chez moi, ce qui me surprend beaucoup, s'il comporte un retour à la ligne), alors il vaudrait mieux ne pas lui consacrer de ComboBox…
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Rechercher avec 2 Combobox pour un même résultat dans une listBox

Le Forum,
Jean-Marie,
Dranreb,
Bonjour,
Dranreb, quand je suis entré dans la lecture du fichier #13 j'ai pris peur, à cause de la complexité des macros à comprendre : je vais m'y atteler, il me faudra 6 mois !
C'est super ce que tu proposes.
En réalité La sortie de l'UserForm fait que seul la valeur du n° de fiche doit aller se positionner dans la cellule M12 de FICHEcaisse.
En réalité la macro de gestion de l'urserform se place dans une macro générale de la gestion des rappels des valeurs de l'ARCHIVE vers la FICHEcaisse, selon justement ce n° de fiche qu'on attribue à la valeur "dl" dans la macro d'ensemble.
Ensuite la macro va chercher dans la base ARCHIVE en ligne dl +3 les données à placer alors dans FICHEcaisse.
A quel endroit dans les macros du fichier #15 qui fonctionne à merveille je dois ne garder que le transfert du n° de fiche choisi ?
comment mettre dans ma macro la valeur dl = n° fiche choisi ?
Si nécessaire je place ma macro complète dans une nouvelle conversation.

Sinon actuellement j'ai :
'Message = InputBox("**** FICHES EN ATTENTE DE RETOUR ****" & vbCr & vbCr & textemsg & vbCr & vbCr & "**** N° maximum autorisé = " & Worksheets("ARCHIVE").Range("A1").Value & " ****" & vbCr & vbCr & "Vers la fiche n°", "RELANCER UNE FICHE AVEC SON NUMÉRO", "") '"Recherche d'une fiche à partir de son numéro"
'If Message = "" Then
'Sheets("MENU").Select
'Exit Sub
'End If

C'est ici que j'appelle Userform et qu'il me renvoie le n° de fiche que je vais placer en valeur dl = n° fiche
'dl prendra la valeur du n° de fiche choisi dans l'UserForm
>>>>>> dl = ????
'dl = Message
dl = dl + 3 'fiche 2 corrigée ira en ligne n° 5 de ARCHIVE

Ainsi plus de souci avec la dénomination du Lieu la macro générale gère actuellement cela très bien.
Merci
Webperegrino
 
Dernière édition:

Si...

XLDnaute Barbatruc
Re : Rechercher avec 2 Combobox pour un même résultat dans une listBox

salut
Le Forum,
Ainsi plus de souci avec la dénomination du Lieu la macro générale gère actuellement cela très bien.
pas de prolème Si... le retour à la ligne est remplacé par un espace (la longueur de la colonne peut gérer cela).
Un autre exemple avec une seule liste déroulante !
Ce serait le cas avec seulement le numéro de fiche, non ?
 

Pièces jointes

  • Combobox réinitialisé.xls
    57 KB · Affichages: 129

Dranreb

XLDnaute Barbatruc
Re : Rechercher avec 2 Combobox pour un même résultat dans une listBox

Bonjour.
Déclarez des variables Public dans votre module général et initialisez les dans ListBoxRécap_Click avant le Unload
VB:
' Initialisation des variables Public
Set PlgRécap = CL.PlgTablo.Resize(, 8) ' PlgRécap remplacera avantageusement des expressions de la forme ThisWorkbook.Worksheets("ARCHIVE").Range("A4:H…
'LigneDestination pourrait déja être déclaré Public de sorte que PlgRécap.Rows(LigneDestination) représentera la ligne choisie,
'Et PlgRécap(LigneDestination, "A").Value le numéro de fiche.
Unload Me
Remarque, dans mon dernier fichier joint, ThisWorkbook.Worksheets("ARCHIVE") se remplace déjà par FArch, c'est le nom VBA de l'objet Worksheet correspondant, voir explorateur de projet.
Ne reprenez quand même pas d'autres codes moins optimisés que dans l'Uf !

quand je suis entré dans la lecture du fichier #13 j'ai pris peur, à cause de la complexité des macros à comprendre : je vais m'y atteler, il me faudra 6 mois !
C'est un problème récurent. Je ne sais vraiment plus quoi faire pour mettre en évidence la simplicité réelle de l'utilisation de ces modules de services. Tout ce que je puis dire, c'est que d'étudier les codes pourrait permettre de découvrir, au prix de gros efforts, comment il procèdent. Mais que ce n'est pas la bonne démarche, à priori, pour comprendre ce qu'il font. Ça, c'était le rôle dévolu aux commentaires explicatifs en tête des procédure Public (qui s'appellent des méthodes dans les modules de classes) et derrière les instruction Event qui définissent les évènements. Si vous avez une idée pour rendre cela évident à ceux qui découvrent le truc, je suis preneur.
 
Dernière édition:

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Rechercher avec 2 Combobox pour un même résultat dans une listBox

Le Forum,
DranReb,
Jean-Pierre,
Je suis époustouflé par ce que tu viens de proposer par ton travail en dernier fichier transmis belle architecture finale de l'UserForm avec une sobriété de la recherche et un choix direct du critère avec des macros courtes et rapides d'exécution.

J'ai essayé de finaliser la chose de mon côté pour le transfert de la valeur du n° de fiche vers la cellule M12 pour faire exécuter la suite de la macro de mise en place des autres valeurs dans la feuille FICHcaisse, selon l'architecture suivante :

VB:
Private Sub Lb_Click()
  If Lb = "" Then Exit Sub
  With Feuil3
    .Activate
    Application.Goto (Cells(Lb.Value, 1)), 0
  End With
  With Feuil1
  Range("M12").Value = Cells(Lb.Value, 1)
  'unload me
  End With
End Sub

mais pas de résultat obtenu sur la cellule M12.

Pour ta gouverne voici où viendra l'appel de ton UserForm11 dans ma macro générale de rappel des valeurs de ARCHIVE vers la Feuille FICHECaisse, pour le n° de fiche demandé :

VB:
Sub ChercheFICHEcaisse()
un
Dim Ligne, dl, Myvalue
If Worksheets("ARCHIVE").Range("A1").Value = 0 Then
MsgBox ("Entrer au moins une saisie"):  Exit Sub
End If
Sheets("ARCHIVE").Select
    ActiveSheet.Unprotect ("MDP")
    Range("A4").Select
    ActiveWindow.FreezePanes = False
 Ligne = Sheets("ARCHIVE").Range("A600").End(xlUp).Row 'indique la dernière ligne
For i = 4 To Ligne
If Range("A" & i) <> "" And Range("D" & i) <> "APPROVISIONNEMENT EN BADGES" And Range("M" & i) = 0 Then
If Range("F" & i) = "" Then
textemsg = textemsg & IIf(Range("M" & i) <> "", Chr(10), "") & "Fiche n° " & Range("A" & i) & " - " & Range("D" & i) & vbCr & "[" & Range("E" & i) & " pour " & Range("H" & i) & " badges sortis]" & Chr(10)
Else
textemsg = textemsg & IIf(Range("M" & i) <> "", Chr(10), "") & "Fiche n° " & Range("A" & i) & " - " & Range("D" & i) & vbCr & "[" & Range("E" & i) & " - " & Range("F" & i) & " pour " & Range("H" & i) & " badges sortis]" & Chr(10)
End If
End If
Next i
If textemsg = "" Then
textemsg = "Toutes les fiches sont retournées et archivées. Rectification possible." 'Exit Sub
End If

‘****************Partie remplacée par l’UserForm de Jean-Pierre er DranReb
'Message = InputBox("**** FICHES EN ATTENTE DE RETOUR ****" & vbCr & vbCr & textemsg & vbCr & vbCr & "**** N° maximum autorisé = " & Worksheets("ARCHIVE").Range("A1").Value & " ****" & vbCr & vbCr & "Vers la fiche n°", "RELANCER UNE FICHE AVEC SON NUMÉRO", "") '"Recherche d'une fiche à partir de son numéro"
'If Message = "" Then
'Sheets("MENU").Select
'Exit Sub
'End If

'****************************************
'>>>>> Appel de l'UserForm

[COLOR="#FF8C00"]UserForm11.Show ‘celui qui est perfectionné par DranReb et Jean-Pierre[/COLOR]

'Retour de l'UserFOrm avec le n° de Fiche

'dl prendra la valeur du n° de fiche choisi dans l'UserForm11

[B]dl = ??????????[/B] 'à la place de Message quand j'avais MsgBox ?
'*****************************************

dl = dl + 3 'par exemple pour dl = 2, la Fiche n° 2 sera corrigée en Archive en ligne n° 5
Selection.AutoFilter Field:=1
    Selection.AutoFilter Field:=2
    Selection.AutoFilter Field:=3
    Selection.AutoFilter Field:=4
    Selection.AutoFilter Field:=5
    Selection.AutoFilter Field:=6
    
    'Placer le volet figé sur la cellule
   Range("G4").Select
    ActiveWindow.FreezePanes = True
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFiltering:=True
    ActiveWindow.FreezePanes = True
'Fin Placer le volet figé sur la cellule
    
Sheets("FICHEcaisse").Select
With Sheets("FICHEcaisse")
.Unprotect ("")
Worksheets("FICHEcaisse").Range("L28").Value = "Rectifiera la fiche " & dl - 3 & " en ligne " & dl
Worksheets("FICHEcaisse").Range("M2").Value = Worksheets("FICHEcaisse").Range("M1").Value
'VIDFICHCAISS
.Range("A1").Value = "Rectif"
.Range("M12").Value = dl - 3 'n° FICHE
.Range("K5").Value = dl
.Range("I5").Value = Sheets("ARCHIVE").Range("B" & dl).Value 'date
.Range("E3:H3").Value = "CAISSES SUR SITES -" & Sheets("ARCHIVE").Range("C" & dl).Value
.Range("D5:G7").Value = Sheets("ARCHIVE").Range("D" & dl).Value
.Range("F9").Value = Sheets("ARCHIVE").Range("E" & dl).Value
.Range("I9").Value = Sheets("ARCHIVE").Range("F" & dl).Value
.Range("A16").Value = Sheets("ARCHIVE").Range("G" & dl).Value
.Range("B13").Value = Sheets("ARCHIVE").Range("AW" & dl).Value '20 € FDC départ
.Range("B14").Value = Sheets("ARCHIVE").Range("AX" & dl).Value '10
.Range("B15").Value = Sheets("ARCHIVE").Range("AY" & dl).Value '5
.Range("B17").Value = Sheets("ARCHIVE").Range("AZ" & dl).Value '2
.Range("B18").Value = Sheets("ARCHIVE").Range("BA" & dl).Value '1
If [D5] = "APPROVISIONNEMENT EN BADGES" Then
.Range("B24").Value = Sheets("ARCHIVE").Range("I" & dl).Value
Else
.Range("B24").Value = Sheets("ARCHIVE").Range("H" & dl).Value 'reçu
End If
.Range("B28").Value = Sheets("ARCHIVE").Range("K" & dl).Value 'vendu
.Range("A17").Value = Sheets("ARCHIVE").Range("N" & dl).Value
.Range("B25").Value = Sheets("ARCHIVE").Range("O" & dl).Value
'.Range("B31").Value = Sheets("ARCHIVE").Range("R" & dl).Value
.Range("G15").Value = Sheets("ARCHIVE").Range("V" & dl).Value '100
.Range("G16").Value = Sheets("ARCHIVE").Range("W" & dl).Value
.Range("G17").Value = Sheets("ARCHIVE").Range("X" & dl).Value
.Range("G18").Value = Sheets("ARCHIVE").Range("Y" & dl).Value
.Range("G19").Value = Sheets("ARCHIVE").Range("Z" & dl).Value '5
.Range("G22").Value = Sheets("ARCHIVE").Range("AA" & dl).Value '2
.Range("G23").Value = Sheets("ARCHIVE").Range("AB" & dl).Value
.Range("G24").Value = Sheets("ARCHIVE").Range("AC" & dl).Value
.Range("G25").Value = Sheets("ARCHIVE").Range("AD" & dl).Value
.Range("G26").Value = Sheets("ARCHIVE").Range("AE" & dl).Value
.Range("G27").Value = Sheets("ARCHIVE").Range("AF" & dl).Value
.Range("G28").Value = Sheets("ARCHIVE").Range("AG" & dl).Value
.Range("G29").Value = Sheets("ARCHIVE").Range("AH" & dl).Value '0,01
.Range("I32").Value = Sheets("ARCHIVE").Range("AL" & dl).Value 'chq
.Range("I33").Value = Sheets("ARCHIVE").Range("AM" & dl).Value 'vc20
.Range("I34").Value = Sheets("ARCHIVE").Range("AN" & dl).Value 'vac10
.Range("I35").Value = Sheets("ARCHIVE").Range("AO" & dl).Value 'cult20
.Range("I36").Value = Sheets("ARCHIVE").Range("AP" & dl).Value 'cult10
.Range("I37").Value = Sheets("ARCHIVE").Range("AQ" & dl).Value 'CB

'RAPPEL DU FONDS DE CAISSE
.Range("P12").Value = Sheets("ARCHIVE").Range("BF" & dl).Value
.Range("P13").Value = Sheets("ARCHIVE").Range("BG" & dl).Value
.Range("P14").Value = Sheets("ARCHIVE").Range("BH" & dl).Value
.Range("P15").Value = Sheets("ARCHIVE").Range("BI" & dl).Value
.Range("P16").Value = Sheets("ARCHIVE").Range("BJ" & dl).Value
.Range("P17").Value = Sheets("ARCHIVE").Range("BK" & dl).Value
.Range("P18").Value = Sheets("ARCHIVE").Range("BL" & dl).Value
.Range("P19").Value = Sheets("ARCHIVE").Range("BM" & dl).Value
.Range("P20").Value = Sheets("ARCHIVE").Range("BN" & dl).Value
.Range("P21").Value = Sheets("ARCHIVE").Range("BO" & dl).Value
.Range("P22").Value = Sheets("ARCHIVE").Range("BP" & dl).Value
.Range("P23").Value = Sheets("ARCHIVE").Range("BQ" & dl).Value
.Range("P24").Value = Sheets("ARCHIVE").Range("BR" & dl).Value
.Range("M1").Value = Sheets("ARCHIVE").Range("BT" & dl).Value
.Range("B32").Value = Sheets("ARCHIVE").Range("BU" & dl).Value 'Défectueux
.Range("B40").Value = Sheets("ARCHIVE").Range("BV" & dl).Value 'info complém

End With
Sheets("ARCHIVE").Select
    Range("G4").Select
    ActiveWindow.FreezePanes = True
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True _
        , AllowFiltering:=True
    ActiveWindow.FreezePanes = True
 Sheets("ARCHIVE").Protect ("MDP")
 Worksheets("FICHEcaisse").Range("M1").Value = Worksheets("FICHEcaisse").Range("M2").Value
 Worksheets("FICHEcaisse").Range("M2").Value = ""
Sheets("FICHEcaisse").Protect ("")
 Sheets("FICHEcaisse").Select
 Range("B30").Select
Fin:
STOCK
deux
End Sub


Qu'est-ce que j'ai raté ?
Webperegrino
 
Dernière édition:

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Rechercher avec 2 Combobox pour un même résultat dans une listBox

Le Forumn
Jean-Pierre,
DranReb,

Ouf ! Je crois avoir enfin trouvé une solution de transfert et compris un peu mieux ta programmation (j'ai encore beaucoup à apprendre...).

Qu'en penses-tu ?

Voici la proposition dernière ci-jointe ; elle peut aussi intéresser d'autres lecteurs de cette conversation très enrichissante depuis le début.

(j'ai même rappelé la date d'aujourd'hui en bas, comme cela dans le ComboBox d'en haut on s'y retrouve, à moins d'y passer en format "DDD DD MMM" aussi ?

Bonne soirée,
Webperegrino
 

Pièces jointes

  • Combobox réinitialisDranReb(4).xls
    97 KB · Affichages: 52

Si...

XLDnaute Barbatruc
Re : Rechercher avec 2 Combobox pour un même résultat dans une listBox

salut

je ne n'étais occupé que du bouton de la feuille ARCHIVE.
Si tu tiens à lancer le formulaire avec le bouton de l'autre feuille essaie
Code:
Private Sub Lb_Click()
  If Lb = "" Then Exit Sub
  L = Lb.ListIndex
  'Ajout Webperegrino
   Label24 = "Fiche choisie n° " & Lb.List(L, 1) & "," & Chr(10) & "avec un placement prévu en ligne n° " & Cells(Lb.Value, 1) + 3 & " en ARCHIVE."
  'correction Si... avec bouton de la feuille ARCHIVE
  Sheets("FICHEcaisse").Activate 'à effacer si... seulement avec bouton de la feuille FICHcaisse
  [D5] = Lb.List(L, 3)
  [I5] = Lb.List(L, 2)
  [M12] = Lb.List(L, 1)
  [F9] = Lb.List(L, 4)
  [I9] = Lb.List(L, 5)
  [B24] = Lb.List(L, 6)
End Sub
 

Pièces jointes

  • Combobox réinitialisé (Si...).xls
    55.5 KB · Affichages: 49

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Rechercher avec 2 Combobox pour un même résultat dans une listBox

Le Forum,
Si..., DranReb et Jean-Pierre,
Merci, Merci, Merci !
Je viens d'adapter la programmation dans mon fichier réel : tout fonctionne bien, la FICHEcaisse se recompose parfaitement selon la demande de rappel du n° de fiche de ARCHIVE.
C'est vraiment magique.

DranReb, en effet la liste des Lieux ne paraîtra que si je supprime les 'P' inversé de retour à la ligne pour la plage horaire. Je pense que je vais mettre un simple espace à la place et tout rentrera dans l'ordre.

La réunion des recherches possibles dans un sur cadre (n°, Date, Lieu, Vendeur) pour y faire un premier choix prépare donc la liste qui viendra en déroulant dans le cadre de droite.
Dès qu'on a choisi, par exemple Date, le déroulant de droite peut-il se remplir automatiquement avant qu'on y clique le triangle de déroulant pour voir la liste ?
La macro peut-elle le développer en ouverture directe avec la liste prête ?
Si ce n'est pas possible, ce n'est nullement grave car tout fonctionne bien : l'opérateur fera lui-même cette phase d'ouverture du déroulant.

Je vous félicite pour votre aide apportée. Je suis comblé avec toutes ces propositions de programmation.
Bien cordialement
(Si..., j'étudie ta dernière proposition n° #24, merci)
Webperegrino
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Rechercher avec 2 Combobox pour un même résultat dans une listBox

Bonjour Le Forum,
ChTi60, DranReb, SI… qui m’avez si bien aidé, Bonjour

J’ai réussi à faire paraître par défaut la date d’aujourd’hui dans le combo de droite.

1- Quand dans ListBox « Liste » je choisis Vendeur, n’apparaissent que ceux de la colonne E de ARCHIVE et pas aussi ceux de la colonne F de ARCHIVE. (Faire paraître Didier de la ligne n° 9 par exemple)

2- La programmation de SI… est très intéressante car l’USerFOrm par sa faible longueur de programmation.
Je l’ai mise en place dans le fichier réel qui fonctionne ainsi prsque correctement.

3- Toutefois l’intégration des lignes spéciales de DranReb pour lier les deux colonnes E et F dans ce ComboBox Cb m’intéressent grandement et me posent encore souci pour le simple amateur que je suis.
Pour le moment je bloque dans mon évolution de programmation.

4- Je n’arrive pas non plus à mettre la liste des dates du déroulant correspondant sous le format « DDDD DD MMMM » car je ne sais pas où positionner 'Mettre Cb au Format ("DDDD DD MMMM").
Et il faut que j’arrive à comprendre comment éviter de mettre le 0 éventuellement qui correspond au n° de la ligne ARCHIVE que je ne montre pas car il ne faut pas tromper le consultant entre n° ligne et n° de Fiche. Toutefois cela fonctionne pour moi, mais pour un expert j’imagine que ça doit être du ‘bricolage’.

En tout cas tel que placé actuellement, l'Userform permet de réaliser des saisies dans de meilleures conditions et je vous en remercie.
Ce sont mes dernières questions.
Bonne journée
Webperegrino
 

Pièces jointes

  • Combobox réinitialisé avec (Si...6).xls
    96 KB · Affichages: 55

Dranreb

XLDnaute Barbatruc
Re : Rechercher avec 2 Combobox pour un même résultat dans une listBox

Pour le moment je bloque dans mon évolution de programmation.
Le souci vient sans doute de la notion de modules de classes. Pourtant toutes les fournitures de définitions de contrôles et celles de l'application hôte Excel ne sont rien d'autre que des modules de classes !

J'ai écrit ça pour un autre demandeur:

Il n'y a pas grand chose à savoir, je trouve, pour comprendre les modules de classes:

La base :
- Leurs noms devienne des type de données utilisables dans les déclarations Dim, Public ou Private. Les variables déclarées d'un tel type s'appellent des objets. On dit parfois plutôt des instances d'objets pour éviter toute confusion avec le type d'objet.
- Leurs variables Public peuvent être utilisées précédées du nom de la variable objet suivie d'un point. On les appelle des propriétés. Les propriétés sont propres à l'instance de l'objet: chaque variable de ce type d'objet a son propre jeux de ces propriétés là. C'est pourquoi on les appelle des propriétés: elle sont propres à chaque variable de ce type d'objet.
- Leurs procédures Public peuvent être exécutées précédées du nom de la variable objet suivie d'un point. On les appelle des méthodes. C'est le même code pour tous les objets de ce type (le code est attaché au type, non à l'instance).
- Précédé du mot clé New, le nom du module de classe forme une expression qui représente une nouvelle instance de ce type d'objet. C'est un mot clé puissant puisqu'il alloue des ressources pour l'objet. L'expression doit être affectée par un Set à une variable de ce type d'objet pour qu'elle soit utilisable.

Les évènement (Un module de classe peut en effet décréter des évènement (par l'instruction RaiseEvent). Ces évènements ne peuvent toutefois pas être gérés dans un module ordinaire)
- Dans un module spécial, l'objet doit être déclaré avec le mot clé WithEvents pour que ses évènements puissent y être gérés.
- Cela inscrit le nom de la variable parmi les objets connus disponibles figurant dans la liste déroulante de gauche qui surmonte la fenêtre de code. Celle de droite présente un inventaire des évènements disponibles pour cet objet. Un clic dans ces listes implante dans votre code des modèles de procédures nécessaires à gérer ces évènements (seulement l'instruction Private Sub et la End Sub).

En somme, à part la déclaration en plus et l'affectation d'une nouvelle instance, ça marche comme pour les objets définis soit par l'application hôte (WorkSheet par exemple) ou par toute autre fourniture de bibliothèque figurant dans les références du projet VBA, tel que MSForms (ComboBox par exemple). D'ailleurs vous savez, ces choses là ne sont rien d'autres que des modules de classes !

Mais soit, vous avez l'aide en plus pour vous en servir. Alors une dernière information pour comprendre mes commentaires explicatifs qui en tiennent lieu: Les évènement sont déclarés dans les modules de classes par des instructions Event. J'y explique du mieux que je peux derrière chacun d'eux dans quelles circonstances ils se produisent. Pareil, j'explique comme je peux chaque propriété et chaque méthode.

P.S. Je me suis efforcé de définir, en quelque sortes en passant, chaque terme que j'utilise plus loin. À lire deux fois de suite pour augmenter ses chances de comprendre, car la 1ère fois, comme on ne sait pas à quoi ça va servir, on ne retient pas…
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Rechercher avec 2 Combobox pour un même résultat dans une listBox

Le Forum,
Merci DranReb pour ce cours.
Quelle école que ce Forum !
Heureusement je serai en congés en fin de semaine : je vais discrètement me retirer 'au fond de la classe du Forum' pour éplucher tout cela et tes macros, modules de classes, des précédents fichiers joints.
Il me faut les digérer avant d'essayer de retrouver mon "Didier" manquant dans le combo du fichier #26 qui fonctionne à 99%.
J'ai essayé cet après-midi, en y plaçant les copies des modules de classe de tes fichier plus haut, mais en vain pour le moment. Ça coince de partout et c'est normal, je dois comprendre d'abord à les appliquer au plus court dans ce dernier exemple.
Sinon tant pis pour les Didier et autres qui ne sont pas dans la première colonne.
Merci
Webperegrino
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Rechercher avec 2 Combobox pour un même résultat dans une listBox

Le Forum
Bernard_DranReb bonjour,
Je suis en vacances à Lyon pour quelques jours encore,
Dommage qu'une de mes filles qui séjournait à Valentigney, près de chez toi, a déménagé vers Montréal, sinon je t'aurais bien déposé mon application de 4 400 ko, car il n'y a rien à faire : je n'arrive pas à appliquer tes propositions merveilleuses de récolte des prénoms qui sont uniquement dans la colonne F et les lier avec ceux de la colonne E (où ils n'y figurent pas) dans le combo final de recherche sur "Vendeurs" dans l'UserForm.

Si tu l'acceptais, pourrais-je te joindre sur ton email personnel un .zip du fichier qui ferait alors 840 ko ?
Mon fichier fonctionne parfaitement mais sans cette spécificité de comboReliés.
Mais pendant une à quatre semaine je vais continuer mes tentatives d'adaptation de tes longs codes dans les miens pour faire fonctionner l'Useform avec cette dernière manip ; je n'ai rien d'autre à corriger, c'est rageant de bloquer là-dessus.
En fin de compte j'ai tout retiré de tes modules classes car j'avais des avertissements de toutes part.
Amicalement,
Webperegrino
 

Discussions similaires

Statistiques des forums

Discussions
312 330
Messages
2 087 347
Membres
103 526
dernier inscrit
HEC