Liste déroulante dépendante erreur 424

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

Pour cela il faut juste faire l'inverse de ce que vous avez fait tout à l"heure, à savoir d'enlever Services et Références dans la rubrique TEXT des propriétés des deux combobox. Une fois fait voici le code que vous pouvez utiliser :

Private Sub CommandButton1_Click()
If ComboBox1.Value = "" Or ComboBox2 = "" Then MsgBox "Vous n'avez pas fait de choix dans chacune des listes déroulantes !": Exit Sub
End If
With Sheets("Formulaire")
    .Range("B8") = ComboBox1.Value
    .Range("B12") = ComboBox2.Value
End With
Call CommandButton2_Click
End Sub

Autre suggestion :

En dessous de votre feuille vous avez des objets "CAse à cocher" pour spécifier l'adresse à utiliser. Si vous le désirez, sachez que l'on peut mettre aussi des cases à cocher via un code VBA par double clik dans une des cellules. Qu'en pensez-vous ?

Wow super !!! Merci

Oui je veux bien savoir comment faire s'il vous plait ? en m'expliquant un peu plus les lignes j'essaie de vraiment comprendre pour pouvoir être autonome merci.

Re,

point 1 : dans le post précédent, j'ai mis un END IF juste après le EXIT SUB. Il faut l'enlever sinon vous allez avoir un bug. (J'ai corrigé mon post

Point 2 : Cases à cocher pour les adresses

- Supprimer vos objets cases à cocher
- Remplacer le code Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, cancel As Boolean) dans la feuille par celui ci-dessous

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
If Not Intersect(Target, Range("A91:A94")) Is Nothing Then
'on réinitialise tous les cases à cocher
    With Range("A91:A94")
        .FormulaR1C1 = "o" 'ALT + 0111
        .Font.Name = "Wingdings"
        .Font.Size = 20
    End With
'On coche la case choisie
    With Target
        .FormulaR1C1 = "ý" 'ALT + 0253
        .Font.Name = "Wingdings"
        .Font.Size = 20
    End With
    cancel = True
End If
End Sub

Dans ce code, j'utilise la police Wingdings pour placer la case à cocher que lo code va cocher ou décocher selon que vous cliquez dans une cellule comprise entre A91 et A94

Cordialement

Merci beaucoup super ça semble fonctionner, le message d'erreur apparaît aussi également, c'est vraiment génial, ça m'a donné envie de ne faire que du VBA lol.

Merci à toi @Dan :)

j'aurais voulu également sur l'unité de commande dans le fichier sur la cellule E24 et E25 le même code que celui qu'on a fait pour les services et la référence. C'est à dire, lorsque le clique sur la cellule E24 et E25, j'ai un userform qui pop up et qui me fait une liste des codes BT etc etc ? Dois-je mettre un code doubleclick sur la feuille 1 et créer un userform "unite_commande" ? Si oui quelle code dois-je mettre svp ?

cdt,

Bonjour,

Merci beaucoup super ça semble fonctionner, le message d'erreur apparaît aussi également,

Ok mais le message apparait toujours ???
Dans le fichier posté il y a toujours une liste déroulante dans le code analytique. Elle doit être supprimée non ?

j'aurais voulu également sur l'unité de commande dans le fichier sur la cellule E24 et E25 le même code que celui qu'on a fait pour les services et la référence. C'est à dire, lorsque le clique sur la cellule E24 et E25, j'ai un userform qui pop up et qui me fait une liste des codes BT etc etc ? Dois-je mettre un code doubleclick sur la feuille 1 et créer un userform "unite_commande" ? Si oui quelle code dois-je mettre svp ?

Cela peut se faire bien entendu mais avec la liste déroulante c'est aussi pratique il me semble. Par double click ou sélection.

Toutefois, il faut garder toujours en mémoire que c'est bien par code VBA mais c'est plus contraignant si on a un souci qui amène à devoir modifier quelque chose. Ce n'est pas la première fois que je vois quelqu'un ici demander à le dépanner parce qu'il récupère un fichier d'une personne qui a conçu un fichier et qui n'est plus présente pour le modifier.

