Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Limiter une macro a une plage de cellule

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 !

HUGUESEXCEL

XLDnaute Nouveau
Bonjour,

Malgré mes recherches je n'ai pas trouvé de réponse à mon problème.
A savoir limiter l'exécution d'une macro sur certaines plages de cellules et exclusivement sur certaines plages.
Le code ci après ne fonctionne qu'a moitié
La macro s'exécute sur des selections de plage à cheval sur les bornes "range"

Sub heures_test()
Dim MaPlage
Dim MaPlage2
Dim MaPlage3
Dim cellule, cellule2
Dim Ok, Tout As Boolean
Set MaPlage = Range("A1:BD5,A22:BD25,A42:BD45,A62:BD65,A82:BD85")
Set MaPlage2 = Range("A1:B85,AA1:AD85,BC1:BD85")
Set MaPlage3 = Range("AB66:BD85")

'Boucle qui permet pour chaque cellule de la sélection contigu ou non de vérifier
'si elles sont présentes dans la plage que tu définit

Tout = False
For Each cellule In Selection
Ok = False
For Each cellule2 In MaPlage
If cellule2.Address = cellule.Address Then Ok = True
If Ok Then Exit For 'On a trouvé l'adresse de la cellule dans MaPlage
Next
Tout = Ok
If Tout = False Then Exit For
'Une adresse des cellules sélectionnées n 'est pas dans MaPlage
Next

If Tout Then
MsgBox "Tu ne peux pas saisir d'horaires à cet endroit"
'Selection.Font.Bold = True
Else

For Each cellule In Selection
Ok = False
For Each cellule2 In MaPlage2
If cellule2.Address = cellule.Address Then Ok = True
If Ok Then Exit For 'On a trouvé l'adresse de la cellule dans MaPlage
Next
Tout = Ok
If Tout = False Then Exit For
'Une adresse des cellules sélectionnées n 'est pas dans MaPlage
Next

If Tout Then
MsgBox "Tu ne peux pas saisir d'horaires à cet endroit"
'Selection.Font.Bold = True
Else

For Each cellule In Selection
Ok = False
For Each cellule2 In MaPlage3
If cellule2.Address = cellule.Address Then Ok = True
If Ok Then Exit For 'On a trouvé l'adresse de la cellule dans MaPlage
Next
Tout = Ok
If Tout = False Then Exit For
'Une adresse des cellules sélectionnées n 'est pas dans MaPlage
Next

If Tout Then
MsgBox "Tu ne peux pas saisir d'horaires à cet endroit"

Else

Call DifférentGriser("1", 6, 6)
End If
End If
End If



End Sub





Merci
Hugues
 
Re : Limiter une macro a une plage de cellule

Bonjour

A tester si j'ai compris ton problème

VB:
Sub heures_test()
Dim MaPlage As Range
Dim MaPlage2 As Range
Dim MaPlage3 As Range

  Set MaPlage = Range("A1:BD5,A22:BD25,A42:BD45,A62:BD65,A82:BD85")
  Set MaPlage2 = Range("A1:B85,AA1:AD85,BC1:BD85")
  Set MaPlage3 = Range("AB66:BD85")
  
  If Not Intersect(Union(MaPlage, MaPlage2, MaPlage3), Selection) Is Nothing Then
    MsgBox "Tu ne peux pas saisir d'horaires à cet endroit"
  Else
    Call DifférentGriser("1", 6, 6)
  End If
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
7
Affichages
447
Réponses
7
Affichages
442
Réponses
2
Affichages
519
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…