VBA Excel: probleme avec selection dans zone de liste deroulante

Résolu/Fermé
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 - 30 nov. 2012 à 21:37
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 - 2 déc. 2012 à 22:55
Bonjour,

J'ai créé 2 zones de liste et 1 bouton de commande, pour valider la sélection dans
les 2 zones, avec un ActiveX.

A l'ouverture de ma feuille le premier mot de chaque liste est affiché, mais lorsque
je valide le choix (sans rien changer dans les listes) mon choix n'est pas pris en compte.

Ma question est donc: Comment faire pour que le mot présent dans la zone soit pris en compte ?

Merci de votre aide



A voir également:

6 réponses

eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 213
Modifié par eriiic le 30/11/2012 à 22:10
Bonjour,

Je suppose que tu te sers de l'évènement Change.
Puisque ton choix est déjà fait l'évènement n'a pas lieu.
Utilise aussi la propriété LinkedCel
Mais sans fichier ni le modop employé difficile de savoir exactement...

Et est-ce qu'une simple liste de validation n'est pas suffisante ?

eric

Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
0
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
1 déc. 2012 à 11:53
Bonjour eriiic,

j'ai voulu joindre le fichier mais il y avait des données de travail que je ne pouvais pas joindre. Mais effectivement, j'ai utilisé la fonction change.

Voici le fichier : https://www.cjoint.com/?3LblY6pcquO

Le problème se situe au niveau de la page gestion et bilan lors du choix du trimestre et de la classe.

merci de votre aide.

0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 213
Modifié par eriiic le 1/12/2012 à 13:02
Bonjour,

Je ne vois pas trop quel est ton problème puisque dans Change tu ne fais que mettre à jour une variable qui est déjà initialisée dans Initialize.
De plus elle est Public donc n'est pas perdue...

A quel moment et en faisant quoi il te manque qcq chose ?
Sinon la parade serait de mettre à jour la variable également dans l'évènement DblClick.

Private Sub ComboBox2_Change()                  'Choix du Trimestre    
    Trim = ComboBox2.ListIndex    
End Sub 

Par contre :
1) Trim est un nom réservé, change le nom de ta variable ('édition / remplacer / projet en cours')
2) Dim cpteval, lg, cl As Integer
Ici seul cl est Integer, les autres variables sont Variant. Il est fortement conseillé de typer toutes les variables.
Par exemple tu fais cpteval = cpteval + 1, alors que cpteval = "Perturbateur". Pas très cohérent pour excel...

eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
0
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
1 déc. 2012 à 13:37
1_ Je ne comprends pas ta parade? Il faudrait que je double clic systématiquement même à l'ouverture du fichier pour valider ma sélection dans la liste déroulante ?

2_ cpteval est un compteur. Je ne vois pas où il est égal à "Perturbateur" ?
0
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
1 déc. 2012 à 13:27
Merci pour tes remarques dont je ne connaissais pas les conséquences.
je vais les corriger de suite.

Sinon, le problème tu peux le voir en ouvrant le fichier la classe affichée est 6A, tu cliques sur bilan la classe affichée est 6a mais celle qui est dans la ComboBox est 6B. Clique sur bilan et tu verras que tu vas rester sur l'affichage 6A. Le changement ne se fera que si tu changes une première fois de classe dans la ComboBox (sur cette même feuille) et que tu reviens sur la 6B ensuite.

Voilà le problème...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
1 déc. 2012 à 13:44
Pour la sélection, j'avais pensé à la faire systématiquement en présentant un vide au lieu d'un mot de la liste, systématiquement à l'ouverture de la feuille.
Mais je ne sais pas comment faire.

J'avais allongé la référence de ma liste mais Excel ne l'a pas pris en compte.

Si quelqu'un a une idée, elle est bien venue... Merci

0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 213
Modifié par eriiic le 1/12/2012 à 15:12
1_ Je ne comprends pas ta parade? Il faudrait que je double clic systématiquement même à l'ouverture du fichier pour valider ma sélection dans la liste déroulante ?
Moi je ne vois pas ou ça te pose problème, tu ne l'as toujours pas dit...
A quel moment et en faisant quoi il te manque qcq chose ?
Tu peux l'initialiser également dans Workbook_Open()

2_ cpteval est un compteur. Je ne vois pas où il est égal à "Perturbateur" ?

Il suffit de cliquer sur le bouton 'perturbateur/ne fais rien' à l'ouverture (d'ailleurs j'aurais 'fait') pour avoir l'erreur.

Pour la sélection, j'avais pensé à la faire systématiquement en présentant un vide au lieu d'un mot de la liste, systématiquement à l'ouverture de la feuille.
Mais je ne sais pas comment faire.

.ListIndex = -1

eric
0
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
Modifié par mod77 le 1/12/2012 à 20:19
1_pourtant, j'ai expliqué le problème au poste de 13H27 où il y a le lien n°4 .

Cependant, j'ai mis un worksheet_open() à la place du worksheet_activate() et ça fonctionne mais pas tout le temps. Des fois quand je bascule entre la feuille Gestion et la feuille Bilan, via les boutons sur les feuilles, si je fais MAJ (sur la feuille gestion) l'affichage change alors qu'il ne devrait pas sans que je change de classe.

2_J'ai vérifié pour le bouton "perturbateur", je n'avais pas vu! mais à mon avis il doit y avoir le même problème pour tous les boutons du coup...
... j'ai corrigé par un if qui manquait.



Merci eriiic.
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 213
1 déc. 2012 à 23:52
1) tu avais posté 2 fois d'affilée, je n'avais vu que le dernier post...
Les 2 combobox sont totalement indépendant (même s'ils portent le même nom) car sur 2 feuilles.
Il faut les synchroniser. Partout ou un combobox change il faut faire évoluer l'autre.
Exemple sur Feuil1 :
Private Sub ComboBox1_Change()                  'Choix de la Classe
    ClasseChoisie = ComboBox1.ListIndex   'la liste commence à zéro
    Worksheets("Bilan").ComboBox1.ListIndex = ClasseChoisie
End Sub


Ou bien les mettre à jour lors de l'activation de la feuille (worksheet_activate) avec :
ComboBox1.ListIndex = ClasseChoisie
Mais dans cas il ne faut pas, si tu travailles sur Gestion par exemple, que des cellules de gestion utilisent des cellules de Bilan qui elles même dépendent de la combobox qui n'est pas encore à jour.

eric
0
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
2 déc. 2012 à 10:47
Bonjour,

En fait, c'est fait exprès de ne pas synchroniser les combobox de chaque feuille (Gestion et Bilan). J'aurais du vous donner le mode d'emploi.
Le mode d'emploi est :
1_ j'ouvre le classeur sur la page "Gestion". c'est ma feuille principale de travail.
2_ je sélectionne la classe (Le trimestre ne change que tous les 3 mois).
3_ je mets à jour. La classe s'affiche et je note les comportements.

Lorsque je veux faire le bilan des notes de la classe ou voir les points attribués. Je clique sur le bouton de commande "Bilan" (feuille Gestion). Et là directement, je me retrouve sur le bon trimestre de la classe qui est affichée sur la feuille Gestion.

Si je veux changer de classe, j'ai juste à changer la sélection de la feuille "Bilan" et à Valider "MAJ" pour me retrouver sur le "bilan" de la classe sélectionnée sur cette feuille.

voila.
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 213
2 déc. 2012 à 12:33
Bonjour,

En fait, c'est fait exprès de ne pas synchroniser
Tu es plein de contradictions toi.
Si tu ne veux plus qu'ils soient identiques ils resteront différents...
Je ne comprend pas trop l'intérêt de ta question.

eric
0
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
2 déc. 2012 à 13:15
Bien, en fait j'ai résolue une partie du problème grâce à ton info du poste n°3.

J'ai placé ceci : ClasseChoisie = ComboBox1.ListIndex
TrimChoisi = ComboBox2.ListIndex
au début des Mises A Jour ce qui a résolue les dysfonctionnements.

Mais ma question initiale reste posée. Je la reformule plus précisément:

La prise en compte des infos dans les ComboBox de la feuille "Gestion" ne se fait pas à l'ouverture du classeur. Il faut cliquer sur le bouton "MAJ".

Est-ce qu'il y a une manière d'écrire pour exécuter, par exemple, la fonction réalisée par le bouton "MAJ" dans ma Private Sub worksheet_activate() ?

J'ai essayé en écrivant : CommandButton51_Click() = true mais ce n'est pas bon.

on y est presque...merci.
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 213
Modifié par eriiic le 2/12/2012 à 13:31
oui, tu peux, mais faut lui dire la feuille.
Comme au post 9 :
Worksheets("Bilan").ComboBox1.ListIndex = ClasseChoisie
Et si tu en as plusieurs utilises :
with Worksheets("Bilan")
.ComboBox1. ... = ...
....
end with

eric
0
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
2 déc. 2012 à 14:04
Excuse moi encore eriiic, mais je ne crois pas que ta réponse soit adéquate?

Je ne veux pas synchroniser les ComboBox, mais juste exécuter la commande du bouton MAJ sans avoir à appuyer sur celui-ci à l'ouverture de la feuille Gestion.

Est-ce qu'il y a une manière d'écrire pour exécuter, par exemple, la fonction réalisée par le bouton "MAJ" dans ma Private Sub worksheet_activate() 'Gestion, STP?

J'ai essayé en écrivant : CommandButton51_Click() = true mais ce n'est pas bon, idem pour CommandButton51.
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 213
Modifié par eriiic le 2/12/2012 à 16:36
Je vais donc répondre précisément à ta question.

Normalement non.
Une procédure Private ne peut être appelée d'un autre module, de plus une feuille n'est pas un module standard mais un module de classe.

Il faut que tu mettes tout le code qui t'intéresse dans une procédure d'un module standard (en l'adaptant pour les objets comme je t'ai expliqué au dernier post car tu n'es plus dans la feuille).
Tu recomplètes ton code CommandButton51_Click par un appel à cette procédure. Et tu l'appelle également dans ton worksheet_activate.

En réalité on peut mais ça ne respecte pas les règles.
Au début il vaut mieux apprendre en faisant propre, en respectant les bases et en prenant de bonnes habitudes (même si le chemin est plus long).

Maintenant je répond à la question que tu n'as pas posée : tu as l'évènement Deactivate de Gestion ou tu peux l'appeler directement.

eric
0
mod77 Messages postés 1273 Date d'inscription vendredi 10 juillet 2009 Statut Membre Dernière intervention 14 janvier 2024 53
2 déc. 2012 à 17:33
Ok d'accord! Bon, je vais me contenter de ce que j'ai déjà car je ne pourrais pas approfondir si je ne maitrise pas les bases déjà.

Par contre, je vais essayer de mettre mes commandes de Bilan dans un formulaire afin de les avoir à proximité même quand je suis en bas de feuille sur la dernière classe. ça m'évitera de devoir remonter en haut de page pour faire le bilan d'autres classes, et comme ça au moins je verrais les appréciations en permanence.

Merci à vous!
Bon dimanche!
0
eriiic Messages postés 24569 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 28 décembre 2023 7 213
2 déc. 2012 à 19:41
As-tu lu la dernière phrase ?
eric
0