OVH Cloud OVH Cloud

insertion lignes

22 réponses
Avatar
j-pascal
Bonjour,

Comment est-il possible d'empêcher l'utilisateur d'insérer une ou plusieurs
lignes dans une feuille ?

Merci d'avance pour vos (éventuelles) réponses.

JP

10 réponses

1 2 3
Avatar
j-pascal
Je te remercie infiniment pour toutes ces explications, mais c'est beaucoup
trop compliqué pour moi ; à vrai dire je n'ai pas compris grand chose et ce
sujet n'est manifestement pas à ma portée intellectuelle.
Y-a-t-il des choses encore plus compliquées que celle-ci ? Rassure moi (si
tu veux bien pour finir sur le sujet) en me disant qu'on est quand même là à
un niveau (très très) subtile d'Excel !?!?

Merci encore pour ta patience,

JP


michdenis wrote:
Tout ceci est un peu long a expliqué mais je vais tenté se simplifier
au maximum !

Le module de classe "NewLines" défini une nouvelle "classe d'objet"
au même
titre qu'un objet range.

Sauf que la nouvelle Classe objet "NewLines" est toute simple ...
elle ne possède
qu'une propriété que j'ai appelée "Bouton" dans la ligne de code
suivante :
Public WithEvents Bouton As CommandBarButton

Public :
Lorsque l'on définit une "variable" comme Public dans un module de
classe,
cette "variable" porte officilement l'épithète de "propriété" de la
classe objet.
(C'est vrai aussi lorsque tu utilises une variable public dans un
module Feuille)

WithEvents de la déclaration signifie que l'objet utilisé possède un
ou des
ÉVÉNEMENTS associés à l'objet. À ce titre dès que tu as écris As ...
seule une liste d'objets ayant un événement ou des événements.
Si tu omettais WithEvents dans la déclaration, la liste suggérée
serait différente.

En définissant Bouton As CommandBarButton, ceci me donne accès à
l'événement Clic de l'objet Bouton.

Comme la nouvelle Classe objet "NewLines" n'est pas
connu de l'application Excel (tous les modules de classes possèdent
un numéro d'identification unique et sont référencés dans la base de
registre.
ce n'est pas le cas pour la nouvelle classe objet que je viens de
créer...elle
va être disponible que pour le temps que je désirerai pour
l'exécution du code)
j'utilise le code du module1 pour créer un tableau (array) de tous les
boutons de commandes du menu et ceci est d'abord réalisé par la
commande :

Dim Bar() As New NewLines
En utilisant le mot "New" je crée une instance de la classe objet
"NewLines" qui
est en même temps, le module de classe de l'objet.

La procédure "GroupeBoutons" va définir toutes commandes que va
contenir
l'objet " tableau Bar()"

Cette ligne de code de la procédure "GroupeBoutons"
Set Bar(Nb).Bouton = B.Controls(S.Caption)
associé a chaque élément du tableau la propriété du module de classe
qui va me donner accès à l'événement "Clic" du module de classe.

En conséquence, lorsque tu cliques sur une commande du menu,
l'événement
de la classe "NewLines" est appelé.

J'utilise alors la variable Ctrl défini par "ByVal Ctrl As
Office.CommandBarButton"
pour obtenir le ID -> action associée à chaque commande et par un
select case
j'identifie quelles actions je dois bloquer... pour ce faire, il y a
la variable
CancelDefault à laquelle je donne la valeur True pour annuler la
commande de
l'usager.

Voilà .

C'est pas grave même si tu n'as pas tout compris...Cette expérience
était
seulement pour mon bon plaisir .!

J'ai oublié d'insérer dans la procédure la commande "insérer" du menu
contextuel d'une cellule qui permet d'ajouter une ligne complète le
cas échéant.
le fichier suivant inhibe cette commande.

http://cjoint.com/?jCvv7dZbAM







"j-pascal" a écrit dans le message de news:

Bonsoir michdenis,

Merci.
Je constate que ça marche ! Par contre la msgbox n'apparaît pas
lorsque je
veux insérer une ligne par le menu contextuel (clic droit sur la
ligne) !

J'ai parfois entendu parler des "modules de classe" mais je n'ai
jamais
vraiment compris la particularité de ces derniers ;-(

J'imagine que le contenu de la feuil1 n'est pas indispensable ?

A quoi sert le code du module 1 ??

A+ ?

JP

PS : est-ce que le recours au "scrollArea" de la feuille pouvait être
envisagé pour résoudre ce "pb" ?


wrote:
Le fichier final est celui-ci...

j'ai omis d'effacer un bout de code inutile
lors du copier-coller.

http://cjoint.com/?jCouV7uOhX



"j-pascal" a écrit dans le message de news:

Bonjour,

Comment est-il possible d'empêcher l'utilisateur d'insérer une ou
plusieurs lignes dans une feuille ?

Merci d'avance pour vos (éventuelles) réponses.

JP




Avatar
j-pascal
Re,

J'espère ne pas avoir été trop indélicat en évoquant la solution d'un
"concurrent" ;-)
Sinon, je te prie d'excuser cette audace.

Bonsoir,

JP


michdenis wrote:
Est-il possible par le biais d'une macro de récupérer ce "msg"
d'erreur


C'est sûrement possible, il faut demander à Rama...

Effectivement, son approche est très bien...ce, jusqu'au moment où
quelqu'un fera disparaître le contenu de IV65536

Si l'usager fait Atteindre / dernière cellule / où atterrit-il ?
;-)



"j-pascal" a écrit dans le message de news:

Re,

Question subsidiaire ... RaMa propose un truc simple mais efficace
... Si on essaye d'insérer une ligne, on a un msg disant à peu près
"il est impossible de déplacer des données dans une zone, etc".
Est-il possible par le biais d'une macro de récupérer ce "msg"
d'erreur avant qu'il ne s'affiche et éventuellement afficher une
autre msgbox ? Je crains que cette question ne soit stupide, mais bon
elle me traverse l'esprit !

JP


michdenis wrote:
Le fichier final est celui-ci...

j'ai omis d'effacer un bout de code inutile
lors du copier-coller.

http://cjoint.com/?jCouV7uOhX



"j-pascal" a écrit dans le message de news:

Bonjour,

Comment est-il possible d'empêcher l'utilisateur d'insérer une ou
plusieurs lignes dans une feuille ?

Merci d'avance pour vos (éventuelles) réponses.

JP




Avatar
isabelle
| Est-il possible par le biais d'une macro de récupérer ce "msg" d'erreur

C'est sûrement possible, il faut demander à Rama...

Effectivement, son approche est très bien...ce, jusqu'au moment où quelqu'un
fera disparaître le contenu de IV65536


!!Attention seul la geôlière a les clef de cette cellule !!! ;-)
hola à une mutinerie..
isabelle

Avatar
michdenis
Voici la dernière version du fichier http://cjoint.com/?jDeHGkqx6K
Je crois qu'il remplit bien la tâche demandée.

au besoin, ne te gêne pas pour l'améliorer ou la modifier !
Avatar
michdenis
| J'espère ne pas avoir été trop indélicat en évoquant la solution d'un "concurrent" ;-)

Je ne me connais pas de concurrent ici ...
si j'y suis, c'est seulement pour mon bon plaisir...
Avatar
michdenis
| Effectivement, son approche est très bien...ce, jusqu'au moment où quelqu'un
| fera disparaître le contenu de IV65536

| Attention seul la geôlière a les clef de cette cellule !!! ;-)
| hola à une mutinerie..
| isabelle

C'est petit jeune... ça ne respecte plus rien ! ;-)
Tu leur fait faire un peu de temps dans ta geôle
suite à un séjour ténébreux de Sieur du Beaujolais !
Ils vont comprendre ! ;-)
Avatar
michdenis
!!Attention seul la geôlière a les clef de cette cellule !!! ;-)
hola à une mutinerie..
isabelle


Ces petits jeunes... ça ne respecte plus rien ! ;-)
Tu leur fais faire un peu de temps dans ta geôle
suite à un séjour ténébreux de Sieur du Beaujolais !
Ils vont comprendre ! ;-)
Avatar
j-pascal
Bonsoir michdenis

wrote:
Voici la dernière version du fichier http://cjoint.com/?jDeHGkqx6K
Je crois qu'il remplit bien la tâche demandée.

au besoin, ne te gêne pas pour l'améliorer ou la modifier !


Dans 10 ou 20 ans, peut-être ;-)

JP

Avatar
RaMa
Bonsoir MichDenis

Attention avec Ctrl+ çà insère

Salutations

RaMa

"michdenis" a écrit dans le message de news:

Voici la dernière version du fichier http://cjoint.com/?jDeHGkqx6K
Je crois qu'il remplit bien la tâche demandée.

au besoin, ne te gêne pas pour l'améliorer ou la modifier !







Avatar
michdenis
Pourquoi viens-tu jouer le trouble-fête ? ;-)

Est-ce qu'il y en a d'autres raccourci qui insère des lignes
dans une feuille de calul...

On va leur faire un traitement de groupe pour le même prix !
;-)


"RaMa" a écrit dans le message de news: OCeR02$
Bonsoir MichDenis

Attention avec Ctrl+ çà insère

Salutations

RaMa

"michdenis" a écrit dans le message de news:

Voici la dernière version du fichier http://cjoint.com/?jDeHGkqx6K
Je crois qu'il remplit bien la tâche demandée.

au besoin, ne te gêne pas pour l'améliorer ou la modifier !







1 2 3