Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1667 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Macro excel

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Macro excel

n°2117399
debutVBA
Posté le 19-12-2011 à 23:57:04  profilanswer
 

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

mood
Publicité
Posté le 19-12-2011 à 23:57:04  profilanswer
 

n°2118524
woulf
Lurker intensif
Posté le 28-12-2011 à 10:17:44  profilanswer
 

Personnellement ligne 46 et 70 je ne vois pas comment tu quitte la boucle, il faudrait ajouter un exit for dans le else non?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Macro excel

 

Sujets relatifs
Macro pour copier le contenu d'un document excel vers un autreMacro excel supprimer une ligne sous conditions
comparaison et copie de cellules excel avec macroVB Macro Importer des infos de tous mes docs excel dans un doc excel
[RESOLU]Macro excel modification hypertexteOptimiser une macro de comparaison de feuilles Excel
Gestion de document Word via macro VBA excelMacro sous excel
besoin d aide macro Excel[VBA-Excel] Protéger une partie de la feuille par Macro
Plus de sujets relatifs à : Macro excel


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR