Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Limitation usage de macro

5 réponses
Avatar
Christian de BXL
Bonjour,
Pour limiter l'usage d'une macro à une plage de cellule, j'utilise
l'instruction suivant e généreusement communiquée sur ce forum:
If Intersect(ActiveCell, [CelluleDebut:CelluleFin]) Is Nothing Then
vReponse = MsgBox("Cette instruction n'est pas disponible" & Chr(13) &
"à cet endroit de la feuille de soins", vbOKOnly, "Désolé")
Exit Sub
End If

Mes cellules de début et de fin de plage sont nommées, mon tableau ayant une
grandeur variable.
Mon problème est: je place cette limitation en début d'une macro permettant
de supprimer une ligne. Comment faire pour qu'il ne soit pas possible de
supprimer la ligne de contenant la cellule de début de plage et celle de fin
de plage en utilisant cette macro
J'ai essayé :"If Intersect(ActiveCell, [CelluleDebut+1:CelluleFin-1]) Is
Nothing Then....." mais cela ne fonctionne pas.
Y a-t-il une autre solution?
Merci
Christian

5 réponses

Avatar
francois.forcet
Rebonjours Christian

Pour limiter une plage de la ligne 10 à la ligne 20 par exemple
j'utilise ces lignes :

If Activecel.row >= 10 and Activecell.Row < Then
Code
End If
Donc pour la macro de suppression de ligne peut être mettre
If Activecel.row >= 10+1 and Activecell.Row < -1 Then
Code
End If

Idem pour limiter les colonnes avec Activecell.Column

Peut être une piste
Dis moi !!!!
Avatar
Daniel.C
Bonsoir.
Essaie :

Set plage = Range(CelluleDebut & ":" & CelluleFin).Offset(1)
Set plage = plage.Resize(plage.Rows.Count - 2)
If Intersect(ActiveCell, plage) Is Nothing Then

Cordialement.
Daniel
"Christian de BXL" a écrit dans
le message de news:
Bonjour,
Pour limiter l'usage d'une macro à une plage de cellule, j'utilise
l'instruction suivant e généreusement communiquée sur ce forum:
If Intersect(ActiveCell, [CelluleDebut:CelluleFin]) Is Nothing Then
vReponse = MsgBox("Cette instruction n'est pas disponible" & Chr(13) &
"à cet endroit de la feuille de soins", vbOKOnly, "Désolé")
Exit Sub
End If

Mes cellules de début et de fin de plage sont nommées, mon tableau ayant
une
grandeur variable.
Mon problème est: je place cette limitation en début d'une macro
permettant
de supprimer une ligne. Comment faire pour qu'il ne soit pas possible de
supprimer la ligne de contenant la cellule de début de plage et celle de
fin
de plage en utilisant cette macro
J'ai essayé :"If Intersect(ActiveCell, [CelluleDebut+1:CelluleFin-1]) Is
Nothing Then....." mais cela ne fonctionne pas.
Y a-t-il une autre solution?
Merci
Christian


Avatar
Christian de BXL
Bonjour Daniel,
Je te remercie de ta réponse, d'autant plus que tu es à l'origine de
l'instruction originale de limitation d'usage de macro, qui m'a déjà été d'un
grand secours.
Présentement, j'ai essayé ta solution en insérant :

Set plage = Range(CelluleDebut & ":" & CelluleFin).Offset(1)
Set plage = plage.Resize(plage.Rows.Count - 2)
If Intersect(ActiveCell, plage) Is Nothing Then
vReponse = MsgBox("Cette instruction n'est pas disponible", vbOKOnly,
"Désolé")
Exit Sub
End If

en début de macro.
Cela ne fonctionne pas, la première ligne appelle "une erreur d'exécution
1004 La méthode "Range" de l'objet '_Global a échoué".
Erreur de ma part dans l'insertion des lignes ou autre erreur?
Merci à toi
Christian
Avatar
Christian de BXL
Bonjour François,
Merci pour ta réponse, mais je cherche une limitation de cellule à cellules.
La limitation par ligne permet, dans mon cas, des débordement latéraux en
dehors de la zone imprimable de mon classeur, ce qui perturbe la bonne
impression des pages.
A bientôt

"" wrote:

Rebonjours Christian

Pour limiter une plage de la ligne 10 à la ligne 20 par exemple
j'utilise ces lignes :

If Activecel.row >= 10 and Activecell.Row < Then
Code
End If
Donc pour la macro de suppression de ligne peut être mettre
If Activecel.row >= 10+1 and Activecell.Row < -1 Then
Code
End If

Idem pour limiter les colonnes avec Activecell.Column

Peut être une piste
Dis moi !!!!



Avatar
Daniel.C
Bonjour.
Essaie plutôt :

Set plage = Range(Range("celluledebut").Address,
Range("cellulefin").Address).Offset(1)
Set plage = plage.Resize(plage.Rows.Count - 2)
If Intersect(ActiveCell, plage) Is Nothing Then
vReponse = MsgBox("Cette instruction n'est pas disponible" & Chr(13) & _
"à cet endroit de la feuille de soins", vbOKOnly, "Désolé")
Exit Sub
End If

Daniel
"Christian de BXL" a écrit dans
le message de news:
Bonjour Daniel,
Je te remercie de ta réponse, d'autant plus que tu es à l'origine de
l'instruction originale de limitation d'usage de macro, qui m'a déjà été
d'un
grand secours.
Présentement, j'ai essayé ta solution en insérant :

Set plage = Range(CelluleDebut & ":" & CelluleFin).Offset(1)
Set plage = plage.Resize(plage.Rows.Count - 2)
If Intersect(ActiveCell, plage) Is Nothing Then
vReponse = MsgBox("Cette instruction n'est pas disponible", vbOKOnly,
"Désolé")
Exit Sub
End If

en début de macro.
Cela ne fonctionne pas, la première ligne appelle "une erreur d'exécution
1004 La méthode "Range" de l'objet '_Global a échoué".
Erreur de ma part dans l'insertion des lignes ou autre erreur?
Merci à toi
Christian