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 20/12/2011, 10h07   #1
Candidat au titre de Membre du Club
 
Homme
Technicien réseau
Inscription : décembre 2011
Messages : 91
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Technicien réseau
Secteur : Service public

Informations forums :
Inscription : décembre 2011
Messages : 91
Points : 13
Points : 13
Par défaut Macros Vba Excel

Bonjour à tous et a toutes =)

Etant débutant en VBA,je me permets de venir solliciter les "ames charitables " lol

En effet j'essaie de faire une petite macro dont l'énoncé est le suivant :




il y a un fichier ou il y a 11 colonnes ou des donnees sont deja saisies pour chque ligne
Col 1 NumeroIdentifiant
Col 2 Lieu
Col 3 S/N
Col 4 Nom
Col 5 etat
Col 6 Dossier
Col 7 NumeroRef
Col 8 Date/HeureCreationDossier
Col 9 Date/HeureAppelIntervenant
Col 10 Date/Heure Interventiontechnicien
Col 11 Date/HeureClôture



A partir de ces données d’entrée, des pénalités sont calculées mensuellement. On ajoute aux pénalités individuelles (disponibilité d’un équipement) les pénalités globales (disponibilité du parc informatique dans son ensemble). Voici les éléments pour calculer ces différentes valeurs :

Taux de disponibilité par machine 95%
=>Pénalités associés
Indisponibilité > = à 1jours ou 10heures = 10€/ machine
Indisponibilité entre 1 et 2 jours => 10€ +18 € = 28€ /machine
Indisponibilité entre 2 et 3jours => 10€ +18€ + 25€ =53€/ machine
Indisponibilité supérieur à 3jours => 53€ + 25€/jour supplémentaire / machine

Taux de disponibilité du parc 98%
=>Pénalités associés
entre 97 et 97.99% 1500€
entre 96 et 96.99% 3000€
entre 0 et 95.99% 4500€



Voici le code que j'ai commence a faire



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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
 
 
1.Sub reparations()
2.
3.   
4.            'On selectionne le classeur et on active la feuille
5.            Dim classeur As Workbook
6.            Set classeur = Workbooks("PenalitesMois.xlsm" ) 'ici nom du classeur saisit en dur
7.            Dim maFeuille As Worksheet
8.            Set maFeuille = classeur.Worksheets(1) 'on suppose que les donnees sont sur la feuille 1
9.            classeur.Activate
10.            maFeuille.Activate
11.           
12.            'Je suppose que la feuille possede deja des donnees
13.            ' et d'apres le cahier des charges soit 11 colonnes
14.            'et j'ai suppose egalement que les dates sont ordonnees.
15.           
16.           
17.             
18.           Dim moisACalcul As Byte
19.           moisACalcul = Application.InputBox("Saisissez le mois dont vous souhaitez y calculer les pénalités (de 1 à 12) " )
20.             
21.          'Faire une gestion d'erreur ou cas ou ce n'est pas un mois entre 1 et 12
22.           
23.           Call CalculPenaliteQuelMois(moisACalcul)
24.           
25.           
26. 
27.End Sub
28.
29.
30.Function CalculPenaliteQuelMois(MoisACalculer)
31.
32.
33.
34.'cette boucle va permettre de trouver la premiere ligne du mois duquel on souhaite y calculer les penalites.
35.'pour 2 jusqu'a la derniere ligne ou il y a des donnees d'ecrites
36.For ligne = 2 To Range("A" & Rows.Count).End(xlUp).Row
37.
38.'si le mois de la cellule recuperer est different du mois ou il faut calculer les penalites
39.If Month(Cells(ligne, 9)) <> MoisACaluler Then
40.'on fait un compteur
41.compteur = compteur + 1
42.
43.'le compteur va m'indiquer a quelle ligne le mois a calculer commence
44.Else
45.
46.'ici on force la sortie de la boucle et on recupere Compteur
47.
48.End If
49.
50.
51.
52.Next
53.
54.
55.ActiveRow.Select = compteur ' la ligne active devient la ligne ou on a trouve le mois a calculer
56.ActiveRow.Activate = compteur
57.
58.
59.
60.'Cette boucle me servir a indiquer le nombre de ligne du mois duquel on souhaite y calculer les pénalités.
61.For i = compteur To Range("A" & Rows.Count).End(xlUp).Row
62.
63.If Month(Cells(ligne, 9)) = MoisACaluler Then
64.compteur2 = compteur2 + 1
65.'ce compteur me comptera le nombre de ligne ou il y a le mois dont on doit calculer les penalites.
66.
67.
68.Else
69.
70.' ici on force la sortie de la boucle et on recupere Compteur2
71.
72.End If
73.
74.
75.Next
76.
77.
78.For i = compteur To compteur2
79.
80.'on fait le calcul du mois a calculer.
81.'on recupere les nombres de jours ouvres entre deux dates qui correspond a la penalite d'une intervention.
82.
83.
84.Dim nbJoursOuvres As Long
85.
86.'va m'indiquer le nombre de jour entre la date appel xerox et la cloture du dossier.
87.nbJoursOuvres = NB.JOURS.OUVRES((Cells(compteur, 9).Value))
88. 
89.
90.'  Indisponibilité > = à 1jours ou 10heures = 10€/ machine
91.If nbJoursOuvres = 1 Then
92.PenaliteDeCeDossier = PenaliteDeCeDossier + 10
93.
94.
95.' Indisponibilité entre 1 et 2 jours => 10€ +18 € = 28€ /machine
96.ElseIf nbJoursOuvres = 2 Then
97.PenaliteDeCeDossier = PenaliteDeCeDossier + 10 + 18
98.
99.
100.' Indisponibilité entre 2  et  3jours => 10€ +18€ + 25€  =53€/ machine
101.ElseIf nbJoursOuvres = 3 Then
102.PenaliteDeCeDossier = PenaliteDeCeDossier + 10 + 18 + 25
103.
104.
105.
106.' Indisponibilité supérieur à 3jours  => 53€ + 25€/jour supplémentaire / machine
107.ElseIf nbJoursOuvres > 3 Then
108.JoursSupplementaires = nbJoursOuvres - 4
109.
110.PenaliteDeCeDossier = PenaliteDeCeDossier + 53 + 25 * JoursSupplementaires
111.
112.
113.End If
114.
115.
116.SommePenaliteDuMois = SommePenaliteDuMois + PenaliteDeCeDossier
117.
118.Next
119.
120.MsgBox "la penalite du mois duquel on a souhaite calculer la penalite est de " & SommePenaliteDuMois
121.
122.
123.
124.
125.End Function

N'ayant pas le fichier qui contient les données a tester et étant vraiment pas TIP /TOP programmeur je viens demander de l'aide..

A savoir si le code répond un peu a l'énoncé ?si il y a d'éventuel correction ou critiques ?Je suis preneur de toutes infos qui pourrait me faire avancer..

Merci a tous et a toutes =)..
debutVBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2011, 14h13   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

Poste quelques lignes d'exemple avec le résultat que tu souhaites obtenir.
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 12h46   #3
Candidat au titre de Membre du Club
 
Homme
Technicien réseau
Inscription : décembre 2011
Messages : 91
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Technicien réseau
Secteur : Service public

Informations forums :
Inscription : décembre 2011
Messages : 91
Points : 13
Points : 13
Par défaut Suite reponse

Bonjour,

Alors pour etre plus précis,il y a un tableau d'intervention.

Chaque intervention a une date a laquelle a ete cree et une date a laquelle a ete cloturé

ensuite pour chaque intervention il faut voir si elles sont dans un des cas ci dessous
=>Pénalités associés
Indisponibilité > = à 1jours ou 10heures = 10€/ machine
Indisponibilité entre 1 et 2 jours => 10€ +18 € = 28€ /machine
Indisponibilité entre 2 et 3jours => 10€ +18€ + 25€ =53€/ machine
Indisponibilité supérieur à 3jours => 53€ + 25€/jour supplémentaire / machine

Le but etant de faire le total des pénalités pour chaque mois

si par exemple il y a eu 5 interventions pour le mois de Novembre
pour inter 1
inter 2 ==>2 jours indispo soit 28
inter 3 ==>3 jour indispo 53
inter 4 =>1 jours indispo 10
inter 5 ==>resolu en tant

Donc pour le mois de novembre ca doit m'afficher 91 euros de penalites soit (28 + 53 + 10 .

En espérant avoir été plus explicite


Merci
debutVBA est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 12h56   #4
Expert Confirmé
 
Avatar de Godzestla
 
Homme
Chercheur de bonheur
Inscription : août 2007
Messages : 2 257
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de bonheur
Secteur : Industrie

Informations forums :
Inscription : août 2007
Messages : 2 257
Points : 2 980
Points : 2 980
Bonjour,

je pense que pour ton calcul des pénalités individuelles tu n'as pas besoin de VBA mais juste de formules excel.

J'ignore comment tu vas gérer '>1 jour ou 10 heures' car que vaut 1 jour.

J'ignore comment tu vas calculer ton taux d'indisponibilité de parc, puisque ton parc n'est pas défini.
__________________
(\ _ /) Cordialement G@dz
(='.'=)

(")-(") Vous avez des neurones. Sollicitez-les. . Si vous êtes aidé, pensez à Voter.
Godzestla est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2011, 13h06   #5
Candidat au titre de Membre du Club
 
Homme
Technicien réseau
Inscription : décembre 2011
Messages : 91
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Technicien réseau
Secteur : Service public

Informations forums :
Inscription : décembre 2011
Messages : 91
Points : 13
Points : 13
Par défaut Suite reponse

bonjour,

bah je suis en train de faire une fonction mais vu que j'ai pas accès aux données et que je suis Novice j'arrive pas trop à juger la qualité de mon code a savoir si celui répond à la question? si il y a éventuellement des erreurs "Flagrantes" que j'ai surement pas vu ? ou d'éventuels critiques afin peut etre d'enrichir ou d'embelir cela


Merci
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
 
 
 
.Function CalculPenaliteQuelMois(MoisACalculer)
31.
32.
33.
34.'cette boucle va permettre de trouver la premiere ligne du mois duquel on souhaite y calculer les penalites.
35.'pour 2 jusqu'a la derniere ligne ou il y a des donnees d'ecrites
36.For ligne = 2 To Range("A" & Rows.Count).End(xlUp).Row
37.
38.'si le mois de la cellule recuperer est different du mois ou il faut calculer les penalites
39.If Month(Cells(ligne, 9)) <> MoisACaluler Then
40.'on fait un compteur
41.compteur = compteur + 1
42.
43.'le compteur va m'indiquer a quelle ligne le mois a calculer commence
44.Else
45.
46.'ici on force la sortie de la boucle et on recupere Compteur
47.
48.End If
49.
50.
51.
52.Next
53.
54.
55.ActiveRow.Select = compteur ' la ligne active devient la ligne ou on a trouve le mois a calculer
56.ActiveRow.Activate = compteur
57.
58.
59.
60.'Cette boucle me servir a indiquer le nombre de ligne du mois duquel on souhaite y calculer les pénalités.
61.For i = compteur To Range("A" & Rows.Count).End(xlUp).Row
62.
63.If Month(Cells(ligne, 9)) = MoisACaluler Then
64.compteur2 = compteur2 + 1
65.'ce compteur me comptera le nombre de ligne ou il y a le mois dont on doit calculer les penalites.
66.
67.
68.Else
69.
70.' ici on force la sortie de la boucle et on recupere Compteur2
71.
72.End If
73.
74.
75.Next
76.
77.
78.For i = compteur To compteur2
79.
80.'on fait le calcul du mois a calculer.
81.'on recupere les nombres de jours ouvres entre deux dates qui correspond a la penalite d'une intervention.
82.
83.
84.Dim nbJoursOuvres As Long
85.
86.'va m'indiquer le nombre de jour entre la date appel xerox et la cloture du dossier.
87.nbJoursOuvres = NB.JOURS.OUVRES((Cells(compteur, 9).Value))
88. 
89.
90.'  Indisponibilité > = à 1jours ou 10heures = 10€/ machine
91.If nbJoursOuvres = 1 Then
92.PenaliteDeCeDossier = PenaliteDeCeDossier + 10
93.
94.
95.' Indisponibilité entre 1 et 2 jours => 10€ +18 € = 28€ /machine
96.ElseIf nbJoursOuvres = 2 Then
97.PenaliteDeCeDossier = PenaliteDeCeDossier + 10 + 18
98.
99.
100.' Indisponibilité entre 2  et  3jours => 10€ +18€ + 25€  =53€/ machine
101.ElseIf nbJoursOuvres = 3 Then
102.PenaliteDeCeDossier = PenaliteDeCeDossier + 10 + 18 + 25
103.
104.
105.
106.' Indisponibilité supérieur à 3jours  => 53€ + 25€/jour supplémentaire / machine
107.ElseIf nbJoursOuvres > 3 Then
108.JoursSupplementaires = nbJoursOuvres - 4
109.
110.PenaliteDeCeDossier = PenaliteDeCeDossier + 53 + 25 * JoursSupplementaires
111.
112.
113.End If
114.
115.
116.SommePenaliteDuMois = SommePenaliteDuMois + PenaliteDeCeDossier
117.
118.Next
119.
120.MsgBox "la penalite du mois duquel on a souhaite calculer la penalite est de " & SommePenaliteDuMois
121.
122.
123.
124.
125.End Function
debutVBA 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 20h27.


 
 
 
 
Partenaires

Hébergement Web