soustraction via offset

  • Initiateur de la discussion Initiateur de la discussion Profane
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Profane

XLDnaute Occasionnel
Bonjour
j'ai un soucis, je souhaite soustraire deux champs via macro :

Sub remplir()
Dim lig As Long
With Sheets("Report généré")
lig = .Cells(Rows.Count, 1).End(xlUp).Row
For Each c In .Range("A2:A" & lig).SpecialCells(xlCellTypeConstants)
If c <> "" Then
c.Offset(0, 8).Value = c.Offset(0, 7).Value - c.Offset(0, 3).Value <-------------
End If
Next c
End With
End Sub

mais ca bug, je précise que ces champs sont des champs dates

merci d avance pour l aide que vous m apporterez
 
Re : soustraction via offset

Bonjour Profane



(...) 50 visu et pas de réponses, le niveau baisse ou j'ai posé une question stupide ?? ;-)
Que voulez-vous qu'on dise ? A priori, ce code est formellement correct et fonctionnel. Tout au plus peut-on se demander pourquoi c n'est pas déclaré (Dim c As Range), mais ce n'est pas cela qui gène l'exécution du code.

Par conséquent le problème vient probablement non de la procédure mais du contenu du classeur. Comme nous n'avons pas ce classeur, nous avons du mal à dire quoi que ce soit...​


Bonne journée,


ROGER2327
#5470


Dimanche 15 Gueules 139 (Alice au Pays des Merveilles - fête Suprême Tierce)
20 Pluviôse An CCXX, 4,1696h - serpette
2012-W06-4T10:00:25Z
 
Re : soustraction via offset

Bonjour Roger
je vous joint un fichier "alleger", ca semble fonctionner lorsque que l'on additionne 2 offset même si le résultat est incorrect, par contre la soustraction ne passe pas, je ne comprends pas pourquoi
merci pour votre aide


edit : en allegeant j'ai modifie en trop
la macro format date correcte est la suivante

Sub Format_date()
With Sheets("Feuil1")
.Columns("I:I").Select
Selection.NumberFormat = "dd"" jours, ""hh""h"":mm""mn"""
End With
End Sub
 

Pièces jointes

Dernière édition:
Re : soustraction via offset

Re...



Apparemment votre problème est des plus classiques (et traité par dizaines voire même centaines de fois sur ce forum). Les ingénieurs de Microsoft ne savent pas encore faire - en heures, minutes et secondes - des soustractions de temps qui conduisent à des différences négatives. 2h30 - 1h = 1h30, c'est possible, 1h - 2h30 = - 1h30, c'est impossible. (Mais ils sont très forts en rubans multicolores...)
Par contre, faire de tels calculs en jours est possible : 0,0416666666666667 - 0,104166666666667 = -0,0625 (ou 1/24 - 2,5/24 = -1,5/24) au lieu de 1h - 2h30 = - 1h 30.

On peut aussi obtenir des résultats formatés comme vous le souhaitez, sous forme de texte. Inconvénient : plus de calcul possible avec ces résultats en texte.

Voyez quelques expériences dans le classeur joint.​


ROGER2327
#5471


Dimanche 15 Gueules 139 (Alice au Pays des Merveilles - fête Suprême Tierce)
20 Pluviôse An CCXX, 6,7881h - serpette
2012-W06-4T16:17:29Z
 

Pièces jointes

Dernière édition:
Re : soustraction via offset

Re Roger
j'ai lu ton code trés intéressant même si je ne pas compris entierement la fonction Diffdate (mais ca viendra...)
par contre seul en passant via "c.Offset(0, 8) = CDbl(c.Offset(0, 7)) - CDbl(c.Offset(0, 3))" cela fonctionne pour moi,
sans conversion CDbl ca bug toujours alors que dans ton fichier tout se passe bien, je renonce a comprendre aujourd hui
en tout cas un grand merci pour ton aide
Cordialement
 
Re : soustraction via offset

Bonjour le fil 🙂,
Les ingénieurs de Microsoft ne savent pas encore faire - en heures, minutes et secondes - des soustractions de temps qui conduisent à des différences négatives. 2h30 - 1h = 1h30, c'est possible, 1h - 2h30 = - 1h30, c'est impossible. (Mais ils sont très forts en rubans multicolores...)
Si je peux me permettre, ce n'est pas tout à fait juste 🙄...
Sous 2007/2010, si on va dans les "Options" d'Excel, onglet "Options avancées", partie "Lors du calcul de ce classeur :", il est possible de cocher "Utiliser le calendrier depuis 1904", et à ce moment-là, les heures négatives sont prises en compte 😀.
Bonne suite 😎
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
756
Réponses
10
Affichages
664
Réponses
5
Affichages
914
Réponses
4
Affichages
735
Réponses
15
Affichages
788
Retour