Microsoft 365 heures sans les :

  • Initiateur de la discussion Initiateur de la discussion mike13000
  • 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 !

mike13000

XLDnaute Nouveau
Bonjour à tous,
j'ai récemment trouvé ici ou un autre forum, un code vba pour permettre de ne pas saisir les : dans les heures.
le code fonctionne, mais si j'entre du texte, sur une cellule çà indique incompatibilté de type 13.
j'ai essayé de trouver des parades comme si la cellule selectionné n'est pas numérique, je demande à VBA de sortir du programme, mais çà fonctionne pas.
Si je précise les cellules du target bien précisément, c'est aussi une solution, mais mon planning contient plus de 15 colonnes, et si mon collègue se trompe de colonne çà plante.

j'aimerais enlever le target, et permettre à saisir les heures sans le : sans contrainte de cellules dans la feuille sélectionnée.

Je vous remercie infinimment pour vos réponses.

Mickaël
voici le code vba :

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Heures As Single, Minutes As Single

Application.EnableEvents = False
If Not Intersect(Target, Range("A1:z60")) Is Nothing And Target.Cells.Count = 1 Then
If Target.Value <> "" Then
If Right(Target, 2) * 1 >= 60 Then
MsgBox "Nombre invalide !"
Application.EnableEvents = True
Exit Sub
End If
Minutes = Right(Target, 2) / 1440
If Len(Target) > 2 Then Heures = Int(Target / 100) / 24
Range(Target.Address) = Heures + Minutes
End If
End If
Application.EnableEvents = True
End Sub

Nota bene : si vous avez besoin d'un fichier, je vous ferez parvenir un extrait de mon planning

Cordialement !
 
Bonsoir Mike,
Comme l'erreur est clairement identifiée vous pouvez passer par un on error goto :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Heures As Single, Minutes As Single
    Application.EnableEvents = False
    If Not Intersect(Target, Range("A1:z60")) Is Nothing And Target.Cells.Count = 1 Then
        If Target.Value <> "" Then
            On Error GoTo Fin
            If Right(Target, 2) * 1 >= 60 Then
                MsgBox "Nombre invalide !"
                Application.EnableEvents = True
                 Exit Sub
            End If
            Minutes = Right(Target, 2) / 1440
            If Len(Target) > 2 Then Heures = Int(Target / 100) / 24
                Range(Target.Address) = Heures + Minutes
            End If
        End If
Fin:
Application.EnableEvents = True
End Sub
 
- 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
14
Affichages
246
  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
317
  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
Réponses
4
Affichages
548
Retour