ComboBox et test conditionnel

F

Fifi Bricotin

Guest
Bonjour le forum,

J'ai adapté de code du fichier de Robert à mon cas, ce qui donne la chose suivante :

Private Sub UserForm_Initialize()
Dim p As Range
Dim cel As Range
Set p = Sheets('Feuil2').Range('C2:C' & Sheets('Feuil2').Range('C65536').End(xlUp).Row)
For Each cel In p
CBedit.AddItem cel.Value
CBdistrib.AddItem cel.Offset(0, 1).Value Next cel
End Sub

Private Sub CBedit_change()
CBdistrib.ListIndex = CBedit.ListIndex
End Sub

Ca fonctionne bien, à savoir que la CombobBox CBdistrib renvoie la bonne valeur en fonction de ce qu'affiche la ComboBox CBedit.

A présent, j'aimerais rajouter la fonctionnalité suivante :

Comment modifier le code ci-dessus de façon à ce que la valeur renvoyée dans la ComboBox CBdistrib soit fonction d'une valeur affichée dans la textbox1 de mon USF ?
Je m'explique :
Actuellement la macro utilise :
CBdistrib.AddItem cel.Offset(0, 1).Value
Je voudrais que si TextBox1.value=1 alors on a :
CBdistrib.AddItem cel.Offset(0, 1).Value
Et que si TextBox1.value=2, alors on a :
CBdistrib.AddItem cel.Offset(0, 2).Value
Sachant que TextBox1 ne peut avoir que 1 ou 2 comme valeurs.

Autrement dit selon la valeur 1 ou 2 de TextBox1,on renvoie la valeur d'une colonne ou de la suivante de Feuil1.

J'espère avoir été clair, même si j'ai des doutes!

Merci d'avance de votre aide.

Fifi
 

Charly2

Nous a quittés en 2006
Repose en paix
re Fifi, bonjour à toutes et à tous :)

Je te joins un fichier (en fait, c'est celui de Robert un peu remanié :whistle: en fonction de tes dernières demandes.

Dans l'initialisation de l'USF, on déclare CBdistrib avec 2 colonnes et on l'initialise avec les données de ta feuille. Ensuite, en fonction de la valeur de TextBox1, on masque l'une ou l'autre des 2 colonnes... :)

Je te laisse vérifier et tester le fichier. Tiens-nous au courant ;)

[file name=fifi_bricotinV2.zip size=16234]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/fifi_bricotinV2.zip[/file]

EDITION : J'ai oublié de modifier le code du bouton OK (c'est tout moi, ça :lol: ), tu remplaceras ComboBox1 par CBedit :p

A+

Message édité par: Charly2, à: 11/02/2006 11:31
 

Pièces jointes

  • fifi_bricotinV2.zip
    15.9 KB · Affichages: 32

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Fifi, Charly (toujours les mêmes...), bonjour le forum,

Fifi je t'ai fait une proposition dans ton
Lien supprimé. Je n'avais pas compris que tu voulais bloquer les ComboBoxes et je ne l'ai pas fait (sauf sur la nouvelle). Pour ma part, j'utilise simplement la propriété Style=2-fmStyleDropDownList. Du coup, la ComboBox se comporte comme une ListBox et il est impossible d'y ajouter/modifier une valeur.

Édition :

Je viens de regarder la proposition de Charly et je trouve super qu'il est choisi une solution avec deux colonnes pour la ComboBox. Ça te permettra de connaître cet aspect là.

Message édité par: Robert, à: 11/02/2006 12:20
 
F

Fifi Bricotin

Guest
Bonjour le forum et mes 2 anges gardiens,

Merci de vos réponses.

L'accouchement est délicat à défaut d'être douloreux.

Je rencontre une erreur d'exécution 381 à l'ouverture du USF . 'Impossible de définir la propriété List.Index de table de propriétés non valide'

A vrai dire je ne suis pas étonné car j'ai du modifier un peu le code de Charly, dans la mesure où, contrairement à ce que j'ai bêtement écrit, les deux seules valeurs, 1 ou 2, ne sont pas dans une textBox, mais dans un ComboBox qui ne propose que ces 2 valeurs.

