Conditions et horaire VBA

Bonjour à tous,

Tout d'abord merci par avance pour le temps que vous allez me consacrer.

Je suis complètement débutant dans le domaine du vba, et on m'a donné un tableaur à réaliser avec quelques conditions.

En gros ce tableur se décompose en 3 colonnes et 10 lignes.

Dans la colonne A, je voudrais que lorsqu'on rentre un horaire, une boîte de dialogue s'ouvre avec choix "oui/non"

Si la réponse est oui, je voudrais que dans la colonne C apparaisse l'horaire de A + 4 heures.

Si le réponse est non, pas d'action.

Concernant la colonne B, je voudrais que lorsque l'on rentre un horaire, s'affiche automatiquement en colonne C l'horaire de B + 2h30

Et enfin, et c'est la ou je bloque, je souhaiterais pouvoir modifier à posteriori la colonne C de façon manuelle avec la condition suivante:

- Coloriser la case en C en orange si l'horaire rentré est supérieur à A + 4h ou à B + 2h30.

Bien évidemment je voudrais faire ces opérations sur les 10 lignes indépendamment des autres.

Je vous joins le tableur que j'ai créé avec les macros, j'espère que ca pourra vous aider à comprendre.

J'espère que j'ai été le plus clair possible, et je vous remercie encore.

8classeur1prat.xlsm (18.48 Ko)

bonjour,

Bon je te donne déjà mon classeur modifié. Les commentaires arriveront dans quelques instants...

Il subsiste sans doutes quelques approximations, erreurs, mais globalement c'est ce vers quoi il faut aller.

A+

Re...

Remarques préliminaires :

Sub A1, B1 et C1 c'est un peu court jeune homme...

J'ai préféré WCA, WCB, et WCC : 3 lettres pour une Sub c'est le minimum syndical ( en effet si ultérieurement tu dois faire une recherche c'est plus simple de trouver WCA, WCB... Tu tombes rarement sur des homonymes...

WCA c'est W=Travail, CA = Column A...

Le problèmes était que dans ta Sub Worksheet_Change tu appelles d'autres macros qui ne savent rien de la feuille ou tu travailles ni de la ligne en cours.

C'est pourquoi dans la déclaration de ces Sub j'ai intégré des déclarations de paramètres :

Sub WCA (i&) 'signifie que la Sub attend au moment de l'appel un paramètre i = integer

et dans la Worksheet_Change chaque appel de procédure envoi en même temps le Target.Row à la Sub :

Private Sub Worksheet_Change(ByVal Target As Range)
   If Not Intersect(Target, Range("A1:A10")) Is Nothing Then WCA (Target.Row)
   If Not Intersect(Target, Range("B1:B10")) Is Nothing Then WCB (Target.Row)
   If Not Intersect(Target, Range("C1:C10")) Is Nothing Then WCC (Target.Row)
End Sub

Bon j'ai supprimé les ":" indésirables ("beurk") dans les Sub...

pour le "0,000694444444444444") j'ai pas trop chercher à comprendre...

Mais surtout j'ai viré tous les offset :

Maintenant qu'on sait sur quelle feuille et quelles colonne on travaille plus besoin de travailler en cellules décalées

Je t'ai réécris ça en .Cells(i, x) ce qui est nettement plus propre.

Bon si tu as encore des questions...

A+

Une petite correction sans doute nécessaire sur WCA :

.Cells(i, 3) = .Cells(i, 1) + 0.0006944  '??????

A+

Galopin01 tu es mon héros!

Un grand merci pour tout. Tu me montres à quel point je ne fais qu'effleurer les capacités vba d'excel...

Il faudra vraiment que je suive une formation...

Il ne me reste plus qu'a l'intégrer dans mon tableur complet et mon chef sera content!

Encore merci et bonne journée!

Rechercher des sujets similaires à "conditions horaire vba"