Hello, re bonjour,

1. Le message d'erreur dont je parlais c'est le message du code "vous n'avez pas selectionné toutes les listes déroulantes" dans ta ligne de code, tout fonctionne parfaitement ( je me suis mal exprimé) encore thank you.

2. Ok, on peut donc partir sur une liste déroulante, le problème c'est que quand je vais sur feuille 1 de mon fichier, et que j'essaye de retaper le code il me sort une anomalie comme ci j'avais un doublon... comment faire pour faire plusieurs double click sur plusieurs cellules avec différent userform dans mon cas de figure ça serait un USF qui pop up en cliquant sur le range E24 à E45 genre ? Est ce possible ?

Pour le fichier, je suis le responsable dessus, du coup je l'ai conçu de A à Z et on est deux avec un contrôleur de G sur le fichier, donc je pense que ça ira :)

Bonjour

2. Ok, on peut donc partir sur une liste déroulante, le problème c'est que quand je vais sur feuille 1 de mon fichier, et que j'essaye de retaper le code il me sort une anomalie comme ci j'avais un doublon...

Le code s'arrête sur quelle ligne ?

comment faire pour faire plusieurs double click sur plusieurs cellules avec différent userform dans mon cas de figure ça serait un USF qui pop up en cliquant sur le range E24 à E45 genre ? Est ce possible ?

Oui c'est possible, il faut revoir le code du double click en ajoutant ceci juste avant le END SUB (par exemple)

If Not Intersect(Target, Range("E24:E45")) Is Nothing Then
'votre code pour ouvrir l'userform --> useformx.show
End If

Le code s'arrêtait sur ENDSUB.

J'ai mis le code que tu as mis, effectivement ça re fonctionne. Du coup, deux questions :

1.je peux donc faire rajouter cette ligne de code à l'infini pour pouvoir provoquer des USF en doubleclick en le rajoutant toujours avant le ENDSUB ?

2. Est il possible par exemple de verrouiller une cellules pour que l'utilisateur ne puisse ecrire dedans tout en mettant sur cette même cellule un doubleclick USF ? Dans la cellule "services" on a fait un USF doubleclick mais du coup j'aimerais également la verrouiller pour éviter des erreurs ? En gros la cellules ne se remplirait qu'exclusivement via le USF. Is it possible pls ?

Amiel

Re

1.je peux donc faire rajouter cette ligne de code à l'infini pour pouvoir provoquer des USF en doubleclick en le rajoutant toujours avant le ENDSUB ?

A l'infini, ... non si vous dépassez une certain nombre de ligne, excel vous renverra un message d'erreur mais de base, la réponse est oui.

2. Est il possible par exemple de verrouiller une cellules pour que l'utilisateur ne puisse ecrire dedans tout en mettant sur cette même cellule un doubleclick USF ? Dans la cellule "services" on a fait un USF doubleclick mais du coup j'aimerais également la verrouiller pour éviter des erreurs ? En gros la cellules ne se remplirait qu'exclusivement via le USF. Is it possible pls ?

Oui vous pouvez verrouiller. Le code ira placer l'info dans la cellule. Si souci, on peut toujours ajouter une instruction pour contourner. Seul chose c'est ne pas oublier le mot de passe...

Private Sub CommandButton1_Click()
If ComboBox2 = "" Then MsgBox "Vous n'avez pas fait de choix !": Exit Sub
With Sheets("Formulaire")
    .Range("E24:E43") = ComboBox2.Value
End With
Call CommandButton2_Click
End Sub

Du coup quand je selectionne ma liste en E24, et que je valide mon choix, le choix va dans toutes les cells de E24 à E43, alors que j'aimerais que le choix ne se mettent que dans la cell E24, si je clique en E25 alors E25 etc etc. je sais pas si c'est compréhensible.... svp

Re

Du coup quand je selectionne ma liste en E24,

Vous voulez dire double click ?