Et à tous les coups je me suis planté dans mes modifs, au niveau de Select Case TextBox1 et les lignes suivantes.

Il me reste à carrément passer par une TextBox avec les contrôles de saisie prévus par Charly dans sa grande sagesse. Ou alors, si tu veux bien me communiquer la partie de code adaptée à un comboBox et pas à TextBox1, Charly ? Mais je ne voudrais pas à abuser de ton temps.

Je vous tiens informés.

Merci encore.

Fifi
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Fifi, Charly, bonjour le forum,

As-tu regardé la proposition que je t'avais faite sur le lien de mon précédent post ?

Je pense qu'elle correspondait bien à ce que tu demandes. La voici à nouveau.
[file name=fifi2_20060211153723.zip size=11121]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/fifi2_20060211153723.zip[/file]
 

Pièces jointes

  • fifi2_20060211153723.zip
    10.9 KB · Affichages: 36
F

Fifi Bricotin

Guest
Bonjour Robert, et Charly,

J'ai bien regardé ta solution, Robert, et je t'en remercie. Malheureusement, si l'utilisation de 3 ComboBox me convient très bien, leur articulation telle que tu l'as définie ne convient pas, et je suis incapable de rectifier le tir.
Les 2 points qui clochent dans mon optique sont :

- La Combobox 2 s'affiche en fonction de la valeur sélectionnée en Combobox1 et c'est OK. Mais la réciproque n'est pas vraie : La combobox1 ne doit en aucun cas s'afficher en fonction de la valeur sélectionnée dans la combobox2.
En fait on commande des articles contenus dans le Cbx1, et la CBx2 donne le fournisseur principal à qui le commander. Le fournisseur principal est donné par le code 1 par défaut, et si on veut le demander chez le fournisseur 'de secours', on met le code 2 son nom s'affiche.

- L'utilisateur sélectionne la valeur de son choix dans la CBx1, la CBx2 renvoie alors la valeur correspondante pour le code 1 affiché par défaut dans la ComboBox3. Ca c'est OK, mais en revanche il doit à ce moment précis pouvoir décider de placer la valeur 2 dans la CBx3, et la CBx2 doit afficher alors la valeur correspondante. Or dans ton exemple, quand on modifie la valeur 1 par 2 après avoir saisi une valeur dans la CBx1, le contenu de celle-ci est effacé.

Voilà cher Robert, si tu peux modifier ton exemple en conséquence, je suis preneur. Mais tu peux aussi vouloir aller te ballader, je ne t'en voudrai pas !

Bonne soirée

Fifi
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir Fifi, Charly, bonsoir le forum,

Aller me ballader.. T'es fou ou quoi !!! Avec mes pantouffles toutes neuves...

En pièce jointe les modifs sur le fichier.
[file name=fifi3.zip size=11279]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/fifi3.zip[/file]
 

Pièces jointes

  • fifi3.zip
    11 KB · Affichages: 36

Charly2

Nous a quittés en 2006
Repose en paix
Salut les mêmes :)

Juste histoire de mettre le bazar, une petite dernière avec des OptionButtons et une autre manière d'initialiser les ComboBox :p

Fifi, ne modifie rien de ce que tu as fait car c'est juste pour le fun :woohoo:

Robert, c'est quelle marque tes pantoufles ? Je demande ça comme ça, pour savoir... En fait, c'est parce je suis sorti cet AM et je me disais que si j'en avais une paire comme la tienne (non, j'y avais pas pensé !!! :woohoo: ).

[file name=Fifi_bricotinV4.zip size=15125]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Fifi_bricotinV4.zip[/file]

A+
 

Pièces jointes

  • Fifi_bricotinV4.zip
    14.8 KB · Affichages: 37
F

Fifi Bricotin

Guest
Bonjour , Charly et Robert, le forum,

Tandis que vous travailliez dans vos pantoufles, je me suis bien amusé dans mes chaussures, et maintenant je réalise mon erreur. J'ai pris beaucoup de retard.

Merci déjà pour vos nouvelles propositions. Je suis en train de les tester.

Une question pour Charly plus spécialement : Dans ton dernier fichier (la version 3) avec les OptionsButtons, comment puis-je récupérer au niveau de ma base de données (qui est alimentée par ce USF) la valeur 1 (fournisseur principal)ou la valeur 2 (fournisseur de secours) en fonction de la position des OptionButtons ?
Sachant que pour l'instant, cette base de données est alimentée par le contenu du USF à l'aide d'instructions du style :
.Range('O' & L).Value = CBcode.Value

La raison de ma demande est que l'utilisateur doit pouvoir modifier la valeur 1 ou 2 dans le USF (ce qui est fait par vos derniers projets) en cours de saisie, mais il doit lui être possible, après saisie, de modifier directement dans la base de données, pour tel ou tel article, la valeur 1 ou 2 afin de changer de fournisseur si nécessaire.
C'est pourquoi j'aimerais récupérer dans la colonne O de ma base de donnée le code 1 ou 2 selon position des OptionButtons.

Je suis exigeant, limite capricieux, je sais, mais vous m'avez mal habitué !

Merci d'avance et bon dimanche.

Fifi
 

Charly2

Nous a quittés en 2006
Repose en paix
Bonjour Fifi et Robert, bonjour à toutes et à tous :)

Pour les OptionButtons, c'est (presque aussi simple qu'avec les Combo). Dans le cas présent, tu as plusieurs choix de codes.

Une première possibilité :

If OptionButtonFP = True Then
  Range('O' & L).Value = 1
ElseIf OptionButtonFS = True Then
  Range('O' & L).Value = 2
End If

La comparaison 'OptionButtonFx = True' est là pour la lisibilité car on peut simplement écrire :

If OptionButtonFP Then...

puisque les OptionButtons renvoient une valeur boléenne.

Une seconde possibilité :

Range('O' & L).Value = IIf(OptionButtonFP, 1, 2)

Explication : comme OptionButtonFP est sélectionné lors de l'initialisation, on est certain que l'un des deux contiendra la valeur True.

Dans la fonction IIf(Condition, SiVrai, SiFaux), on affectera à Range('O' & L).Value la valeur 1 si OptionButtonFP est à 'True' et 2 s'il est à 'False' (car dans ce second cas, cela signifie que l'OptionButtonFS est à True).

Voili, voilà. N'hésite pas si tu as d'autres question puisque Robert a ses P.O.C. (Pantoufles d'Origine Contrôlée) il sera certainement disponible :p

Glossaire :
OptionButtonFP : OptionButton Fournisseur Principal
OptionButtonFS : OptionButton Fournisseur de Secours

A+
 
F

Fifi Bricotin

Guest
Re-bonjour Charly, Robert, le forum,

Voilà une réponse complète et circonstanciée. Je t'en remercie. Et en plus, tu expliques bien, il ne te manque plus que la parole !

Quant à mes (probables) futures questions, je ne serai pas très exigeant, du moment qu'un de vous deux reste d'astreinte pour me répondre, l'autre peut profiter de son dimanche en faisant autre chose. A condition naturellement de rester joignable.

Bonne journée.

Fifi
 
F

Fifi Bricotin

Guest
Ré: ComboBox et test conditionnel

Bonjour Charly, Robert, et le forum,

Ca y est ! J'ai réussi... grâce à vous deux.

Je ne vous dirai pas quelle solution j'ai adoptée : j'ai fait une sauce, et je vous en attribue la paternité collective.

Un grand merci, et à bientôt pour de nouvelles aventures de Fifi Bricotin !

Bonne fin de week-end.

Fifi
 

Discussions similaires

Réponses
2
Affichages
176
Réponses
1
Affichages
267

Statistiques des forums

Discussions
312 497
Messages
2 088 994
Membres
104 000
dernier inscrit
dinelcia