Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
Vieux 01/07/2009, 16h22   #1
Invité de passage
 
Inscription : mai 2009
Messages : 24
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 24
Points : 3
Points : 3
Par défaut Comment relier les 2 liste roulantes (Combobox)

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 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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
Est - ce que quelqu'un peut m'aider???

Merci beaucoup
Fichiers attachés
Type de fichier : zip Copy of Power Hierarchical - v7 HIEN.zip (157,6 Ko, 5 affichages)
violet2410 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2009, 11h22   #2
Inactif
 
Inscription : juin 2007
Messages : 2 055
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 2 055
Points : 2 023
Points : 2 023
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 :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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
A+
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+
Fichiers attachés
Type de fichier : zip Change.zip (164,6 Ko, 14 affichages)

Dernière modification par AlainTech ; 06/07/2009 à 06h26. Motif: Fusion de 2 messages
LeForestier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2009, 16h11   #3
Invité de passage
 
Inscription : mai 2009
Messages : 24
Détails du profil
Informations forums :
Inscription : mai 2009
Messages : 24
Points : 3
Points : 3
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
violet2410 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/07/2009, 16h40   #4
Inactif
 
Inscription : juin 2007
Messages : 2 055
Détails du profil
Informations forums :
Inscription : juin 2007
Messages : 2 055
Points : 2 023
Points : 2 023
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..
LeForestier est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +1. Il est actuellement 14h10.


 
 
 
 
Partenaires

Hébergement Web