code vba à réserver sur certaines lignes

pascal21

XLDnaute Barbatruc
bonjour le forum
j'ai ce bout de code que m'avait fourni JOB75, que j'en remercie encore, il y a quelques temps et que j'ai voulu réutiliser sur une autre appli
il consiste à inscrire les heures sans mettre le :
ça fonctionne très bien , trop même puisque je viens de voir qu'il s'applique sur toute la feuille
ce que je ne souhaite pas du tout
pourtant la zone concernée est indiquée
quel est le bout de code à rajouter pour exempter les autres zones et particulier la ligne 43
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Calculate
Dim r As Range, x$
Set r = Intersect(Target, [t6:x7,t11:x12,t16:x17,t21:x30,t33:x34])
Set r = Intersect(Target, Me.UsedRange)
If r Is Nothing Then Exit Sub
Application.EnableEvents = False
r.NumberFormat = "General"
For Each r In r 'si entrées multiples (copier-coller)
  If r Like "#" Or r Like "##" Or r Like "###" Or r Like "####" Then
    x = Format(r, "0000")
  r = Left(x, 2) & ":" & Mid(x, 3)
    r.NumberFormat = "hh:mm"
  End If
Next
Application.EnableEvents = True
End Sub
merci de votre aide
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

Si j'ai bien compris la question...

Me.UsedRange est la plus grande plage au sein de laquelle il y a des données.
Target sont les cellules qui ont été modifiées.

Target est donc obligatoirement contenu dans Me.UsedRange. Intersect(Target, Me.UsedRange) sera donc toujours égale Target.

Si vous modifiez n'importe quelle cellule de la feuille:

  • cette cellule devient membre de Me.UsedRange
  • cette cellule devient Target (cellule modifiée)
donc Intersect(Target, Me.UsedRange) devient la cellule target, donc la macro s'applique à n'importe quelle cellule modifiée.

 
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 505
Messages
2 089 071
Membres
104 020
dernier inscrit
Mzghal