Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Excel

Excel Forum d'entraide sur Excel

Réponse
 
Outils de la discussion
Vieux 10/10/2008, 20h41   #1 (permalink)
Invité régulier
 
Date d'inscription: septembre 2008
Messages: 16
Par défaut Heures négatives ?

Bonjour,

j'ai un blanc. Apres maintes recherches sur le net.. je refait appel a vous.
Je dois donner la possibilité d'entrer des heures négatives dans une formule.
Par exemple, il y a un manque à gagner de 23:00 (23 heures) dès le début du projet ou parfois il y a un surplus d'heures accumulées (15 heures, par exemple). Je dois conserver cette flexibilité lors de l'entrée de données.

merci beaucoup !
Gailer est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 11/10/2008, 09h23   #2 (permalink)
Membre régulier
 
Date d'inscription: septembre 2007
Messages: 127
Par défaut

Bonjour,

Essaye en cochant dans Outils - Options - Calcul : Calendrier depuis 1904

Si pas ça, reviens avec plus de détail et notamment un petit bout de fichier dans lequel tu nous expliques ce que tu souhaites exactement

Bon WE

@+
tibo59 est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 11/10/2008, 16h44   #3 (permalink)
Membre Expert
 
Date d'inscription: juillet 2007
Localisation: Loire Atlantique (44)
Âge: 52
Messages: 1 002
Par défaut

Salut Gailer et le forum
Excel ne peut toujours pas, à ma connaissance, calculer des heures négatives.
Moyen que j'utilise : une colonne pour le calcul (masquée), et une autre pour l'affichage (si (colonne calcul<0;" - " & texte(colonne avant*-1;"[hh]:mm");colonne avant) vérifier que l'espace est nécessaire avant le moins, j'ai pas testé)
A+
__________________
La qualité et la précision de la réponse sont proportionnelles à celles de la question.
Gorfael est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 11/10/2008, 16h54   #4 (permalink)
Membre Expert
 
Avatar de jacques_jean
 
Date d'inscription: janvier 2006
Localisation: St Cyr s/mer (83)
Âge: 64
Messages: 1 264
Par défaut

Bonjour,

Désolé Gorfael mais en sélectionnant "Calendrier depuis 1904" comme le dit Tibo59 j'obtiens biens des heures négatives, exemple :

Citation:
A1 = 15:04
b1 = 16:03
c1 = a1-b1 = -0:59
et pour entrer une heure négative dans une cellule :

Citation:
=-"12:58"
__________________
N'oubliez pas de cliquer sur quand vous avez obtenu la réponse à votre question.

Dernière modification par jacques_jean ; 15/10/2008 à 10h47
jacques_jean est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 14/10/2008, 19h59   #5 (permalink)
Invité régulier
 
Date d'inscription: septembre 2008
Messages: 16
Par défaut

Merci à tous,
le dernier msg a resolu mes problèmes !
Gailer est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 17/10/2008, 12h02   #6 (permalink)
Rédacteur/Modérateur
 
Avatar de Pierre Fauconnier
 
Date d'inscription: novembre 2003
Localisation: Theux (Belgique)
Âge: 41
Messages: 3 112
Envoyer un message via Skype™ à Pierre Fauconnier
Par défaut

Super la solution de Jacques-Jean...

Attention toutefois que, dans un classeur actif, cocher le calcul avec le "calendrier 104" nous projette dans le futur en ajoutant 4 ans à toutes les dates déjà présentes...
__________________
Pierre Fauconnier
--------------------
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
Pensez au tag

Mon blog sur DVP - Mes petits papiers sur DVP
Je ne peux en aucun cas être tenu pour responsable des conséquences de l'utilisation des codes que je fournis dans le cadre des réponses apportées sur les forums, même s'il s'avérait que ces codes sont erronés ou amènent à des dysfonctionnements, de manière manifeste ou non.
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 17/10/2008, 14h21   #7 (permalink)
Membre Expert
 
Avatar de jacques_jean
 
Date d'inscription: janvier 2006
Localisation: St Cyr s/mer (83)
Âge: 64
Messages: 1 264
Par défaut

Bonjour Pierre Fauconnier,

Vous avez raison de le signaler et si cette option n'est pas l'option habituelle choisie, je pense qu'en copiant ce code dans ThisWorkbook il ne doit plus y avoir de problème :

Code :
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Date1904 = False
ActiveWorkbook.Save
End Sub
 
