Fonction SI en VBA excel

Fermé
ze95 Messages postés 11 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 26 avril 2006 - 11 avril 2006 à 02:43
 djetther - 30 mars 2008 à 19:50
Bonjour à tous.
Je voudrais savoir s'il est possible d'utiliser la fonction "SI" en code VBA excel.
ex: je rentre 22:00 dans textBox1 puis 06:00 dans TextBox2
dans TextBox3 dois s'afficher 8:00 (ce que je sais déjas faire) et en TextBox4 afficher 8:00 seulement Si les horaires inscrit dans TextBox1 et 2 sont des Heures de nuit (22:00 à 06:00).

Merci d'avance ze95.

14 réponses

ze95 Messages postés 11 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 26 avril 2006 6
11 avril 2006 à 11:32
merci à toi antic80 de prendre le temp de me repondre,
mais n'ayant pas de formation sur excel et même vba c'est difficile pour moi de comprendre les different codes .
_où placer ce code?
_comment le résulta va s'afficher dans le TextBox4?
le code qui prend en compte tous les cas de figure me serai bien utile. désoler si j'ai besoin de plus d'explication.

A+ze95
3
ze95 Messages postés 11 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 26 avril 2006 6
12 avril 2006 à 00:06
je veux crée un formulaire qui me permettrais de saisire mais heures de travail et de les afficher dans une feuille excel (je travail en trois huit)
et j'ai donc crée mon formulaire en utilisant visual basique inclus dans excel. j'ai crée un UserForm où j'y est placer mes TexBox.
1
antic80 Messages postés 4785 Date d'inscription lundi 30 mai 2005 Statut Contributeur Dernière intervention 9 septembre 2009 1 161
11 avril 2006 à 09:42
alors voila un morceau de code qui devrais t'aider

heuredébut = Left(TEXTBOX1, 2) 'on recupere les heures du début
heurefin = Left(TEXTBOX2, 2) 'on récupere les heures de fin

if heurefin < heuredébut then
ici tu met la condition si l'heure de fin est plus petite que l'heure de début

else

la c le cas inverse

End if

si tu as du mal je peux te filer un morceau de code qui prend en compte tous les cas de figure pour ce genre de calcul
0
antic80 Messages postés 4785 Date d'inscription lundi 30 mai 2005 Statut Contributeur Dernière intervention 9 septembre 2009 1 161
11 avril 2006 à 13:38
j'aimerai savoir avant tout ou se trouve tes textbox

sur la feuille excel ou alors est ce que tu as été dans macro > visual basic editor qui se trouve dans excel
0

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

Posez votre question
antic80 Messages postés 4785 Date d'inscription lundi 30 mai 2005 Statut Contributeur Dernière intervention 9 septembre 2009 1 161
12 avril 2006 à 09:16
salut

je sais pas si tu as vu a kel endroit on taper le code ?? si non tu fais un double clic sur ton formulaire et tu va avoir un ccadre blanc qui va apparaitre avec 2 lignes déja taper. supprime c 2 lignes

si tu as deja vu ou taper le code tout va bien

je v te proposer un code qui inclus tout les cas de figure des heures

par contre la saisie de l'heure dois se faire au format suivant 22:00 ou 06:00

en partant du principe que l'heure de début est saisie ds TextBox1, l'heure de fin dans textbox2 et que le resultat dois etre affiché dans textbox3 voici le code

Private Sub Textbox2_afterupdate()
Dim heuredébut, heurefin, minutedébut, minutefin, TTLmindébut, TTLminfin, TTLmin, Hdébut, Hfin
Dim heure, minute
Dim date1, date2 As Date

'calcul des heures

Hdébut = Textbox1.Value 'on recupere l'heure de début
Hfin = TextBox2.Value 'et l'heure de fin




heuredébut = Left(TextBox1, 2) 'on recupere les heures
minutedébut = Right(TextBox1, 2) 'et les minutes
heurefin = Left(TextBox2, 2) 'idem pour l'heure de fin
minutefin = Right(TextBox2, 2) 'et les minutes
TTLmindébut = (heuredébut * 60) + minutedébut 'je calcul le nombre de minute
TTLminfin = (heurefin * 60) + minutefin 'pareil pour la 2eme heure

If Hdébut > Hfin Then 'si l'heure de début est supérieur a l'heure de fin
    TTLmin = (TTLminfin + 1440) - TTLmindébut  'je rajoute 24 h a l'heure de fin pour exemple de 22h à 6h (je fais 24+6-22=8h)
Else
    TTLmin = TTLminfin - TTLmindébut 'sinon on fais heure de fin - heure de début
End If

heure = Int(TTLmin / 60) 'a partir du nombre totale de minute je recupere les heures exemple 210 minutes / 60 j'obtient comme entier 3
minute = Int(TTLmin - (heure * 60)) 'ensuite a partir du nombre d'heures je calcule les minutes exemple (ds 210 min il y a 3h : 210 - 3*60 =30) il reste donc 30 minutes
'j'obtient donc une différence de 3h30 minutes

If heure < 10 Then 'si le nombre d'heure et inferieur a 10 je rajoute un 0 pour obtenir par exemple 07
    heure = "0" & heure
End If

If minute < 10 Then 'pareil pour les minutes
    minute = "0" & minute
End If

TextBox3.Text = heure & ":" & minute 'on affiche la différence

End Sub


sache que quand j'ecrit 'on recupere l'heure de début c du commentaire pour t'aider a comprendre le code qui se trouve avant le symbole '

si tu as besoin d'autres coup de main n'hesite pas
0
bonjour,


j'ai un probleme , et j'aurais besoin de ton aide...

Voici mon probleme:

J'ai dans une cellule A1 le temps qui s'afiche sous forme de chronomètre.

J'ai dans une deuxieme cellule B1, figer une heure.

Et dans une 3ème C1 , j'obtiens le temps qui s'ecoule en faisant la différence entre A1 et B1.
Mon probleme actuel le temps écoulé se calcul 24h/24 et 7j/7, mais moi je voudrais que le temps qui s'écoule soit uniquement calculé sur les heures d'ouverture (8h-12h et 13h-17h).

Ansi, je voudrais que ma cellule qui calcul le temps écoulé soit active si et seulement si l'heure sur le chronometre est comprise entre : 8h-12h et 13h-17h

Merci de ton aide......
0
ze95 Messages postés 11 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 26 avril 2006 6
12 avril 2006 à 20:59
Merci pour toutes ces informations ça marche impécable.
maintenant je voudrai ajouter un TextBox4
pour que s'affiche 8:00 seulement quand en textbox1 il y est 22:00
et en textbox il y est 06:00 cest a dir 8 heures de nuit et ne rien afficher si les heures textbox1 sont 06:00 ou 14:00
et textbox2 14:00 ou 22:00.

Ex1:
textbox1=06:00
textbox2=14:00
textbox3=08:00
textbox4=00:00 puisque ce ne sont pas des heures de nuit.

Ex2:
textbox1=14:00
textbox2=22:00
textbox3=08:00
textbox4=00:00 puisque ce ne sont pas des heures de nuit.

Ex3:
textbox1=22:00
textbox2=06:00
textbox3=08:00
textbox4=08:00 puisque ce sont pas des heures de nuit.

PS. textbox4 quand je dit 00:00 ça peut etre ne rien afficher.

j'espere que j'ai été clair dans mes explication et encore mersi pour ton aide.
0
antic80 Messages postés 4785 Date d'inscription lundi 30 mai 2005 Statut Contributeur Dernière intervention 9 septembre 2009 1 161
12 avril 2006 à 21:07
bonsoir

en dessous de la ligne


TextBox3.Text = heure & ":" & minute 'on affiche la différence

ecrit ca

