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 22/10/2011, 03h16   #1
Invité de passage
 
Homme Claude
Chargé d'affaire
Inscription : octobre 2011
Messages : 26
Détails du profil
Informations personnelles :
Nom : Homme Claude
Localisation : Canada

Informations professionnelles :
Activité : Chargé d'affaire
Secteur : Industrie

Informations forums :
Inscription : octobre 2011
Messages : 26
Points : 3
Points : 3
Par défaut Comment activer plusieurs sub par un bouton

Bonjour, Est-ce que quelqu'un pourrait me dire comment on peut activer plusieurs sub une à la suite de l'autre par un simple click sur un bouton. Je m'explique, j'essais de faire un programme qui suite à une série de choix fait dans différentes listes déroulantes qui sont dans différentes cellulles, l'utilisateur, en appuyant sur le bouton active les sub associées aux différentes cellulles.
Claude_B est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/10/2011, 07h06   #2
Responsable Visual Basic
 
Avatar de bbil
 
Inscription : juin 2003
Messages : 11 773
Détails du profil
Informations personnelles :
Âge : 45
Localisation : France, Ariège (Midi Pyrénées)

Informations forums :
Inscription : juin 2003
Messages : 11 773
Points : 16 849
Points : 16 849
Envoyer un message via Skype™ à bbil
bonjour ..

"Active" ? ... exécute ?


Code :
1
2
3
4
5
6
7
sub CommandButton1_Click
 
   MaSub1 'Exécute "MaSub1"
   MaSub2 'Exécute "MaSub2"
   MaSub3 'Exécute "MaSub3"
 
End sub
bbil est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/10/2011, 02h01   #3
Invité de passage
 
Homme Claude
Chargé d'affaire
Inscription : octobre 2011
Messages : 26
Détails du profil
Informations personnelles :
Nom : Homme Claude
Localisation : Canada

Informations professionnelles :
Activité : Chargé d'affaire
Secteur : Industrie

Informations forums :
Inscription : octobre 2011
Messages : 26
Points : 3
Points : 3
Le problème est que la première sub s'exécute, mais elle arrête à la fin et la deuxième ne s'exécute pas. À noter que les sub sont enregistrées par l'enregistreur de macro

******************************************

Code :
1
2
3
4
5
Private Sub CommandButton1_Click()
 
NET4 'execute "NET4"
carte_principale 'execute "carte_principale"
End Sub
1ière sub

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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
Sub NET4()
'
' NET4 Macro
 
If Range("B6") = "NET-4" Then
    Sheets("Cabinet").Select
 
Range("P8:P11").Select
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Selection.Merge
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = True
        .Orientation = 90
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = True
    End With
    ActiveCell.FormulaR1C1 = "NET-4"
    With ActiveCell.Characters(Start:=1, Length:=5).Font
        .Name = "Arial"
        .FontStyle = "Regular"
        .Size = 9
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
    End With
    Range("C8").Select
 
Else
 
If Range("B6") = "Na" Then
    Sheets("Cabinet").Select
    Range("P8:P11").Select
    Selection.ClearContents
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = True
    End With
    Selection.UnMerge
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    Selection.Borders(xlEdgeLeft).LineStyle = xlNone
    Selection.Borders(xlEdgeTop).LineStyle = xlNone
    Selection.Borders(xlEdgeBottom).LineStyle = xlNone
    Selection.Borders(xlEdgeRight).LineStyle = xlNone
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
 
    Range("a1").Select
    End If
    End If
 
End Sub
2e sub

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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
Sub NET4()
'
' NET4 Macro
 
If Range("B6") = "NET-4" Then
    Sheets("Cabinet").Select
 
Range("P8:P11").Select
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With
    Selection.Merge
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = True
        .Orientation = 90
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = True
    End With
    ActiveCell.FormulaR1C1 = "NET-4"
    With ActiveCell.Characters(Start:=1, Length:=5).Font
        .Name = "Arial"
        .FontStyle = "Regular"
        .Size = 9
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
    End With
    Range("C8").Select
 
Else
 
If Range("B6") = "Na" Then
    Sheets("Cabinet").Select
    Range("P8:P11").Select
    Selection.ClearContents
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = True
    End With
    Selection.UnMerge
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    Selection.Borders(xlEdgeLeft).LineStyle = xlNone
    Selection.Borders(xlEdgeTop).LineStyle = xlNone
    Selection.Borders(xlEdgeBottom).LineStyle = xlNone
    Selection.Borders(xlEdgeRight).LineStyle = xlNone
    Selection.Borders(xlInsideVertical).LineStyle = xlNone
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
 
    Range("a1").Select
    End If
    End If
 
End Sub
Claude_B est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2011, 15h44   #4
Nouveau Membre du Club
 
Homme Slim Soltani
Consultant informatique
Inscription : avril 2011
Messages : 28
Détails du profil
Informations personnelles :
Nom : Homme Slim Soltani
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Consultant informatique

Informations forums :
Inscription : avril 2011
Messages : 28
Points : 26
Points : 26
Les Sub sont ils sur la même feuille de calcul ?

Par contre, tu as copié deux fois le même sub.
ssoltani est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2011, 22h19   #5
Invité de passage
 
Homme Claude
Chargé d'affaire
Inscription : octobre 2011
Messages : 26
Détails du profil
Informations personnelles :
Nom : Homme Claude
Localisation : Canada

Informations professionnelles :
Activité : Chargé d'affaire
Secteur : Industrie

Informations forums :
Inscription : octobre 2011
Messages : 26
Points : 3
Points : 3
Bonjour,

Les sub sont sur la même feuille de calcul, mais elles agissent sur 2 feuilles différentes. Autrement dit, les listes déroulantes sont sur la feuille 1, mais les sub agissent sur la feuille 2. Et oui en effet j'ai malheureusement copié 2 fois la même sub. La 2e sub est identique mais tracera les lignes différemment. Comme je l'ai dit, il n'y a que la première sub qui 'exécute suite a l'activation du bouton.

Merci de ton aide
Claude_B est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/10/2011, 22h30   #6
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Déjà évite les Select, tu auras moins de désagréments
au lieu de
Code :
1
2
3
Sheets(X).select
Range(Y).select
Selection.interior.colorindex=3
fais comme ceci
Code :
Sheets(X).Range(Y).interior.colorindex=3
Tu auras le résultat voulu en restant sur place.
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 25/10/2011, 23h49   #7
Invité de passage
 
Homme Claude
Chargé d'affaire
Inscription : octobre 2011
Messages : 26
Détails du profil
Informations personnelles :
Nom : Homme Claude
Localisation : Canada

Informations professionnelles :
Activité : Chargé d'affaire
Secteur : Industrie

Informations forums :
Inscription : octobre 2011
Messages : 26
Points : 3
Points : 3
Ok pour les select, mais comment faire pour que toutes les sub s'activent une après l'autre lorsque le bouton a été activé?
Claude_B est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2011, 00h01   #8
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
1. Enlève toutes les select et préfixe chaque Range par sa feuille mère comme ceci
Code :
Worksheets(X).Range(Y)...
ou
Code :
1
2
3
4
5
With Worksheets(X) 'N'oublie pas les points juste avant les Range
   .Range(Y).HorizontalAlignment=xlcenter
   .Range(Z).Interior.Color=3
'....
End With
2. Utilise le code donné bar bbil en #2
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/10/2011, 00h14   #9
Invité de passage
 
Homme Claude
Chargé d'affaire
Inscription : octobre 2011
Messages : 26
Détails du profil
Informations personnelles :
Nom : Homme Claude
Localisation : Canada

Informations professionnelles :
Activité : Chargé d'affaire
Secteur : Industrie

Informations forums :
Inscription : octobre 2011
Messages : 26
Points : 3
Points : 3
J'ai essayer le code en #2, mais il n<y a que la première sub qui s'exécute
Claude_B est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2011, 00h21   #10
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Et tu ne nous montre pas le code des tes Sub...
Comment en juger?
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/10/2011, 00h29   #11
Invité de passage
 
Homme Claude
Chargé d'affaire
Inscription : octobre 2011
Messages : 26
Détails du profil
Informations personnelles :
Nom : Homme Claude
Localisation : Canada

Informations professionnelles :
Activité : Chargé d'affaire
Secteur : Industrie

Informations forums :
Inscription : octobre 2011
Messages : 26
Points : 3
Points : 3
Les codes sont indiqués en #3. J'ai mis le code pour le bouton et le code pour 2 fonctions qui doivent être activées.
Claude_B est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2011, 07h04   #12
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 692
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 692
Points : 1 443
Points : 1 443
Bonjour,

Citation:
Les codes sont indiqués en #3. J'ai mis le code pour le bouton et le code pour 2 fonctions qui doivent être activées.
Non, en #3, tu as mis le code pour le bouton et 2 fois la procédure NET4().

Cette observation avait déjà été faite par ssoltani.
Elle a été reprise par mercatog.
Jamais 2 sans 3 .

Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2011, 09h56   #13
Membre Expert
 
Avatar de Daranc
 
Inscription : janvier 2007
Messages : 1 166
Détails du profil
Informations forums :
Inscription : janvier 2007
Messages : 1 166
Points : 1 244
Points : 1 244
tes sub en fait ne sont qu'un seul programme?
la un s'execute et lorsqu'elle est finie le deux doit s'executer
si oui à la fin de ta première sub
Code :
1
2
3
4
5
6
7
8
9
10
sub premiere()
code
 
code
deuxieme
end sub
sub deuxieme()
 
code
end sub
__________________
Cordialement
Daranc
Daranc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/10/2011, 11h40   #14
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
Citation:
Les codes sont indiqués en #3. J'ai mis le code pour le bouton et le code pour 2 fonctions qui doivent être activées.
Bon ce que tu ne veux pas comprendre c'est tes codes menstionnés en #3 sont plein de Select. (je parle aussi des feuilles) et de ce fait tu ne saura qu'hypothétiquement quoi tu as sélectionné en dernier et quel est la feuille active à telle ou telle ligne du code.

Je t'avais suggéré d'abord de supprimer tous les Select, selection.. et de re essayer avec l'organisation donnée à juste raison par bbil au #2.

Ton code s'exécute jusqu'à la fin mais peut être sur la mauvaise feuille à cause justement de tes Select à tort et à travers et de tes range sans mère.

Dans ton code
Code :
If Range("B6") = "NET-4" Then
Ceci teste la valeur de B6 de ta feuille active, mais laquelle???
alors que
Code :
If Worksheets("Feuil1").Range("B6") = "NET-4" Then
teste B6 de Feuil1 indépendamment de la feuille active.
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 20
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h47.


 
 
 
 
Partenaires

Hébergement Web