Problème de combobox en cascade

Bonjour à tous

Sur le net, je me suis trouvé un code pour utiliser deux comboboxs en cascade. Mon souci c'est que dois me positionner sur la feuille "listes" pour pouvoir utiliser la comboxbox "cbox_type", dans le formulaire "Transactions". Si je change de feuille celà ne fonctionne

merci de m'aider

Bonjour,

Je dois certainement être mal réveillé car je ne vois pas comment tu accèdes à ton userform
Cdlmt

Bonjour

Bonjour à tous

Un essai à tester. Te convient-il ?

Bye !

Merci

mais après un test j'ai une erreur d'execution sur cette ligne= If f.Cells(1, i).Value = CBox_type.Value Then

Bonjour gmb,

Vraiment désolé maais j'en reviens à ma questiion : comment accéder à l'UserForm ?
Si je suis ton conseil

image

j'obtiens

image

Bonne journée

Re gmb,

Je me suis vraiment mal réveillé ce matin, en effet je ne pouvais utiliser "Ctrl" + "f" car j'utilisais le fichier en direct et de ce fait ne pouvais bénéficier des raccourcis et des macros
Bonne journée

Bonjour

@gmb :
J'aurais évité le raccourci Ctrl + f qui est une fonctionnalité de base d'exel. Ctrl + f permet l'affichage de la boite de recherche telle que montrée par Jacky

Le mieux serait de choisir une autre lettre en ajoutant SHIFT (pas CTRL + SHIFT +F qui est aussi une fonctionnalité excel). Peut-être Ctrl + shift + e ?
Ou alors un bouton ?

A vous de voir

Cordialement

@ miciid

C’est curieux…en téléchargeant le fichier que j’ai joint précédemment, je n’ai pas ce bug.

Mais essaie celui-ci, en espérant qu’il marche chez toi.

@ Jacky

Salut !

Donc pas de problème ?

Bye !

re micid,

Tu nous dis que :

mais après un test j'ai une erreur d'execution sur cette ligne= If f.Cells(1, i).Value = CBox_type.Value Then

Cela est du au fait que la variable "f" (Set f = Sheets("Listes")) a été déclarée en tant que Dim donc elle ne peut être utilisée que dans la procédure où elle a été déclarée. Il te faut la déclarer, par exemple, en tant que Private en début de procédure

Private f As Worksheet
Private Sub UserForm_Initialize()
Dim col As Integer
Set f = Sheets("Listes")
col = 2
Do While f.Cells(1, col).Value <> ""
Transactions.CBox_type.AddItem f.Cells(1, col).Value
col = col + 1
Loop
End Sub
Private Sub CBox_type_Change()
Cbox_designation.Clear
i = 2

etc .....

Bonjour Gmb :

C’est curieux…en téléchargeant le fichier que j’ai joint précédemment, je n’ai pas ce bug.

Si il y a un bug. Il est dû la déclaration de variable Dim f as worksheet qui est mal placée. Il faut la mettre juste avant l'instruction Private Sub UserForm_Initialize()

Crdlt

edit : après j'aurais plutôt vu la Sub initialize comme ceci plutôt que d'utiliser les instructions Do while....Loop

Dim f as worksheet
Private Sub UserForm_Initialize()
Dim i as byte
Set f = Sheets("Listes")
For i = 2 To f.Cells(Rows.Count, 2).End(xlUp).Row
    Transactions.CBox_type.AddItem f.Cells(i, 2).Value
Next i
End Sub

gbm,

Donc en effet pas de problème
J'ai du mal à utiliser les fichiers envoyés par les demandeurs, je dois les enregistrer sur mon poste pour pouvoir bénéficier surtout des macros et de certaines fonctions de leur code
Pourquoi cela, je ne sais pas. J'ai déjà posé la question sur le forum et jusqu'à présent nos amis "costauds" en la matière sont restés pantois .... !!!

Par contre j'avais la même erreur que micid sur la ligne= If f.Cells(1, i).Value = CBox_type.Value Then
Sauf erreur de ma part je crois qu'elle est due au fait que la variable "f"que tu construis, en tant que Dim, n'est utlisable que sur la procédure où tu l'as construite et non sur la seconde où elle est appelée. Ai-je tort, c'est très possible ..... j'aimerais savoir
Bonne journée et au plaisir de te croiser

@Jacky

Sauf erreur de ma part je crois qu'elle est due au fait que la variable "f"que tu construis, en tant que Dim, n'est utlisable que sur la procédure où tu l'as construite et non sur la seconde où elle est appelée. Ai-je tort, c'est très possible ..... j'aimerais savoir

Exact ! Vous avez bien compris.
J'ai donné la réponse dans mon post précédent

Crdlt

Merci à vous, mes collègues, qui ont trouvé le bug...

Mais ce que je ne comprends toujours pas c''est pourquoi il ne se manifeste pas sur mon PC.

J'ai quelquefois le même problème avec des variables que j'oublie de déclarer : je sais, je ne suis pas assez attentif, hélas !

Merci encore !

Bye !

@Gmb

Mais ce que je ne comprends toujours pas c''est pourquoi il ne se manifeste pas sur mon PC.

Dans la version 4, cela bug dans les deux codes

J'ai quelquefois le même problème avec des variables que j'oublie de déclarer : je sais, je ne suis pas assez attentif, hélas !

Si vous ne voulez pas les oublier, ajoutez l'instruction Option Explicit au dessus de tous les codes.

Vous pouvez aussi faire en sorte que cette instruction soit toujours mises automatiquement en allant dans les options de l'éditeur VBA et en cochant la case "déclaration de variables obligatoire"

Cordialement


Edit : je viens de voir que le code Combo change bugue aussi. En plus de la correction de mon post précédent, j'aurais fait plutôt comme ceci pour ce code

Private Sub CBox_type_Change()
Dim col As Byte, i As Byte

Cbox_designation.Clear

Select Case Transactions.CBox_type.Value
    Case "Entrée": col = 3
    Case "Sortie": col = 4
End Select
For i = 2 To f.Cells(Rows.Count, col).End(xlUp).Row
    Transactions.Cbox_designation.AddItem f.Cells(i, col).Value
Next i
End Sub

Sinon le fichier est assez joli

@ Dan

OK Merci beaucoup

Bye !

Rechercher des sujets similaires à "probleme combobox cascade"