|
Publicité | ||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Date d'inscription: mai 2009
Messages: 24
|
Bonjour,
J'ai deja cree les 2 liste roulantes (type Combobox), je ne sais pas comment faire pour que le macro ne realise qu'apres la selection de 2e combobox Par exemple, 2 liste roulantes Select an activity (1er) and Select a Country (2e). Je voudrais que le macro va lancer seulement apres le choix du country. Une autre question, comme j'ai deja ecrit des codes pour le choix des Activités, je veux que apres le choix de Country, le macro va realiser tous ces 2 Sub (c'est a dire va remplir exactemenet les chiffres de l'activite et pays choisi), comment je peux faire????? Je pense a ajouter le code "Call Activities" dans le Sub pour Country. Je ne sais pas si on peut faire comme ca ou non. Voila les codes que j'ai ecrit, pour le code pour Activite, ca fonctionne bien mais pour Country, je pense qu'il y problemes, ca prend bc de temps et ca ne remplit pas exactement les chiffres des pays. Code :
Sub PowerActivities() act = Worksheets("Data Power").Cells(3, 2).Value If act = 1 Then Exit Sub Else 'CCO For Column = 5 To 7 For Row1 = 47 To 76 Select Case Column Case 5 Worksheets("Data Act").Cells(Row1, (act - 2) * 3 + Column).Copy Worksheets("Power Summary").Cells(Row1 - 34, 4).PasteSpecial (xlPasteValues) Case 6 Worksheets("Data Act").Cells(Row1, (act - 2) * 3 + Column).Copy Worksheets("Power Summary").Cells(Row1 - 34, 8).PasteSpecial (xlPasteValues) Case 7 Worksheets("Data Act").Cells(Row1, (act - 2) * 3 + Column).Copy Worksheets("Power Summary").Cells(Row1 - 34, 12).PasteSpecial (xlPasteValues) End Select Next Row1 Next Column 'Conso For Column = 5 To 7 For Row2 = 12 To 41 Select Case Column Case 5 Worksheets("Data Act").Cells(Row2, (act - 2) * 3 + Column).Copy Worksheets("Power Summary").Cells(Row2 + 1, 16).PasteSpecial (xlPasteValues) Case 6 Worksheets("Data Act").Cells(Row2, (act - 2) * 3 + Column).Copy Worksheets("Power Summary").Cells(Row2 + 1, 20).PasteSpecial (xlPasteValues) Case 7 Worksheets("Data Act").Cells(Row2, (act - 2) * 3 + Column).Copy Worksheets("Power Summary").Cells(Row2 + 1, 24).PasteSpecial (xlPasteValues) End Select Next Row2 Next Column End Sub Sub Geography() Geo = Worksheets("Data Power").Cells(7, 2).Value Row = Geo + 2164 If Geo = 0 Then Exit Sub Else For A = Row To Row + 30 Call PowerActivities Next A End Sub Merci beaucoup |
|
|
|
|
|
#2 |
|
Inactif(ve)
![]() Date d'inscription: juin 2007
Localisation: Belqique
Messages: 2 074
|
Bonjour,
Je n'ai pas examiner tes macros en profondeur, je suppose qu'elle fonctionnent !! Juste une remarque... Ne pas employer de mot réserver tel que Column pour des noms de variable, ça risque de poser problème, emploi plutôt des mots comme Col pour colonne et Lig pour ligne. Concernant ta question.. tu met A2 et A6 avec 1 (pour le démarrage). tu colle le code ci-dessous dans le module de ta feuille "Data Power" ... Code :
Option Explicit Dim ValideActi As Boolean Dim NoAction As Boolean Private Sub Worksheet_Change(ByVal Target As Range) If NoAction Then Exit Sub If Target.Address = "$A$2" Then If Target > 2 And Target < 46 Then ValideActi = True ElseIf Target.Address = "$A$6" Then If Not ValideActi Then MsgBox "Vous devez d'abord sélectionner une activité" Exit Sub End If If Target > 6 And Target < 85 Then '-------------------------- 'ICI TU APPEL TES PROCEDURES '-------------------------- ValideActi = False NoAction = True Range("A2") = 1 Range("A6") = 1 NoAction = False End If End If End Sub Edit, Comme j'ai vu en premier ta feuille Power Data avec la possibilité de faire des sélections je n'ai pas regarder les autres feuilles. Je viens de trouver tes 2 combos, je refait un autre code et te le communique. J'ai du remplacer tes comboBox par des combo de la boite à outils (tu avais mis des combo "Formulaires" qu'ont ne peu intercepter) Je les ai quand même laisser mais tu peu les supprimer. Je n'ai toujours rien compris a tes data, j'ai juste un peu optimiser tes macros. Tu dis... A+ Dernière modification par AlainTech ; 06/07/2009 à 06h26. Motif: Fusion de 2 messages |
|
|
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() Date d'inscription: mai 2009
Messages: 24
|
Merci beaucoup
Je suis en train de lire tes codes, c'est un peu complique pour moi car je suis vraiment debutant en macro Une autre question c'est quoi la difference entre Combobox et Combo"Formulaire", Combobox est mieux ????? Parce que je trouve pour moi, le Combo "Formulaire" est plus facile, je peux changer plus vite En fait, j'ai deja fait 2 fois le comboBox, mais je ne comprends pas pourquoi une fois je n'arrive pas a remplacer ListfillRange = Une liste que j'ai cree. Vous pouvez me renseigner? Merci beaucoup |
|
|
|
|
|
#4 |
|
Inactif(ve)
![]() Date d'inscription: juin 2007
Localisation: Belqique
Messages: 2 074
|
Il y a deux boites à outils, la boite avec les outils "Formulaire" et la boite à outils avec les outils ActiveX, ces dernier sont beaucoup plus performant quand ont veux travailler par macros. (beaucoup plus de possibilités)
Pour voir la différence... >> Affichage >> Barre d'outils >> Boite à outils contrôles .. Tu coche >> Affichage >> Barre d'outils >> Formulaires.. Tu coche Tu vois que les 2 ont des outils plus ou moins similaires. Avec les combo Formulaire tu peu juste lui affecter une macros ! Avec le combo Contrôle tu a les événement qui sont disponnibles, savoir si ont clic dessus.. si ont promène la souris, etc.. Tu peu aussi le commander, l'obliger à sélectionner une ligne, changer sont texte etc.. |
|
|
|
|
|
![]() |
||
[XL-2003] Comment relier les 2 liste roulantes (Combobox)
|
||
| Outils de la discussion | |
|
|