If Hdébut > Hfin Then
Textbox4.text=textbox3.text
else
Textbox4.text="00:00"
end if
0
ze95 Messages postés 11 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 26 avril 2006 6
12 avril 2006 à 23:29
je n'est qu'un mot à dire SUPER
merci beaucoup.
je vais continuer à développer mon formulaire et je serais certainement amené
à te reposer quelque question j'esperes que tu poura continuer à m'aider

merci encore ze95 A+
0
antic80 Messages postés 4785 Date d'inscription lundi 30 mai 2005 Statut Contributeur Dernière intervention 9 septembre 2009 1 161
12 avril 2006 à 23:43
si ca t'interesse je pe te filer mon adresse msn si tu veux
0
ze95 Messages postés 11 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 26 avril 2006 6
14 avril 2006 à 01:57
ok pour ton adresse msn .

j'ai une autre question.
J'ai une colonne F avec les Heures que j'y est entrer à l'aide du formulaire que j'ai crée avec VB Excel et je voudrai additionner la colonne (F42:F72), mais je n'y arrive pas.
quand j'utilise la fonction excel =SOMME(F42:F72) et que je veux afficher le résulta dans la céllule F74 le résulta n'est pas exact.
j'ai été dans "Format de céllule" pour modifié un peut les paramêtres des heures mais rien n'y fait ça ne marche pas.

merci ze95 A+
0
antic80 Messages postés 4785 Date d'inscription lundi 30 mai 2005 Statut Contributeur Dernière intervention 9 septembre 2009 1 161
14 avril 2006 à 08:29
bonjour

alors il faut que toutes tes cellules meme celle ou se trouve ta formule (F74) soit au meme format

va dans format de cellule, catégorie heure et il faut prendre la ligne 37:30:55

ca devrais allez mieux

mon adresse dede_421@hotmail.com
0
ze95 Messages postés 11 Date d'inscription mercredi 5 avril 2006 Statut Membre Dernière intervention 26 avril 2006 6
26 avril 2006 à 16:22
Salut antic80 désoler pour ce long moment de silence, mes horaire de travail ne me laissais plus de temp libre.
merci pour ton adresse mail.

petit problême suite de la question N°6

Ex3 de la question N°6
textbox1=22:00
textbox2=06:00
textbox3=08:00
textbox4=08:00 puisque ce sont pas des heures de nuit.

Ex3Bis.
textbox1=18:00 (il m'arrives de travailler de 18:00 à 06:00)
textbox2=06:00
textbox3=12:00
textbox4=08:00 puisque ce sont pas des heures de nuit.
en textbox4 le resulta doit etre 8:00 puisque les horaire de nuit sont de 22:00 à 6:00 du matin.
0
antic80 Messages postés 4785 Date d'inscription lundi 30 mai 2005 Statut Contributeur Dernière intervention 9 septembre 2009 1 161
26 avril 2006 à 17:55
je sais pas si ca va marché mais voila un truc fait vite fais

dis moi si ca marche

If Hdébut > Hfin Then 'si l'heure de début est supérieur a l'heure de fin
    if heuredébut => 22 then
    TTLmin = (TTLminfin + 1440) - TTLmindébut  'je rajoute 24 h a l'heure de fin pour exemple de 22h à 6h (je fais 24+6-22=8h)
    else
    TTLmin=(TTLminfin + 1440)-(22*60) 'on calcul juska 22 h
    minjour=(22*60)-TTLmindébut 'on recupere le total de minutes fais en journée
    end if
Else
    TTLmin = TTLminfin - TTLmindébut 'sinon on fais heure de fin - heure de début
End If


0
Bonjour, je voudrais de l'aide s'il vous plait les gars
je veux créer un fichier excel qui fonctionne comme suit
Si je click sur une cellule, cette dernière ouvre un tableau que j'avais déja crée.Et je connais pas la fonction nécessaire qu'il faut utiliser.Merci, et j'attend avec impatience votre aide.
0