Private Sub Workbook_Open()
Date1904 = True
End Sub
__________________
N'oubliez pas de cliquer sur quand vous avez obtenu la réponse à votre question.
jacques_jean est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 17/10/2008, 15h14   #8 (permalink)
Rédacteur/Modérateur
 
Avatar de Pierre Fauconnier
 
Date d'inscription: novembre 2003
Localisation: Theux (Belgique)
Âge: 41
Messages: 3 112
Envoyer un message via Skype™ à Pierre Fauconnier
Par défaut

Bonjour Jacques-Jean.

Je pense que nous ne nous sommes pas compris.
Je n'ai pas dit que cela modifiait le mode de calcul des dates pour l'ensemble des classeurs. La propriété Date1904 est une propriété de classeur et n'influe donc que sur le classeur dans lequel elle est modifiée.

J'ai dit que les dates déjà présentes dans le classeur vont "avancer" de 4 ans lors du passage 1900=>1904. Cela est dû au fait que la date pivot (la valeur 1) ne sera plus le 01/01/1900 mais bien le 01/01/1904...

Donc, passer d'un mode de calcul à l'autre ne fera que faire avancer/reculer des dates, pour les dates (je le répète) présentes dans les feuilles de calcul du classeur au moment du changement, et ce, que le changement se fasse via l'interface ou via programmation.

Donc, cette technique est à appliquer sur un classeur vierge, sauf à passer par une macro qui inspecte les dates présentes dans le classeur et qui avance/recule de 4 ans en fonction du mode de calcul. Attention toutefois qu'il ne suffit pas de modifier le millésime de 4 ans, car il y a les années bissextiles. Ainsi, la date du 23/03/08 en calendrier 1900 passera au 24/03/08 en passant au calendrier 1904...

Il convient donc d'être particulièrement prudent en jouant avec cette propriété du classeur.
__________________
Pierre Fauconnier
--------------------
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
Pensez au tag

Mon blog sur DVP - Mes petits papiers sur DVP
Je ne peux en aucun cas être tenu pour responsable des conséquences de l'utilisation des codes que je fournis dans le cadre des réponses apportées sur les forums, même s'il s'avérait que ces codes sont erronés ou amènent à des dysfonctionnements, de manière manifeste ou non.
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 17/10/2008, 18h24   #9 (permalink)
Membre Expert
 
Avatar de jacques_jean
 
Date d'inscription: janvier 2006
Localisation: St Cyr s/mer (83)
Âge: 64
Messages: 1 264
Par défaut

Re,

C'est vrai encore pour cette fois j'avais mal compris et d'ailleurs la date du 23/03/08 passera même au 24/03/12.

Donc il est vrai qu'il ne faut modifier que pour un nouveau classeur.

Sinon 2 solutions : utiliser VBA

ou traiter les données sous forme de nombres dans des colonnes éventuellement masquées et transformer en texte à moins de trouver la formule sans doute complexe mais unique.

Pour un vendredi soir je n'ai plus le courage de continuer à chercher.
__________________
N'oubliez pas de cliquer sur quand vous avez obtenu la réponse à votre question.
jacques_jean est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 17/10/2008, 21h16   #10 (permalink)
Rédacteur/Modérateur
 
Avatar de Pierre Fauconnier
 
Date d'inscription: novembre 2003
Localisation: Theux (Belgique)
Âge: 41
Messages: 3 112
Envoyer un message via Skype™ à Pierre Fauconnier
Par défaut

Bonsoir

En soi, la formule est simple. Il suffit, après avoir basculer au calendrier 1904, de retrancher 1462 à toutes les dates pour retomber sur ses pattes.

Après quelques tests, il semble que IsDate(range(...)) renvoie TRUE lorsque la valeur de la cellule est numérique ET qu'elle peut être interprétée comme une date ET qu'elle est dans un format date.

En VBA, on pourrait donc passer toutes les cellules en boucle et les tester avec
Code :
isdate(...)
pour retrancher 1462 si la réponse est TRUE, mais ce serait quand même fastidieux.
__________________
Pierre Fauconnier
--------------------
"Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
Pensez au tag

Mon blog sur DVP - Mes petits papiers sur DVP
Je ne peux en aucun cas être tenu pour responsable des conséquences de l'utilisation des codes que je fournis dans le cadre des réponses apportées sur les forums, même s'il s'avérait que ces codes sont erronés ou amènent à des dysfonctionnements, de manière manifeste ou non.
Pierre Fauconnier est déconnecté   Envoyer un message privé Réponse avec citation
NEWS MS-OFFICEFAQs OFFICETUTORIELS OFFICELIVRES OFFICESOURCES VBAACCESS

Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Excel

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide