XL 2021 VBA Ajout d'une valeur en heure dans une cellule

didus

XLDnaute Occasionnel
Bonjour à tous, un peu d'aide serait bienvenue
le contexte
A partir du calcul d'une durée qui donne un résultat en heures minutes et de la saisie dans un endroit aléatoire,
je teste une valeur T ou B pour incrémenter la durée concernée dans une cellule située en haut de la colonne de saisie
tout ceci est ok
c'est au niveau de la somme des valeurs pour ajouter la nouvelle valeur à la valeur de la cellule de cumul que le blocage survient
beaucoup d'essais mais apparemment ça bloque sur les types de données ajoutées

je place en pj le code ainsi que les variables locales, la cellule destinatrice du calcul est en heures minutes et secondes (format heures)
la valeur à ajouter est soit HT soit HU

merci d'avance
excel tableau des heures.png
 

Pièces jointes

  • Emploi du temps M1.xlsm
    77.8 KB · Affichages: 4

Dranreb

XLDnaute Barbatruc
Bonsoir.
C'est quoi ces Left(HD, 5) ?
Ça n'a pas de sens si ce sont des durées en jours affichées dans les cellules via un format d'heure !
Supprimez moi ces variables HE, HG et HU et utilisez directement les HD, HF et HT.
Pour des textes à construire par concaténation utilisez Format(HD, "hh:mm")
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

C'est quoi ces Left(HD, 5) ?
Ça n'a pas de sens si ce sont des durées en jours affichées dans les cellules via un format d'heure !
Ce sont en fait des horaires, qui sont bien au format heure d'Excel.
Donc ça n'a effectivement aucun sens de faire un LEFT(HD,5), et pourtant... ça m'étonne mais ça marche, ça donne l'horaire en heures et minutes, mais au format texte cette fois-ci.

L'utilisation de Format(HD, "hh:mm") serait, à mon avis, tout de même plus logique. ;)



Quant à ton problème, je te propose d'essayer ceci :
VB:
Cells(9, ActiveCell.Column) = Cells(9, ActiveCell.Column) + HT



Juste une remarque : un petit Cancel = True ne serait pas du superflu... ;)
VB:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
'
    ' Seules les cellules de l'emploi du temps déclenchent l'événement
    DernLigne = Range("C" & Rows.Count).End(xlUp).Row + 2

    If Target.Column < 4 Then Exit Sub
    If Target.Column > 10 Then Exit Sub

    If Target.Row < 10 Then Exit Sub
    If Target.Row > DernLigne Then Exit Sub

    ' Saisies
    REP = ActiveCell.Value
    ActiveCell.Value = ""
    Cree_Matiere

    Cancel = True

End Sub
 
Dernière édition:

didus

XLDnaute Occasionnel
Juste une remarque : un petit Cancel = True ne serait pas du superflu... ;)
VB:
Code:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
'
    ' Seules les cellules de l'emploi du temps déclenchent l'événement
    DernLigne = Range("C" & Rows.Count).End(xlUp).Row + 2

    If Target.Column < 4 Then Exit Sub
    If Target.Column > 10 Then Exit Sub

    If Target.Row < 10 Then Exit Sub
    If Target.Row > DernLigne Then Exit Sub

    ' Saisies
    REP = ActiveCell.Value
    ActiveCell.Value = ""
    Cree_Matiere

    Cancel = True

End Sub
Rajouté la ligne de code : cancel= true
 

Discussions similaires

Statistiques des forums

Discussions
312 839
Messages
2 092 678
Membres
105 508
dernier inscrit
Albator