Sinon remplacez

.Range("E24:E43")

par --> ACTIVECELL

Oui quand je double click, quelle est la différence entre active cell et range svp ?

Private Sub CommandButton1_Click()
If ComboBox2 = "" Then MsgBox "Vous n'avez pas fait de choix !": Exit Sub
With Sheets("Formulaire")
    ActiveCell.Range("E24:E43") = ComboBox2.Value
End With
Call CommandButton2_Click
End Sub

ça ne fonctionne pas dans les autres cellules :/ j'ai dut faire une erreur ?

Re

Non vous devez remplacer .range(("E24:E43") par Activecell

ActiveCell = ComboBox2.Value

quelle est la différence entre active cell et range svp ?

Aucune Activecell est un Range aussi. Simplement que Activecell correspond à la cellule sélectionnée sur votre feuille

Ok merci je comprends mieux maintenant, merci ça fonctionne parfaitement !

re

Pour être sur de ne pas aller mettre dans une autre cellule vous pouvez mettre plutot cette ligne dans le code

If Not Intersect(ActiveCell, Range("E24:E43")) Is Nothing Then ActiveCell = ComboBox2.Value

à la place de

ActiveCell.Range("E24:E43") = ComboBox2.Value

2. Est il possible par exemple de verrouiller une cellules pour que l'utilisateur ne puisse ecrire dedans tout en mettant sur cette même cellule un doubleclick USF ? Dans la cellule "services" on a fait un USF doubleclick mais du coup j'aimerais également la verrouiller pour éviter des erreurs ? En gros la cellules ne se remplirait qu'exclusivement via le USF. Is it possible pls ?

Oui vous pouvez verrouiller. Le code ira placer l'info dans la cellule. Si souci, on peut toujours ajouter une instruction pour contourner. Seul chose c'est ne pas oublier le mot de passe... 

Alors il m'envoie un message d'erreur quand j'ai verouiller la cellule via protection de la cellule, il me dit "erreur 1004" la cellule que vous essayez de modifier se trouve sur une feuille protégée...?

Bizarre j'avais fait un test et cela fonctionnait...mais je me doutais aussi de ce souci

Changez le code

Private Sub CommandButton1_Click()
If ComboBox2 = "" Then MsgBox "Vous n'avez pas fait de choix !": Exit Sub
With Sheets("Formulaire")
    If Not Intersect(ActiveCell, .Range("E24:E43")) Is Nothing Then
        .Protect Password:="Le mot de passe", UserInterFaceOnly:=True
        ActiveCell = ComboBox2.Value
End With
Call CommandButton2_Click
End Sub

Si vous devez utiliser cette ligne à plusieurs endroit, il faudra peut être actualiser les codes pour éviter d'avoir plusieurs fois le mot de passe renseigné

Au besoin remettez le fichier en ligne, je regarderai

Ok j'ai un peu analyser le code.

Il me sort une erreur "LE END SANS LE WITH" ?

Et en fait, j'aurais voulu faire cette manœuvre la pour la cellule service et référence ? et non pour la commande d'unité. Les cellules sont B8 et B12

Re

Il me sort une erreur "LE END SANS LE WITH" ?

Oui, il faut mettre un END IF juste avant le END WITH

Et en fait, j'aurais voulu faire cette manœuvre la pour la cellule service et référence ? et non pour la commande d'unité. Les cellules sont B8 et B12

Ah ok. Vous n'aviez pas précisé

Dans l'USF, vous pouvez essayer ceci

Private Sub CommandButton1_Click()
If ComboBox1.Value = "" Or ComboBox2 = "" Then MsgBox "Vous n'avez pas fait de choix dans chacune des listes déroulantes !": Exit Sub

With Sheets("Formulaire")
    .Protect Password:="Le mot de passe", UserInterFaceOnly:=True
    .Range("B8") = ComboBox1.Value
    .Range("B12") = ComboBox2.Value
End With

End Sub

Je tenais encore à te remercier pour ton aide sur la liste déroulante :)

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