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 10/12/2011, 17h14   #1
 
Homme Lionel Bellivier
Cabinet de gestion
Inscription : octobre 2011
Messages : 32
Détails du profil
Informations personnelles :
Nom : Homme Lionel Bellivier
Localisation : Tunisie

Informations professionnelles :
Activité : Cabinet de gestion
Secteur : Conseil

Informations forums :
Inscription : octobre 2011
Messages : 32
Points : -5
Points : -5
Par défaut exécution macro sous condition

Bonjour à tous,
je me suis fait un fichier excel et je butte sur un truc/

je voudrais qu'une macro ou instruction puisse exécuter ce qui suit :

si mois = 1............. éxécute macro 1
si mois = 2............. éxécute macro 2
etc. jusqu'à 12

Quelqu'un pourrait-il m'aider ?

Je vous remercie par avance,
Amicalement,
Lionel,
arthour973 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 10/12/2011, 18h03   #2
Modérateur
 
Avatar de AlainTech
 
Homme Alain Gerard
Consultant informatique
Inscription : mai 2005
Messages : 3 675
Détails du profil
Informations personnelles :
Nom : Homme Alain Gerard
Âge : 58
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique
Secteur : Finance

Informations forums :
Inscription : mai 2005
Messages : 3 675
Points : 7 665
Points : 7 665
Bonjour,

Tes 12 macros sont-elles très différentes ou ne diffèrent-elles que par quelques éléments?
__________________
N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
Pensez aussi à voter pour les réponses qui vous ont aidés.
------------
Je dois beaucoup de mes connaissances à mes erreurs!
AlainTech est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/12/2011, 18h10   #3
 
Homme Lionel Bellivier
Cabinet de gestion
Inscription : octobre 2011
Messages : 32
Détails du profil
Informations personnelles :
Nom : Homme Lionel Bellivier
Localisation : Tunisie

Informations professionnelles :
Activité : Cabinet de gestion
Secteur : Conseil

Informations forums :
Inscription : octobre 2011
Messages : 32
Points : -5
Points : -5
Par défaut Bonsoir

Merci de m'avoir fait une réponse pour avancer.
Non, elle sont toutes les mêmes.
La seule chose qui diffère est la suivante :
En fait, je voudrais copier deux mêmes colonnes d'une feuille ( les infos changent chaque mois ) sur des colonnes différentes (deux colonnes par mois ) d'une autre feuilles.

J'espère être clair.
Amicalement,
Lionel,
arthour973 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2011, 20h31   #4
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
Ben modifie ta macro et avec un paramètre numéro de mois ou en fonction du mois courant tu calcule la colonne de destination ...

montre nous ton code de copie et explique nous comment évolue tes colonnes de destinations en fonction du mois..
bbil est actuellement connecté   Envoyer un message privé Réponse avec citation 10
Vieux 11/12/2011, 10h05   #5
 
Homme Lionel Bellivier
Cabinet de gestion
Inscription : octobre 2011
Messages : 32
Détails du profil
Informations personnelles :
Nom : Homme Lionel Bellivier
Localisation : Tunisie

Informations professionnelles :
Activité : Cabinet de gestion
Secteur : Conseil

Informations forums :
Inscription : octobre 2011
Messages : 32
Points : -5
Points : -5
Par défaut Bonjour à tous

Merci pour vos réponses.
Je vais essayer de m’expliquer au mieux.
Le classeur est un suivi de présence du personnel avec une mise à jour « automatique » des congés payés.
Dans la feuille de base des saisies, il y a deux colonnes qui contiennent des formules permettant le calcul des congés « acquits » et des congés pris du mois traité.
Dans une autre feuille, je copie à l’aide de ma macro ces deux colonnes en « valeurs » uniquement.
Cependant, pour conserver « l’historique » mensuel des congés, chaque mois, je dois copier les colonnes dans cette feuille dans des colonnes différentes ( 2 par mois acquits et pris )
De plus, chaque mois de janvier, je copie également la colonne report N-1.
Voilà, en espérant être le plus clair possible.

Voici ci-dessous les codes de copie :

Pour le mois de janvier de chaque année
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
Sheets("matrice").Select
    Range("MJ10").Select
    ActiveCell.FormulaR1C1 = "=IF(MONTH(R7C3)=1,RC[-5],0)"
    Range("MJ10").Select
    Selection.Copy
    Range("MJ10:MJ500").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
 
    Range("MJ10:MJ500").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Selection.Replace What:="0", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Application.CutCopyMode = False
    Range("C7").Select
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
 
    Columns("MJ:MM").Select
    Selection.Copy
    Range("C7").Select
 
    Sheets("Synthèse").Select
    Range("P1").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False]
et pour les autres mois avec modification des colonnes de réception
Code :
1
2
3
4
5
6
7
8
9
10
11
Sheets("matrice").Select
    Columns("ML:MM").Select
    Selection.Copy
    Range("C7").Select
 
    Sheets("Synthèse").Select
    Range("T1").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
Merci pour votre aide.
Amicalement,
Lionel.
arthour973 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 10h15   #6
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,

déjà commence par modifier ton code pour le rendre plus lisible et supprimer tout ces select, section, activate..
à chaque utilisation de range, cells... précise la feuille concernée..


pour cela utilise des variables de type worksheet..

Code :
1
2
3
 
dim shMatrice as worksheet
set shMatrice = thisworkbook.Sheets("matrice")
et modifie ton code selon ce principe :
ceci :
Code :
1
2
3
Sheets("matrice").Select
    Range("MJ10").Select
    ActiveCell.FormulaR1C1 = "=IF(MONTH(R7C3)=1,RC[-5],0)"
devient :
Code :
1
2
 
shMatrice.Range("MJ10").ActiveCell.FormulaR1C1 = "=IF(MONTH(R7C3)=1,RC[-5],0)"
une fois cela effectué (pour le 1° mois...) , re-dit nous comment tu "calcule" la cellule destination, j'ai pas bien compris..
bbil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 10h29   #7
 
Homme Lionel Bellivier
Cabinet de gestion
Inscription : octobre 2011
Messages : 32
Détails du profil
Informations personnelles :
Nom : Homme Lionel Bellivier
Localisation : Tunisie

Informations professionnelles :
Activité : Cabinet de gestion
Secteur : Conseil

Informations forums :
Inscription : octobre 2011
Messages : 32
Points : -5
Points : -5
Par défaut Je ne sais pas faire

Je vais essayer mais je ne sais pas faire.
Voici les macros complètes. Pouvez-vous me les réécrire ?

Macro de janvier :

J'inclue une formule pour reprendre le solde des CP de l'année précédente à copier dans "synthèse".

ensuite, je copie en valeurs cette colonne de solde + mes deux colonnes pour le mois (acquits et pris )

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
Sub Synthèse01()
'
' Macro1 Synthèse01
'
 
'
    Sheets("Synthèse").Select
    ActiveSheet.Unprotect
 
    Sheets("matrice").Select
    ActiveSheet.Unprotect
 
    Columns("B:C").Select
    Selection.Copy
 
    Sheets("Synthèse").Select
    Columns("B:C").Select
    Range("B6").Activate
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Columns("B:C").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
 
    Sheets("matrice").Select
    Columns("MH:MH").Select
    Selection.Copy
    Columns("ME:ME").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("ME8").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "Cuml Av."
 
    Columns("LY:MH").Select
    Application.CutCopyMode = False
    Selection.Copy
 
    Sheets("Synthèse").Select
    Columns("E:N").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
 
    Sheets("matrice").Select
    Range("MJ10").Select
    ActiveCell.FormulaR1C1 = "=IF(MONTH(R7C3)=1,RC[-5],0)"
    Range("MJ10").Select
    Selection.Copy
    Range("MJ10:MJ500").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
 
    Range("MJ10:MJ500").Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Selection.Replace What:="0", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Application.CutCopyMode = False
    Range("C7").Select
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
 
    Columns("MJ:MM").Select
    Selection.Copy
    Range("C7").Select
 
    Sheets("Synthèse").Select
    Range("P1").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
 
    Columns("E:H").Select
    Selection.ColumnWidth = 7
    Columns("I:I").Select
    Selection.ColumnWidth = 0.5
    Columns("J:N").Select
    Selection.ColumnWidth = 7
    Columns("O").Select
    Selection.ColumnWidth = 0.5
    Columns("Q:AN").Select
    Selection.ColumnWidth = 4
    Columns("P").Activate
    Selection.ColumnWidth = 7
    Range("C7").Select
 
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
 
    Sheets("matrice").Select
    Range("C7").Select
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    ActiveWindow.LargeScroll ToRight:=-1
    Sheets("Procèdure").Select
End Sub
Voici la macro pour les mois suivants :

Je copie en valeurs mes deux colonnes pour le mois (acquits et pris )
avec changement des 2 colonnes de destination dans "synthèse" :

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
Sub Synthèse02()
'
' Macro1 Synthèse02
'
 
'
    Sheets("Synthèse").Select
    ActiveSheet.Unprotect
 
    Sheets("matrice").Select
    ActiveSheet.Unprotect
 
    Columns("B:C").Select
    Selection.Copy
 
    Sheets("Synthèse").Select
    Columns("B:C").Select
    Range("B6").Activate
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Columns("B:C").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
 
    Sheets("matrice").Select
    Columns("MH:MH").Select
    Selection.Copy
    Columns("ME:ME").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("ME8").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "Cuml Av."
 
    Columns("LY:MH").Select
    Application.CutCopyMode = False
    Selection.Copy
 
    Sheets("Synthèse").Select
    Columns("E:N").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
 
    Sheets("matrice").Select
    Columns("ML:MM").Select
    Selection.Copy
    Range("C7").Select
 
    Sheets("Synthèse").Select
    Range("T1").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
 
    Columns("E:H").Select
    Selection.ColumnWidth = 7
    Columns("I:I").Select
    Selection.ColumnWidth = 0.5
    Columns("J:N").Select
    Selection.ColumnWidth = 7
    Columns("O").Select
    Selection.ColumnWidth = 0.5
    Columns("Q:AN").Select
    Selection.ColumnWidth = 4
    Columns("P").Activate
    Selection.ColumnWidth = 7
    Range("C7").Select
 
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
 
    Sheets("matrice").Select
    Range("C7").Select
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    ActiveWindow.LargeScroll ToRight:=-1
    Sheets("Procèdure").Select

Merci pour votre aide,
Amicalement,
Lionel,
arthour973 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2011, 10h37   #8
 
Homme Lionel Bellivier
Cabinet de gestion
Inscription : octobre 2011
Messages : 32
Détails du profil
Informations personnelles :
Nom : Homme Lionel Bellivier
Localisation : Tunisie

Informations professionnelles :
Activité : Cabinet de gestion
Secteur : Conseil

Informations forums :
Inscription : octobre 2011
Messages : 32
Points : -5
Points : -5
Par défaut J'ai oublié de vous dire

Voir pour macro janvier ligne 46 à 75
et pour l'autre voir ligne 46 à 56
Encore merci
arthour973 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h31.


 
 
 
 
Partenaires

Hébergement Web