Liste déroulante dépendante erreur 424

Bonjour à tous.

J'aurais besoin d'aide sur la ligne de code suivante (je ne peux vous joindre le fichier, c'est confidentiel), je cherche à faire une liste déroulante dépendante en vba, si je choisis "un service" alors cela me donne la liste des codes de ce services.

Dim Colonne As Integer
Dim I As Integer, J As Integer

Private Sub ComboBox3_Change()

I = 2
frmRecherche.ComboBox2.Clear
Sheets("Menu déroulant des services").Range("b3:T3").Interior.ColorIndex = Clear

Do While Cells(2, I).Value <> ""
If Cells(2, I).Value = ComboBox3.Value Then

Cells(2, I).Select

ActiveCell.Interior.ColorIndex = 32

Colonne = ActiveCell.Column
End If
I = I + 1
Loop

J = 3
Do While Cells(J, Colonne).Value <> ""

frmRecherche.ComboBox2.AddItem Cells(J, Colonne).Value
J = J + 1
Loop

ComboBox2.ListIndex = 0

End Sub

Private Sub UserForm_Initialize()

Colonne = 2

Sheets("Menu déroulant des services").Range("b3:t32").Interior.ColorIndex = Clear

Do While Cells(2, Colonne).Value <> ""

UserForm1.T1.AddItem Cells(2, Colonne).Value
frmRecherche.ComboBox3.AddItem Cells(2, Colonne).Value
Colonne = Colonne + 1
Loop

End Sub

Malheureusement je reçois une erreur du type 424 sur frmRecherche.ComboBox2.Clear
et une erreur avec l'index sur ComboBox2.ListIndex = 0

Je n'arrive vraiment pas à débloquer ce problème là et ma liste ne fonctionne du coup pas... Pourriez vous m'aider svp ?

Cdt,

Bonjour

mettez plutot ceci

frmRecherche.ComboBox2 = ""

et pour cette ligne :

ComboBox2.ListIndex = 0

Vous voulez faire quoi ?

Cordialement

Merci @dan pour ta réponse, j'ai remplacé le tout mais rien y fait... Je t'envoie le document en pièce jointe finalement.

Ce que j'aimerais arriver à faire grâce à votre aide :

- c'est une liste déroulante en cascade dépendante entre "service" et "référence" (chaque services à ces références) qui s'afficherait en userform en cliquant sur le forumlaire dans la case "services".

En fait, en faisant des listes déroulantes en cascade sans vba, je me suis rendu compte que la police était trop petite dans le déroulé, j'ai donc opté pour cette solution.

11aide-test.xlsm (48.27 Ko)

Bonjour

Dans cette ligne vous cherchez à faire quoi exactement ? Supprimer les couleurs ?

Sheets("Menu déroulant des services").Range("b3:t3").Interior.ColorIndex = Clear

Je vois aussi frmrecherche dans le code mais pas dans le fichier....

Re,

alors en fait, je suis un peu nouveau sur le vba du coup, j'ai bricolé avec des tutos parfois je ne sais pas trop ce que fait tel ou tel formulation, je déduis... Du coup je veux juste faire le menu déroulant en cascade...

à quoi sert frmrecherche dans le fichier ? car c'est une ligne de code que j'ai prise d'un tuto.

Cordialement,

Ok. En fait le frmrecherche correspond à service pour le fichier

Dans les combobox il est mentionné Administration des ventes. Ne serait-ce plutot pas mieux de mettre Service et Reference ?

Okok je vois. Comment fait-on pour changer cela s'il vous plait ? (car j'ai envoyé le fichier modifié d'un document confidentiel)

Re

Comment fait-on pour changer cela s'il vous plait ? (car j'ai envoyé le fichier modifié d'un document confidentiel)

OK. C'est toujours source d'erreur dans les échanges quand on n'a pas le fichier utilisé réellement

1. Pour changer,
- Aller dans l'éditeur VBA et sélectionne l'USF Services
- Appuyer sur F4 pour afficher les propriétés (en principe cette fenetre est affichées par défaut mais sait-on jamais...
- Sélectionner la combobox
- dans les propriétés, aller à la rubrique TEXT (il est indiqué Administration des ventes dans le fichier posté ici) pour changer le text

Cela peut se faire par code aussi si on le désire bien entendu

2. Une chose dans cette même fenêtre, dans la rubrique ROWSOURCE, il y a le nom MACRO. Vous pouvez le supprimer

3. Ensuite aller dans l'USF Services et remplacez tous les codes par ceux ci-dessous

Private Sub UserForm_Initialize()

With Sheets("Menu déroulant des services")
    dcol = .Cells(3, .Columns.Count).End(xlToLeft).Column
    ComboBox1.List = WorksheetFunction.Transpose(.Range("B3:t" & dcol).Value)
End With

End Sub
Private Sub combobox1_Change()
Dim col As Integer, dlig As Integer

Me.ComboBox2 = ""

With Sheets("Menu déroulant des services")
    col = .Range("B3:t" & dcol).Find(Me.ComboBox1.Value, LookIn:=xlValues, lookat:=xlWhole).Column
    dlig = .Cells(.Rows.Count, col).End(xlUp).Row
    If dlig > 3 Then ComboBox2.List = .Range(.Cells(4, col), .Cells(dlig, col)).Value
End With
End sub

Evitez les accents lorsque vous faites appel à la programmation, vous risquez toujours d'avoir des problèmes à un moment ou un autre. Qui plus est si vous passez de windows à iOS (Mac) ou l'inverse. Mettez plutot ceci par exemple -> "Menu_deroulant_Services" ou "Menu_Services"

Cordialement

EDIT : attention il faut ajouter ceci juste avant la ligne Private Sub UserForm_Initialize() --> Dim dcol as integer

1. Ok c'est noté pour les accents, je ne savais pas...

J'ai pu changer le text merci.

2. J'ai remplacé tout les codes, mais maintenant j'ai un message d'erreur type 424 sur la "feuille 1", je te mets le fichier en pj. Je ne comprends pas pourquoi ?

5aide-test.xlsm (46.72 Ko)
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, cancel As Boolean)
    If Not Intersect(Target, Range("B8")) Is Nothing Then
        cancel = True
        Services.Show
    End If
End Sub
Services.Show (message d'erreur) ici <<<

re,

2. J'ai remplacé tout les codes, mais maintenant j'ai un message d'erreur type 424 sur la "feuille 1", je te mets le fichier en pj. Je ne comprends pas pourquoi ?

Oui c'est normal et de ma faute. Dans votre fichier posté j'ai renommé la Combobox 3 (liste déroulante SERVICES) en Combobox1. Si vous la renommez dans votre fichier vous n'aurez plus ce bug. Sinon il faut changer Combobox1 dans les codes par Combobox3.

Donc ne changez rien au code que vous venez de poster

Super, merci ça fonctionne, vraiment merci. Comment fait-on pour que en cliquant sur "valider" dans mon USF le choix se mettent automatiquement dans la feuille sur "services" et "références" svp ?

Je dois analyser le code.

Par contre je vois un truc qui devrait être changé. Dans votre feuille formulaire Etes-vous obligé de fusionner les colonne B et C. Cela c'est toujours aussi à éviter et parfois source d'erreur.

ok c'est gentil vraiment merci...
oui j'ai du fusionner les deux pour un gain de place dans ma rubrique détails commandes. En fusionnant les deux cellules ça m'a permis de jouer sur la taille de celullles plus bas sans détruire la mise en page. Si je comprends bien, fusionner des cellules peut faire des erreurs ? à quelle niveau ? Excel en code reconnait-il les fusions ou pas ? 0°0

Si je comprends bien, fusionner des cellules peut faire des erreurs ? à quelle niveau ? Excel en code reconnait-il les fusions ou pas ? 0°0

C'est toujours à éviter. Il suffit d'agrandir votre colonne B jusqu'à la colonne C. Ensuite supprimer la colonne C et réarranger le bas de la feuille pour mettre Demandeur en colonne A, puis Signature 1 en colonne B et C, etc... mais bon à vous de voir. C'est juste que j'éviterais de garder des cellules fusionnées là où le code va intervenir

Votre code pour mettre les données en Service et références

Private Sub CommandButton1_Click()
With Sheets("Formulaire")
    .Range("B3") = ComboBox1.Value
    .Range("B12") = ComboBox2.Value
End With
End Sub

Ok ça changerait beaucoup de mise en forme pour le formulaire, si cela ne fonctionne pas alors je serais dans l'obligation de revoir tout ça mais j'avoue je ne préférerais pas.

Alors j'ai bien mis cette ligne de code, mais lorsque je sélectionne

7aide-test.xlsm (49.12 Ko)

un service automatiquement le USF se ferme sans même que j'ai le temps de valider le choix ?

un service automatiquement le USF se ferme sans même que j'ai le temps de valider le choix ?

Logique, pourquoi avez-vous ajouté une macro Combobox2_change ? C'est elle qui ferme l'userform. Si vous voulez fermer l'userform le mieux est de la faire avec le bouton Valider

Edit : Donc par exemple, si vous validez quelque chose ou que vous cliquez sur Annuler cela ferme l'userform. Ok pour vous cela ?

Mince, c'était une mauvaise manip. Ok j'ai corrigé et ça fonctionne pour la référence, mais pas pour le service. La référence se calle, mais le service reste vide dans la feuille cellule service B8 ?

"Edit : Donc par exemple, si vous validez quelque chose ou que vous cliquez sur Annuler cela ferme l'userform. Ok pour vous cela ?" oui c'est ça

C'est bon ça fonctionne, en fait le code indiquait B3 et non B8 pour la cellule

Private Sub CommandButton1_Click()
With Sheets("Formulaire")
    .Range("B3") = ComboBox1.Value (j'ai changé)
    .Range("B12") = ComboBox2.Value
    Unload Me
End With

Vraiment merci beaucoup, je pense qu'on y est :)

La référence se calle, mais le service reste vide dans la feuille cellule service B8 ?

Oui normal c'est moi qui aurait dû mettre B8 au lieu de B3 dans le code Private Sub CommandButton1_Click()

Dites moi si ok, car je vois encore un truc à envisager. Et finalement, est-ce que cela sert vraiment de mettre des infos dans les deux combobox au démarrage de l'userform ?? puisque vous avez les rubriques Services et code analytique à coté

Dites moi ? Je veux bien entendre votre proposition ? Si on peut optimiser je suis tout ouïe

Non j’aimerais que ce soit vide au démarrage du coup pour les deux c’est possible svp ?

Rechercher des sujets similaires à "liste deroulante dependante erreur 424"