Boucle sur comboBox_Change

pmfontaine

XLDnaute Occasionnel
Bonjour,
Je souhaiterais savoir s'il est possible de faire une boucle sur plusieurs "Private Sub comboBox_Change()"
En resumé, est-ce que l'on peut
remplacer :
Private Sub comboBox1_Change()"
action1
End Sub
Private Sub comboBox2_Change()"
action2
End Sub
Private Sub comboBox3_Change()"
action3
End Sub
Private Sub comboBox4_Change()"
action4
End Sub
Private Sub comboBox5_Change()"
action5
End Sub

Par un truc du style :
For i = 1 to 5
Private Sub comboBox & i_Change()"
action & i
End Sub
Next i

J'ai bien trouvé https://www.excel-downloads.com/threads/boucle-ave-combobox_change.160876/ sur le forum, mais je ne l'ai pas compris.
Merci
Patrick
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Il existe encore une voie intermédiaire consistant à altérer la propriété CBM.SujetFlt dans une procédure de l'évènement CL_SujFltChg de l'objet.
Le module MSujetCBx contient des fonctions fabriquant divers sujets dérivés d'un sujet de départ.
Je pense notamment aux fonctions SujSupÉgal et SujInfÉgal.
Il est aussi possible de ne pas spécifier de colonne au Add d'une ComboBox. Dans ce cas, puisqu'il n'a pas le renseignement qu'il faut pour se débrouiller tout seul il vous demande de lui fabriquer vous même le CBM.SujetBdD via une procédure CL_SujBdDPersoSVP
Mais bien sûr avec tout ça on sort un peu du cadre d'utilisation simple, on entre dans les évènements spéciaux pour utilisation avancée.
 
Dernière édition:

Si...

XLDnaute Barbatruc
Salut

Tu n’as que 2 listes déroulantes dépendantes donc tu peux, aussi, les gérer simplement.

Tu avais parlé de Date, de Personnel, de Site … donc il te faut d’autres listes déroulantes (sans arriver à 80).

Ces autres listes réclament des traitements individuels donc il faudra les prendre une par une.

Avec ce que j’ai compris de la problématique *, voici un exemple de ce que l’on peut faire de façon classique et bien entendu moins élaborée :confused: que celle de Dranreb ;).

Remarque : en cas de problème avec contrôle DTPicker tu peux te rabattre sur un autre contrôle voire un calendrier personnel (il y en a beaucoup de proposés ici et là).

*Comment gères-tu, pour chaque site, le nombre d’espèces : connu ou à modifier ? Dans ce dernier cas, il faudra compléter les macros afin de prendre en compte le décompte fait à l'observation.

Cela pourra te donner d’autres idées si tu veux t’investir dans ce vaste domaine de la programmation en VBA.
 

Pièces jointes

  • Usf Saisies.xlsm
    643.4 KB · Affichages: 56

pmfontaine

XLDnaute Occasionnel
Bonjour,
Merci Si... pour cette proposition que je ne peux malheureusement pas tester car quand je veux ouvrir l’userform j’ai un message :
Impossible de charger l’objet car il n’est pas disponible sur cette machine.
Puis si je clique sur OK je passe sur la fenêtre vba avec :
Erreur de compilation :
Projet ou bibliothèque introuvable.

Patrick
 

pmfontaine

XLDnaute Occasionnel
Bonjour
Je peux vous les écrire si vous voulez.
Merci Dranreb pour votre proposition.
Je veux bien, mais, en espérant que vous ne me trouveriez pas trop exigent, je souhaiterai que vous y mettiez le maximum de commentaires possible pour que je puisse "essayé" de comprendre le fonctionnement.
Je ne sais pas si c'est important pour votre proposition, mais je souhaite obliger l'utilisateur a remplir dans l'ordre 1 -Site, puis 2 - Classe - Ordre, et le reste ensuite.

Pour revenir sur le fonctionnement de saisie de doublon, si j'ai bien compris, c'est d’effacer la CBxNomLatin puis CBxNomVerna qui risque de poser problème. j'ai donc mis CL.Nettoyer. Ce code fonctionne, mais est-ce qu'il est correcte ?
Code:
Private Sub CL_BingoUn(ByVal Ligne As Long)
Dim L As Long
Dim A As String
A = Me.CBxOrdre
LCou = Ligne
    For L = 0 To UBound(TLgn)
        If TLgn(L) = LCou Then
        MsgBox "Vous ne pouvez pas enregistrer 2 fois la même espèce pour une même séance d'observation."
CL.Nettoyer
   CBxOrdre.Text = A

        LBxClickInduite = True: LBx.ListIndex = L: LBxClickInduite = False
        'CBnAjouter.Caption = "Retirer":
        Exit Sub:
     End If
   Next L
CBnAjouter.Caption = "Ajouter"
CBnAjouter.Enabled = True
End Sub

Re
c'est ce que je pré disais o_O donc, toujours pour exemple, une version avec un calendrier "maison".
Merci Si... je vais le regarder, après le passage du Père Noël.

PS : Afin de ne pas mélanger trop les sujets, je vais ouvrir un autre poste pour ce même fichier sur (NB.SI.ENS sans les doublons en VBA)

Bon Noël
Patrick
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Puis-je savoir pourquoi vous tenez à obliger le choix de Classe-Ordre ?
Ça ne me paraitrait utile que pour restreindre les animaux proposés dans les autres ComboBox, or il y reste généralement beaucoup trop de choix possible et il me semble qu'il vaudrait mieux taper le début directement. (Ça fait venir le bon Classe-Ordre puisque l'animal n'appartient qu'à un seul)
 

Dranreb

XLDnaute Barbatruc
Bonjour, et joyeux Noël.
Voici un exemple de procédure spéciale pour utilisation avancée, avec un maximum de commentaires (Assez peu, en fait, puisqu'il n'y a qu'une seule instruction)
 

Pièces jointes

  • CBxLiéesPmfontaine.xlsm
    127.8 KB · Affichages: 45
Dernière édition:

pmfontaine

XLDnaute Occasionnel
Bonjour,
Oui La Classe ordre avant les espèces n'ai pas impératif, même si c'est logique et que ça limite le choix quand même.
Par contre le site est nécessaire en premier car c'est a partir du site que je limite le choix aux espèce déjà vues sur le site.
Pas pu regarder votre nouveaux fichier, je regarde demain probablement.
J’espère que le père Noël a été généreux avec tous le monde
Patrick
 

pmfontaine

XLDnaute Occasionnel
Bonjour a tous,
Bonjour Dranreb,
Je viens de regarder votre fichier qui marche bien, je pense donc que pour la saisie des données j'ai tous les éléments nécessaires pour finaliser cette partie de projet.
Comme je l'ai écris dans un message précédant, je reviendrais en ouvrant un autre sujet pour l'exploitations des résultats.

Bonjour SI...
Le premier message d'erreur est résolu, mais toujours le deuxième.
Erreur de compilation :
Projet ou bibliothèque introuvable.

Je ne pense pas revenir sur mon fichier qui est bien avancé avec le fonctionnement proposé par Dranrebn mais une version de votre proposition qui fonctionne, me permettrai d'apprendre un peu plus le VBA.
 

pmfontaine

XLDnaute Occasionnel
ReBonjour Dranred,
Je voudrais bien comprendre comment ont modifie la zone des tableaux (rajouter une colonne par exemple) que tu as créé dans "Gestionnaire des noms" ? Le nom est modifiable, mais la zone est désactivé.
Idem pour la mise en forme. Car je ne vois pas ou je peux modifier les couleurs.
Merci
 

Dranreb

XLDnaute Barbatruc
Il suffit de taper quelque chose dans une ligne en dessous ou une colonne à droite adjacentes au tableau pour qu'elle y soit incorporée.
Par ailleurs il y a normalement un onglet Outils de tableau, Création qui apparait dans le menu quand une cellules du tableau est sélectionnée. Elle permet d'accéder à d'autre modèles de tableaux. Je vous en ai mis 5 personnalisés de mon cru. Mais je pourrait vous en faire d'autre si vous m'expliquiez ce que vous aimeriez bien.
 
Dernière édition:

Discussions similaires

Réponses
11
Affichages
874

Statistiques des forums

Discussions
312 249
Messages
2 086 598
Membres
103 253
dernier inscrit
alscanv974