Ouverture de plusieurs userform

Bonjour,

Je débute en VBA et je bloque sur un problème d'ouverture de plusieurs userform (pas simultanément) sur la même feuille.

Je souhaiterais arriver à ce que lorsque je clique sur une des cellules (pas celle du titre) dans les colonnes intitulées "Commune", "Lieu", "Intervenants", "Type de travaux", un userform avec liste à choix multiple s'ouvre.

Pour l'instant, je n'arrive qu'à ouvrir celui de ma colonne 'Commune" et les autres ne fonctionnent pas.

Probablement que ma déclaration est erronée !

Quelqu'un pourrait-il voler à mon secours et me corriger ?

Merci d'avance pour votre aide.

Vic

34travaux2.xlsm (29.23 Ko)

bonjour,

tu peux faire comme ça :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim iC%
iC = Target.Column
Select Case iC
Case 2: UserForm1.Show
Case 3: UserForm2.Show
Case 4: UserForm3.Show
Case 5: UserForm4.Show
End Select
End Sub

Cependant un programmeur avisé ne ferait jamais cela :

On ferait un seul UserForm et selon la colonne cliquée on afficherait les données correspondantes.

47travaux2-vg.xlsm (25.76 Ko)

A+

Bonjour,

Merci pour ton aide g

24travaux2-1.xlsm (29.74 Ko)

alopin01.

La 1ère solution fonctionne. J'y ai juste ajouté une ligne pour que les cellules de la ligne 1 (les titres) ne soient pas impactées par le double-clic.

Je suis par contre preneur d'une solution plus pro mais je suis vraiment un débutant et je ne comprends pas comment sont collectées les données qui remplissent la liste de l'userform dans ton exemple. De plus, toutes les colonnes sont impactées et un message d'erreur apparaît lorsque je clique dans une colonne où il n'y a pas de liste prévue. De même que les cellules de titre ne devraient pas être impactées par le double clic.

Peux-tu essayé de m'éclairer sur le sujet ?

Je te joins le fichier modifié suivant ta 1ère solution (pas très pro...) afin que tu vois ce que je souhaiterais obtenir.

Merci d'avance.

Bonjour,

Oui ce n'est qu'un exemple a améliorer destiné à montrer une orientation.

Les listes sont crées en tant que de besoin dans le Gestionnaire de Nom (Menu : Formule)

Désolé, je dois m'absenter. Je ne serai pas de retour avant Mercredi.

A+

Bonjour Galopin01,

Merci pour l'info.

Je vais essayer de comprendre la logique du code....

A+

Salut le fil,

Pas besoin de code pour cela ni de UserForm

Un petit exemple avec un tableau structuré, des plages nommées, et des validations de données

Bonjour Jean-Paul,

Merci pour ton retour mais désolé, ton fichier est vide !

A bientôt

Oups...

Voilà ce qui arrive quand on a pas de tête. Erreur réparée j'ai du refaire bonne lecture.

Bonjour Jean-Paul,

Merci pour ton retour et désolé pour ma réponse tardive.

J'ai déjà travaillé avec des listes comme tu me l'expliques ici mais je ne pense pas qu'il soit possible de faire des choix multiples dans ce type de liste sans passer par le VBA.

Dans mon cas, c'est indispensable.

La première solution que Galopin01 m'avait proposée fonctionne bien excepté que depuis que j'ai mis ma feuille sous forme de tableau, j'ai des cases qui se cochent toutes seules à l'ouverture de l'userform alors que le code stipule bien de vider l'userform en le quittant. C'est très aléatoire, parfois dans une colonne ou parfois dans une autre, parfois tout est ok. J'ai remarqué toutefois que si je me déplace dans la feuille et que j'amène la colonne capricieuse complètement à gauche de mon écran, le problème disparaît. Plutôt bizarre n'est-ce pas !

J'ai retourné 100 X le code pour essayer de comprendre le pourquoi mais en vain. cela vient peut-être d'autre chose.

je n'ai malheureusement pas le fichier sur ce PC et je ne peux donc pas le joindre pour être plus clair.

As-tu une idée sur l'origine du problème ou peut-être galopin01 s'il suit les échanges ?

Merci encore pour ton, enfin pour votre aide.

Bon week-end

Désolé, oui je suis mais ton topic ne me semble guère convaincant :

Commence déjà par nous présenter une base de données et un UserForm correct et on verra si tu as vraiment besoin de tous ces USerForm et de toutes ces listes...

A+

Salut à tous,

Bon je pense savoir ce que tu veux. Nul besoin de plusieurs Formulaire pour cela, un seul fera l'affaire, selon la cellule ou tu cliques cela ouvre le formulaire avec une liste bien déterminée. une fois que tu as sélectionné tes entrées cela mets à jour la cellule.

Tu remarqueras que c'est le code appelant qui gère les données et n'on pas le formulaire. bien entendu il y a d'autres manières d'arriver au même résultat.

J'ai mis quelques explications dans le code.

25travaux2.xlsm (28.90 Ko)

Bonjour,

Merci Jean-Paul.

J'essaie de comprendre ton code et son fonctionnement. Juste une chose, est-il possible d'avoir un tableau qui permette le tri et la sélection des entrées avec ce système ?

Je joins 2 fichiers qui montrent pour le premier où j'en étais arrivé avec les conseils de galopin01. Ca fonctionne bien excepté que lorsque mes listes et par conséquent mes userform sont bien remplis, il y a des cases qui se cochent toutes seules de manière aléatoire et je ne sais pas pourquoi.

