OVH Cloud OVH Cloud

Limiter l'usage d'une macro

16 réponses
Avatar
Christian de BXL
Bonjour,
Est-il possible de limiter l'usage d'une macro à une certaine plage de
cellules variable. J'entend par variable comprises entre deux cellules
nommées.
Je m'explique:je voudrais qu'une macro ne soit exécutable que dans les
cellules Axx à Ayy . Cette plage de cellules serait limitées par deux
cellules que je pourrais nommer, mais le nombre de cellules concernées serait
variable?
Mes explications sont-elles claires?
En vous remerciant
Christian

6 réponses

1 2
Avatar
isabelle
c'est probablement qu'il n'y a pas deux cellules nommées "xx" et "yy",
voici un exemple,

http://cjoint.com/?cAxZYjFly8

isabelle

Bonsoir Isabelle?
Le messageBox indique $A$1



bonjour Christian,

si tu exécute cette commande, est que la réponse représente bien ta plage de cellule ?

msgbox Range("A" & Range("xx").Column & ":A" & Range("yy").Column).Address

isabelle






Avatar
Christian de BXL
Bonsoir JB,
Je regrette, mais je n'arrive pas à appliquer ta solution. Comme mentionné
dans mes messages précédents, j'ai progressé, mais je parviens pas à inégrer
tes instructions pour en faire une macro qui fonctionne.
Peux-tu encore m'aider.
Merci
Christian
Avatar
JB
Bonjour,

Je ne suis pas sûr de comprendre ce que tu veux obtenir:

http://cjoint.com/?dbjwFKTv6Q

Donne l'intersection de 2 champs: début et fin délimitent le premier
champ

Sub essai2()
Set ChampReel = Intersect(Range([début], [fin]),
Range("champDemande"))
If Not ChampReel Is Nothing Then ChampReel.Select
End Sub

JB
On 28 fév, 17:33, Christian de BXL
wrote:
BonsoirJB,
Je regrette, mais je n'arrive pas à appliquer ta solution. Comme mentio nné
dans mes messages précédents, j'ai progressé, mais je parviens pas à inégrer
tes instructions pour en faire une macro qui fonctionne.
Peux-tu encore m'aider.
Merci
Christian


Avatar
Christian de BXL
Merci JB,
J'ai compris le fonctionnement de ta procédure pour déterminer un champ de
cellule, ce que je n'arrive pas à faire c'est intéger cette procédure à une
macro pour en limiter l'usage.
J'ai donné un exemple d'une macro d'essai,je ne comprend pas où mettre ton
exemple de macro pour ne pouvoir utiliser la macro d'essai que dans le
ChampDemande.
Le but est d'empècher un utilisateur de déclencher une macro dans une
cellule non appropriée , en limitant strictement les cellules ou la macro en
cause pourrais être utilisée. S'il essaye, soit la macro devrai ne pas
fonctionner soit un message d'erreur devrai apparaitre.
Cela te permet-il de mieux comprendre ce que je recherche.

Tous mes essais se sont révélés infructueux.
Je te prie d'accepter mes excuses, mes connaissances d'Excel sont encore
limitées.
En te remerciant
Christian
Avatar
JB
Bonjour,

Sub EssaiLimite()
ActiveCell.FormulaR1C1 = "Essai Limite"
If Not Intersect(Range([début], [fin]), ActiveCell.Offset(0, 8)) Is
Nothing Then
ActiveCell.Offset(0, 8).Select
With Selection.Interior
.ColorIndex = 9
.Pattern = xlSolid
End With
ActiveCell.Offset(1, -8).Select
End If
End Sub

http://cjoint.com/?ddnBP0tG12


JB


On 3 mar, 12:18, Christian de BXL
wrote:
Merci JB,
J'ai compris le fonctionnement de ta procédure pour déterminer un cha mp de
cellule, ce que je n'arrive pas à faire c'est intéger cette procédu re à une
macro pour en limiter l'usage.
J'ai donné un exemple d'une macro d'essai,je ne comprend pas où mettr e ton
exemple de macro pour ne pouvoir utiliser la macro d'essai que dans le
ChampDemande.
Le but est d'empècher un utilisateur de déclencher une macro dans une
cellule non appropriée , en limitant strictement les cellules ou la mac ro en
cause pourrais être utilisée. S'il essaye, soit la macro devrai ne pas
fonctionner soit un message d'erreur devrai apparaitre.
Cela te permet-il de mieux comprendre ce que je recherche.

Tous mes essais se sont révélés infructueux.
Je te prie d'accepter mes excuses, mes connaissances d'Excel sont encore
limitées.
En te remerciant
Christian


Avatar
Christian de BXL
Bonsoir JB,
Merci pour ta solution.Comme tu la propose, l'écriture du texte"essai
limite" se fait dans toutes les situations, même si la cellule active n'est
pas dans les limites prévues. Seule la coloration de l'autre cellule ne se
fait pas.
J'ai transformé la macro en

Sub EssaiLimite2()

If Not Intersect(Range([début], [fin]), ActiveCell.Offset(0, 8)) Is
Nothing Then
ActiveCell.FormulaR1C1 = "Essai Limite"
ActiveCell.Offset(0, 8).Select
With Selection.Interior
.ColorIndex = 9
.Pattern = xlSolid
End With
ActiveCell.Offset(1, -8).Select
End If
End Sub

Ainsi cela fonctionne parfaitement.
Encore merci
Christian
1 2