Mettre une variable sur l'heure dans un code VBA

phanoulevoyou Messages postés 11 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 28 octobre 2012 - 16 oct. 2012 à 17:44
phanoulevoyou Messages postés 11 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 28 octobre 2012 - 28 oct. 2012 à 14:42
Bonjour à tous,

Voici mon problème,
dans un fichier excel je récupère des données par rapport à un rythme de travail, Ex: GJ pour travail en 12h de jour, GN pour un travail en 12h de nuit etc. Actuellement tout fonctionne, mais je voudrais perfectionner la chose. En effet certain site pouvant utiliser ce fichier excel ne commence pas tous à la même heure, ça peut être 7h00 comme 7h30 ou 8h00... Donc le fichier n'est pas adpaté pour eux et je souhaite que l'heure soit modifiable facilement. Actuellement les heures de début et de fin sont dans la macro utilisé en variable pour Heure1 (début) et Heure2 (Fin). Heure1 #7:30:00 AM# et Heure2 # 7:30:00 PM#... Cette variable je la retrouve de nombreuses fois dans mon code VBA car elle me sert à remplir un tableau qui peut être pour Un mois, Deux mois, pour les heures jours, nuit voir les 2. Bref si je dois modifier l'heure dans ma macro je dois faire défiler tout mon code et chercher minutieusement Heure1 et Heure2 et modifier chacun des paramètres...
Alors comment puis je faire...
je vous ajoute un petit exemple de code qui pourra être peut être plus clair...(Attention le code n'est pas en entier...)

Heure1 = #7:30:00 AM#
Heure2 = #7:30:00 PM#
ElseIf cbxSPVRubrique.Value = "Gardes de nuit" Then
bdr.Sheets("Feuille de vacations").Range("B4").Value = "GARDES DE NUIT"
bdr.Sheets("Feuille de vacations").Range("A4").Value = "383 N"
Valeur1 = "GN"
Valeur2 = "AG"
Valeur3 = "SG"
Valeur4 = "FG"
Jour = 1
Formule = "=RC[-3]-RC[-1]"
Heure1 = #7:30:00 PM#
Heure2 = #7:30:00 AM#
End If
'calcul des gardes de jour ou de nuit
LigneSPV = 8
For LigneListe = 0 To frmSPVHeures.lbxSPVHeuresListePersonnel.ListCount - 1
frmSPVHeures.lbxSPVHeuresListePersonnel.ListIndex = LigneListe
Nom = frmSPVHeures.lbxSPVHeuresListePersonnel.Value
TotalHeure = 0
'Premier mois garde
For Ligne = 136 To 160 '141 '75 To 115 '1 To 300
If Planning.Sheets(Feuille1).Cells(Ligne, 3).Value = Nom Then
For Colonne = 5 To 35
If Planning.Sheets(Feuille1).Cells(Ligne, Colonne).Value Valeur1 Or Planning.Sheets(Feuille1).Cells(Ligne, Colonne).Value Valeur2 Or Planning.Sheets(Feuille1).Cells(Ligne, Colonne).Value = Valeur3 Or Planning.Sheets(Feuille1).Cells(Ligne, Colonne).Value = Valeur4 Or Planning.Sheets(Feuille1).Cells(Ligne, Colonne).Value = "G" Or Planning.Sheets(Feuille1).Cells(Ligne, Colonne).Value = "GX" Then
If TotalHeure 0 Or LigneSPV 43 Or LigneSPV = 78 Or LigneSPV = 113 Or LigneSPV = 148 Or LigneSPV = 183 Or LigneSPV = 218 Or LigneSPV = 253 Or LigneSPV = 288 Or LigneSPV = 323 Or LigneSPV = 358 Or LigneSPV = 393 Or LigneSPV = 428 Or LigneSPV = 463 Or LigneSPV = 498 Or LigneSPV = 533 Or LigneSPV = 568 Or LigneSPV = 603 Or LigneSPV = 638 Or LigneSPV = 673 Or LigneSPV = 708 Or LigneSPV = 743 Or LigneSPV = 778 Or LigneSPV = 813 Or LigneSPV = 848 Then
bdr.Sheets("Feuille de vacations").Cells(LigneSPV, 2).Value = Nom
bdr.Sheets("Feuille de vacations").Cells(LigneSPV, 3).Value = frmSPVHeures.lbxSPVHeuresListePersonnel.List(LigneListe, 1)
bdr.Sheets("Feuille de vacations").Cells(LigneSPV, 1).Value = frmSPVHeures.lbxSPVHeuresListePersonnel.List(LigneListe, 2)
End If
bdr.Sheets("Feuille de vacations").Cells(LigneSPV, 4).Value = frmSPVHeures.lblSPVHeuresMois1.Caption & "/" & Colonne - 4 & "/" & bdr.Sheets("Feuille de vacations").Range("J4").Value
bdr.Sheets("Feuille de vacations").Cells(LigneSPV, 5).Value = Heure1
bdr.Sheets("Feuille de vacations").Cells(LigneSPV, 6).Value = bdr.Sheets("Feuille de vacations").Cells(LigneSPV, 4).Value + Jour
bdr.Sheets("Feuille de vacations").Cells(LigneSPV, 7).Value = Heure2
bdr.Sheets("Feuille de vacations").Cells(LigneSPV, 8).FormulaR1C1 = Formule
bdr.Sheets("Feuille de vacations").Cells(LigneSPV, 8).NumberFormat = "h"
LigneSPV = LigneSPV + 1
If LigneSPV 33 Or LigneSPV 68 Or LigneSPV = 103 Or LigneSPV = 138 Or LigneSPV = 173 Or LigneSPV = 208 Or LigneSPV = 243 Or LigneSPV = 278 Or LigneSPV = 313 Or LigneSPV = 348 Or LigneSPV = 383 Or LigneSPV = 418 Or LigneSPV = 453 Or LigneSPV = 488 Or LigneSPV = 523 Or LigneSPV = 558 Or LigneSPV = 593 Or LigneSPV = 628 Or LigneSPV = 663 Or LigneSPV = 698 Or LigneSPV = 733 Or LigneSPV = 768 Or LigneSPV = 803 Or LigneSPV = 838 Then
LigneSPV = LigneSPV + 10
End If
TotalHeure = TotalHeure + 12
End If
Next Colonne


Merci à ceux qui pourront me consacrer un peu de temps pour m'aider.

5 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 oct. 2012 à 19:50
Déclare Heure1 et Heure2 en public dans un module !
Il te suffira alors de leur donner leurs valeurs qu'une seule fois, à l'ouverture du classeur


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
16 oct. 2012 à 21:25
Maintenant et compte tenu du contexte exposé :
Je serais toi, je dédierais carrément une feuille à ces "spécificités"
En colonne A, j'y mettrais les sigles GN, etc ...
En colonne B: Heur1 pour chaque sigle
En colonne C : Heur2 pour chaque sigle
Je protègerais cette feuille et n'en permettrais les modifs que sur mot de passe
Et j'en extrairais en tant que de besoin le contenu, que j'utiliserais dans mon code (références à une/des cellule(s) de la dite feuille).

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
phanoulevoyou Messages postés 11 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 28 octobre 2012
19 oct. 2012 à 16:06
Salut Ucfoutu, bon pour ce qui est de ta première solution je ne vois pas trop comment faire avec le module en public...
Pour la seconde de tes solutions, c'est ce vers quoi j'essaie d'aller mais le problème c'est comment définir pour que le format Heure1 que je rentrerai dans une cellule de feuille style, sheets("BD").range("A1").value corresponde au format (#7:30:00 AM#, en vba) qui servira de base de données.

L'idéal pour moi c'est une feuille de donnée ou on peut changer les heures, l'année à volonté, et que dans mon code VBA je n'ai pas à changer toutes les donnes ou il y Heure1 Heure2 etc. Mon problème c'est que je ne sais pas comment faire, et comment mettre le format Heure comme cela #7:30:00 AM#

Merci de ton aide,
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
19 oct. 2012 à 16:26
je ne vois pas trop comment faire avec le module en public...

Ah ! ... C'est pourtant le début de chez début !
Ouvre donc ton aide VBA sur le mot Public. Et lis !
comment définir pour que le format Heure1 que je rentrerai dans une cellule de feuille style, sheets("BD").range("A1").value corresponde au format (#7:30:00 AM#, en vba) qui servira de base de données.

C'est également le début de chez début. Et même pas encore du VBA, à ce niveau ! Juste la connaissance de Excel !
=>> en formatant comme tu le souhaites tes cellules, pardi !
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
phanoulevoyou Messages postés 11 Date d'inscription lundi 28 mars 2011 Statut Membre Dernière intervention 28 octobre 2012
28 oct. 2012 à 14:42
Hello UCFOUTU,

bon je savais que tu fonctionnais en ne donnant jamais les réponses mais en faisant faire des recherches. Alors j'ai fait ce que tu m'as dit pour ce qui est de l'aide VBA, et figure toi que pour moi ça ne change rien à mon problème car en lisant "le chinois" tout cela ne me dit pas comment faire pour récupérer mon code dans le module public et le faire fonctionner dans un autre module. Si je fais appel ici à un forum c'est que j'ai déjà fait des recherches et que je ne sais absolument pas comment faire. Puis je suis novice car il faut bien commencer un jour, et parfois la lecture de l'aide VBA ben c'est du pur chinois pour moi car je ne fais pas parti des grosses têtes de l'informatique et je n'ai jamais étudié tout ça... Donc j'apprends seul mais je fais l'effort de, et je ne baisse pas les bras.
Merci tout de même de t'être penché sur mon problème.
0
Rejoignez-nous