J'aurais voulu simplifier ce fichier comme dans dans le "Travaux 4.1" mais cela impliquerait que je devrais intégrer une condition pour ouvrir l'userform correspondant. Si la commune est X, alors ouvrir l'userform X;si elle est Y, ouvrir l'userform Y.

Est-ce possible dans le cas de plusieurs userform comme présenté dans mon fichier "Travaux 4.1" ou avec ton système de listes appelées par un code comme présenté dans ton fichier "Travaux2" ?

Merci d'avance

13travaux4-0.xlsm (72.22 Ko)
19travaux4-1.xlsm (74.09 Ko)

Salut,

Simplifier, simplifier... que tu dis en fait dans ton tableau sur la feuilles données tu mets des lignes et des colonnes pour les communes c'est pas simplifier ça.

Enlèves toutes les lignes inutiles dans ton tableau de la Feuille1.

Et donnes nous de bonnes explications quand à ce que tu souhaite

Bonsoir,

En effet, je m'égare....

Je pense que le système d'un seul formulaire avec des listes rappelables est comme tu le dis depuis le début , tout comme galopin01 d'ailleurs, plus efficace.

J'aimerais seulement pouvoir rappeler les listes correspondantes à la donnée qui sera rentrée dans la colonne B de la feuille 1. Par exemple si la donnée A est sélectionnée dans la colonne B2, je voudrais alors voir apparaître le formulaire avec la liste A de la feuille "Données" dans la colonne C2, Si c'est B, la liste B, etc...

J'aimerais également que lorsque je clique sur la valider du formulaire sans aucune sélection, je n'ai pas de message d'erreur.

Je comprends un peu le code mais je dois assimiler toutes les valeurs qu'il comporte et là, j'ai encore du chemin à faire....

Merci encore

9travaux5.xlsm (28.31 Ko)

Bonjour,

Voilà plusieurs jours que j'essaie de trouver une solution à mon problème et rien ne fonctionne.

Quelqu'un pourrait-il me mettre sur la voie ?

Pas évident quand on est un débutant comme moi et malgré l'aide que j'ai déjà reçue.

Je souhaiterais que lorsque je clique dans une cellule de ma colonne 'Adresses', l'userform correspondant à la sélection qui aura été faite dans la cellule adjacente de la colonne 'Commune' s'ouvre.(Si A est sélectionné, c'est l'userform A qui s'ouvre, si c'est B, c'est l'userform B qui s'ouvre, etc...)

Actuellement, je n'arrive pas à intégrer cette condition dans le code.

Merci d'avance pour votre aide

16travaux6.xlsm (28.36 Ko)

Salut

il fallait bien lire, pour comprendre le fonctionnement du code, de là, une petite modification du code et puis voilà j'espère que c'est ce que tu recherches

8travaux6.xlsm (31.76 Ko)

Salut Jean-Paul,

Merci pour ta réponse. Ce n'est toutefois pas tout-à-fait ce que je souhaitais...mais j'aurai au-moins appris à formater une date . Encore un pas en avant !

Ce que j'aimerais arriver à faire, c'est que l'userform avec la liste des adresses du tableau2 correspondant à la commune qui aura été choisie dans la colonne B du tableau1 (A, B, C, D) s'ouvre lorsque je clique dans la colonne C (adresse) du tableau1. Pour l'instant, seul l'userform "A" arrive à s'ouvrir puisqu'il est déclaré ainsi dans le code. Je pense qu'il faudrait ajouter une condition du type "si dans la cellule x de la colonne "Commune"

on retrouve le texte "B", alors ouvrir l'userform B; si on trouve le texte "D", alors ouvrir l'userform D et ainsi de suite...

J'ai ajouter des couleurs sur la feuille1 et la feuille "Données" pour essayer d'être un peu plus clair.

J'ai bien essayé de modifier la ligne :

ElseIf Not Intersect(Range("Tableau1[Adresse]"), Target) Is Nothing Then
LoadUserForm "A", Target.Address

mais comme je patauge dans la semoule, je me heurte à un mur à chaque essai.

Je comprends déjà un peu mieux la première partie du code en tous cas en ce qui concerne l'ouverture des userform et je déchiffre maintenant le code qui concerne l'userform en lui-même mais j'avoue que ce n'est pas évident.

Merci d'avance pour ton aide

13travaux6-2.xlsm (28.67 Ko)

Salut,

As-tu bien testé ou c'est moi qui pipe rien.

image

Si tu fais un double click sur C3 la fenêtre s'ouvre avec les données de B3 comme critère...

Grosso modo on suit ce fil

image

Salut Jean-Paul,

Merci pour ta réponse et aussi pour ta patience...

En effet, ton code fonctionne. Je ne sais pas ce que j'ai fabriqué hier, la fatigue peut-être....

Par contre, lorsque je veux l'intégrer dans le code complet du tableur où d' autres userform doivent s'ouvrir et permettre un choix multiple, ça bug.

Je comprends le principe mais la syntaxe doit peut-être changer dans ce cas là ?

Merci pour ton aide.

11travaux6-3.xlsm (22.87 Ko)

Salut,

Donc si je comprends bien tu veux 1e fonctionnement que j'ai créé sur la colonne Adresse sur d'autres colonnes

J'ai modifier les tableaux dans la feuille données j'en ai fais qu'un seul nommé t_Datas et ensuite on recherche le nom de la colonne que l'on va passer en argument à la procédure OpenForm. Si elle se nomme Adresse on va chercher la valeur de la cellule même ligne une colonne en arrière.

29travaux6.xlsm (48.94 Ko)
Rechercher des sujets similaires à "ouverture userform"