Obliger l'utilisateur à remplir une combobox

Résolu/Fermé
Ecrelinf Messages postés 36 Date d'inscription mercredi 12 mars 2014 Statut Membre Dernière intervention 26 février 2015 - Modifié par Ecrelinf le 12/03/2014 à 14:38
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 - 13 mars 2014 à 17:02
Bonjour à tous,
N'ayant pas trouvé de réponse en surfant sur ce forum, je décide enfin à m'y inscrire, au passage merci à tous ces anonymes qui m'ont pas mal aidé ces dernières semaines, par le biais des anciens sujets !

Avant toute chose je tiens à préciser que je suis novice en matière de macro et VBA.

Bon maintenant passons aux choses sérieuses :
J'ai créé un formulaire avec des combobox et je souhaite que lorsque la ComboBox11 est remplie, l'utilisateur soit obligé de remplir les ComboBox1 et ComboBox12.
En pompant un peu sur des forums et le support microsoft, j'ai pondu ça :


Sub SaisieObligatoire()
If ActiveDocument.FormFields(ComboBox11).Result <> "" Then

On Error GoTo fError
If ActiveDocument.FormFields("ComboBox1").Result = "" Then
MsgBox "Vous devez choisir blablabla"
Selection.GoTo wdGoToBookmark, Name:="ComboBox1"
End If
If ActiveDocument.FormFields("ComboBox12").Result = "" Then
MsgBox "Vous devez choisir blabla"
Selection.GoTo wdGoToBookmark, Name:="ComboBox12"
End If
Exit Sub

fError:
MsgBox Err.Description

End If

End Sub

Et lorsque j'exécute la macro, une fenêtre apparaît et me dit que "Le membre de la collection requis n'existe pas."

Bon j'espère n'avoir pas trop fait d'erreurs de syntaxe, ça risquerait de vous effrayer ^^

Donc si quelqu'un a une idée ou une solution miracle, je suis laaaaaaargement preneur !

Merci d'avance à ceaux qui prendront un peu de leur temps pour me répondre !

2 réponses

Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
12 mars 2014 à 14:58
Bonjour et bienvenue,

Pour ce genre de problème, j'ai tendance à n'activer le bouton "OK" que lorsque toutes les conditions de bon remplissage sont remplies.
--> Quand tu dis formulaire, c'est un UserForm ?
--> Peux-tu transmettre ton fichier via https://www.cjoint.com/ ?

A+
0
Ecrelinf Messages postés 36 Date d'inscription mercredi 12 mars 2014 Statut Membre Dernière intervention 26 février 2015
12 mars 2014 à 15:07
Bonjour Zoul67,

Tu parles de quel bouton "OK" ? ^^'

Bein ça dépend tu entends quoi par userform ? En gros c'est une feuille sur word, sur laquelle j'ai ajouté des combobox et des textbox :)

Voici en gros à quoi ressemble mon formulaire, j'ai enlevé toutes les infos "sensibles" qu'il contenait puisque je suis stagiaire en entreprise (ça serait dommage de se faire virer à cause d'une combobox !) :
https://www.cjoint.com/?3CmpglIG4sb
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
12 mars 2014 à 15:33
Le problème est que je ne vois pas comment obliger un utilisateur à saisir quoi que ce soit dans ton formulaire.
Quand on place des contrôles sur Word, c'est de la saisie assistée, mais pas obligatoire.
Avec un UserForm, on peut biaiser. Je pensais que tu étais en VBA Excel. Ci-après un exemple (active les macros et appuie sur le bouton ; ce qui apparaît est un UserForm) : https://www.cjoint.com/?DCmobm3gyL2

A+

PS : bonne idée de ne pas partager d'information confidentielle
0
Ecrelinf Messages postés 36 Date d'inscription mercredi 12 mars 2014 Statut Membre Dernière intervention 26 février 2015
12 mars 2014 à 16:08
Ok, je vais essayer de changer la forme de mon formulaire en passant par ta méthode, je reviens ici si jamais je bloque !

Merci pour ton aide en tout cas !
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
12 mars 2014 à 17:10
Pour obliger des saisies, on peut par exemple n'afficher des contrôles (propriété Visible) ou n'autoriser la saisie (propriété Enabled) que suivant les saisies dans les premiers contrôles

(exemple, si son demande la saisie nom - prénom - âge - ville, chaque fenêtre peut n'apparaître que si la précédente est non vide).

N'hésite pas à faire part de tes avancées et/ou blocages.

a+
0
Ecrelinf Messages postés 36 Date d'inscription mercredi 12 mars 2014 Statut Membre Dernière intervention 26 février 2015
13 mars 2014 à 15:46
Salut Zoul67 !
Mon formulaire a bien avancé ! Je suis passé par un userform, j'ai inséré des textbox et combobox comme je voulais, j'ai obligé l'utilisateur à saisir les données nécessaires via des if et des elseif bref tout marche comme je le souhaite ! J'ai même poussé le vice jusqu'à ce que toutes les valeurs rentrées dans mon userform soit recopiée dans une autre feuille que j'ai mis en page pour que ce soit plus beau !

MAIS (il y a toujours un mais ! ^^)

Afin d'être sûr que l'utilisateur n'écrive pas n'importe quoi, je souhaiterais que cette seconde feuille soit "protégée" en écriture, afin qu'il ne modifie pas les données qu'il a rentré dans le userform. Or, si je protège ma feuille en écriture, je ne peux plus la modifier et donc le userform ne peut pas "recopier" les valeurs que l'utilisateur a rentré, dans la seconde feuille.

As-tu une idée de comment je pourrais faire pour que ma feuille soit protégée, mais que lorsque l'utilisateur rentre ses données dans son userform, les données soient quand même recopiées dans cette fameuse feuille !

Merci d'avance !
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
13 mars 2014 à 15:53
Salut,

Bravo pour le travail déjà accompli.
Je te conseille de gérer les protections par macro, càd à l'export UserForm --> feuille :
- ôter la protection (méthode Unprotect)
- copier les données saisies
- remettre la protection (méthode Protect)

Pour la syntaxe, je te conseille de faire un enregistrement pour générer du code et de l'adapter.

A+
0