[Résolu] Format heure avec message d'erreur à l'enregistrement

Webperegrino

XLDnaute Impliqué
Supporter XLD
Bonjour Le Forum,

Merci d'avance pour me venir en aide dans la programmation des lignes suivantes.
En effet cette action me donne une erreur d'exécution '1004' sur la ligne "Selection.NumberFormat" car je suis dans une classe Range.
Peut-être avez-vous une autre formulation.

VB:
Private Sub CommandButton1_Click() 'validation
.../...
With Mvt 'Sheets("MvtTS")
.../...

    .Range("H" & Ld) = Now
    Range("H" & Ld & ":H" & Ld).Select
    Selection.NumberFormat = "hh:mm"

'au lieu de Call HEURE
.../...

Je n'ai que cette parade qui fonctionne, un peu lourde à mon goût car je dois sortir de cette plage de validation en faisant Call HEURE :

VB:
Sub HEURE()
 Dim MT, lig
  Set MT = Sheets("MvtTS")
  MT.Unprotect Password:="mdp"
    lig = MT.Range("B20000").End(xlUp).Row
     MT.Select
       Range("H7:H" & lig).Select
       Selection.NumberFormat = "hh:mm"
     Range("B3").Select
  MT.Protect Password:="mdp"
End Sub

Webperegrino
 
Dernière édition:

Modeste

XLDnaute Barbatruc
Re : Format heure avec message d'erreur à l'enregistrement

Bonsoir Webperegrino,

Avec plus de 560 messages au compteur, on pourrait supposer que tu as compris depuis longtemps l'intérêt de joindre un fichier exemple ... mais tu cherches sans doute à maintenir en éveil nos neurones :) ... à nous forcer sans cesse à nous dépasser :D à renouveler des pratiques ancestrales dont les fondements sont ensevelis sous des siècles de poussière ;)

La différence entre tes deux bouts de code tient tout de même essentiellement au fait que, dans la seconde procédure, tu ôtes la protection de la feuille. La "question à cent balles" pourrait donc être: "n'est-ce pas là la source de tes désagréments?" tu noteras que je ne m'empresse pas d'ajouter -un peu mesquinement- "avec un fichier, on aurait pu tester avant d'émettre l'hypothèse"


Pour ce qui est de
En effet cette action me donne une erreur d'exécution '1004' sur la ligne "Selection.NumberFormat" car je suis dans une classe Range
... je dois avouer que je n'ai pas compris: d'où vient ton explication? :confused:


Au-delà de ça, on pourrait se demander pourquoi tu écris, une première fois: .Range("H" & Ld) = Now
... et à la ligne suivante: Range("H" & Ld & ":H" & Ld).Select
pas de point devant le second Range et puis ce Range("H" & Ld & ":H" & Ld) qui laisse songeur !?

Enfin, le .Select est-il indispensable? N'aurais-tu pas lu ici et là (à de multiples reprises) qu'il vaut mieux les éviter, parce qu'ils vont ralentir le code?
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Format heure avec message d'erreur à l'enregistrement

Le Forum,
Bonsoir Modeste,
Je fais de mon mieux pour progresser dans la VBA d'Excel....
Plates excuses présentées à Modeste et au Forum d'avoir extrait ces quelques lignes de ma programmation sans créer un fichier joint.
Mais, avec mon fichier original de 15 Mo, pas toujours facile de réaliser un mini-fichier qui colle à l'original qui coince.
En fait mon fichier fonctionne sans le premier jet ci-avant et en appliquant le "Sub HEURE" décrit dans le message précédent.
Je pensais seulement pouvoir éviter l'utilisation de Call HEURE en améliorant la codification de ces trois lignes précédentes pour remplacer cet appel à 'HEURE'.
Je reviens dans cette conversation pour transmettre dès que possible ce mini-fichier.
Encore désolé d'avoir froissé Modeste et vais tenter de réduire mes interventions.
Cordialement,
Webperegrino très modeste
 

Webperegrino

XLDnaute Impliqué
Supporter XLD
Re : Format heure avec message d'erreur à l'enregistrement

Le Forum, Modeste,
J'ai trouvé une solution ne pouvant pas être plus courte.
Pour placer la date en affichage du type 11:34 la saisie avec succès se fait de la façon suivante :

VB:
.Range("H" & Ld) = Format(Now, "hh:mm")

Cordialement,
Webperegrino
 

Discussions similaires

Statistiques des forums

Discussions
312 107
Messages
2 085 354
Membres
102 873
dernier inscrit
yayo