Action en sortie de Combo

  • Initiateur de la discussion Initiateur de la discussion GGPS58
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

GGPS58

XLDnaute Occasionnel
Bonjour à tous le forum.
J'aurais une petite question, suite à une manip que je suis entrain de réaliser.
J'ai une succession de combobox (par exemple numérotées de 1 à 100).
Quand le sort de chacune de ces combo je souhaite faire une action.
Jusque là tout va bien, je repéte à chaque fois la macro ci-dessous.


Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If UserForm3.ComboBox1 <> "" Then
UserForm3.ComboBox38.Value = UserForm3.ComboBox37.Value
End If
End Sub
------------------------------------------------------------------------
Private Sub ComboBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If UserForm3.ComboBox2 <> "" Then
UserForm3.ComboBox39.Value = UserForm3.ComboBox37.Value
End If
End Sub

Etc, etc pour chaque combo (fastidieux et risque d'erreur).

Y aurais t'il un moyen de faire une "boucle" qui évite de retaper à chaque fois l'instruction et/ou qui rende le code plus simple ?

D'avance merci de vos lumières.

GGPS58
 
Re : Action en sortie de Combo

Bonjour GGPS

fais peut être une recherche du coté des modules de classes, par contre je ne comprends pas trop le but final de ton code, d'alimenter des combobox par d'autrres so l'on sort d'une autre....

peut être qu'un fichier allégé et sans données confidentielles nous éclairerait un peu plus, afin de t'aider au mieux.

bon après midi
@+
 
Re : Action en sortie de Combo

Merci de ce conseil,
Le but de mon code c'est de pré-remplir des champs avec une valeur qui est déjà remplie.
Je m'explique :
J'ai une CB1(impaire) à laquelle j'affecte "A" et une CB2 (paire) à laquelle j'affecte "B"
J'ai ainsi plein de CB à remplir. Afin de simplifier, je souhaite préremplir les CB(paire) avec la valeur de CB2, dés lors que quelque chose a été rentré dans une des CB impaire.

GGPS58
 
Re : Action en sortie de Combo

Re,

Je ne suis pas sur d'avoir tout compris, mais regarde le fichier joint, exemple à base d'un module de classe, sur 6 combobox, nécessite que le nom de tes contrôles se termine par 3 chiffres de 001 à 999.

L'événement Exit n'étant pas disponible dans un module de classe, j'ai utilisé l'événement "change".

Attention si le code bogue, comme je désactive les procédures événementielles avec "Application.EnableEvents = False" il y aurait lieu de relancer la ligne de code ci dessous :

Code:
Application.EnableEvents = True

A tester et à adapter.

Bon courage
@+
 

Pièces jointes

Re : Action en sortie de Combo

GGPS58 à dit:
Merci de ce conseil,
Le but de mon code c'est de pré-remplir des champs avec une valeur qui est déjà remplie.
Je m'explique :
J'ai une CB1(impaire) à laquelle j'affecte "A" et une CB2 (paire) à laquelle j'affecte "B"
J'ai ainsi plein de CB à remplir. Afin de simplifier, je souhaite préremplir les CB(paire) avec la valeur de CB2, dés lors que quelque chose a été rentré dans une des CB impaire.

GGPS58
Salut
P'vez répéter la question 😕 ?!? Ton texte est incohérent par rapport à tes exemples
si je comprends bien
quand tu sort d'une CB impaire
tu testes si elle est vide
si ce n'est pas le cas, tu remplies l'intégralté des CB paire avec la valeur de CB2
ce qui revient à dire que quand tu sorts d'une combo, si une ou plusieurs combo impaires ne sont pas vides, tu remplis toutes les combo paires
Code:
Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If UserForm3.ComboBox1 <> "" Then
UserForm3.ComboBox38.Value = UserForm3.ComboBox37.Value
End If
End Sub
devient
Code:
Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Call Remplissage
End Sub
quelque soit la combo impaire (juste le nom de la combo qui évolue
au-dessus des macros, tu Crées ta macro remplissage
Code:
Sub Remplissage()
Dim X As Integer
Dim Y As Integer
For X = 1 To 100 Step 2
    If Me.Controls("ComboBox" & X) <> "" Then
        For Y = 2 To 100 Step 2
            Me.Controls("ComboBox" & Y) = me.ComboBox37
        Next Y
        Exit For
    End If
Next X
End Sub
Te reste plus qu'à copier les macros d'appel,

Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Call Remplissage
End Sub
Private Sub ComboBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Call Remplissage
End Sub

Avec un copier/coller judicieux (partie en rouge par exemple), te reste le numéro à écire
A+
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
273
Retour