Copier/Insérer les cellules copiées malgré une protection

Bonjour à Tous

Dans le cadre de mon travail, j'utilise un fichier qui a des nombreuses colonnes protégées.

Comme dit dans le titre, je souhaiterais pouvoir insérer des lignes entières copiées malgré la protection.

Les 2 problèmes majeures sont que le nombre de lignes à insérer est variable suivant la sélection de l'utilisateur et que l'emplacement de l'insertion est lui aussi défini par l'utilisateur.

Existe-t-il une solution avec une macro ou autre? Si oui, est ce que cette macro peut remplacer la macro "Insérer les cellules copiées" de base dans Excel; tous cela pour éviter que les utilisateurs soit perturber.

En espérant avoir été clair

D'avance merci

Salut atchoume50 et bienvenue sur le Forum,

atchoume50 a écrit :

Comme dit dans le titre, je souhaiterais pouvoir insérer des lignes entières copiées malgré la protection.

Alors pourquoi le protéger ?

Malgré tout, voici un code qui devrait aller dans le sens désiré :

Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim i As Integer

i = InputBox("Dès quelle ligne veux-tu placer la sélection ?")

ActiveSheet.Unprotect "qqq"
    Selection.Copy
    Range("A" & i).Select
    Selection.Insert Shift:=xlDown
    Application.CutCopyMode = False
    Range("E16").Select
ActiveSheet.Protect "qqq"

End Sub

Dans le fichier ci-joint – protégé par le mot de passe qqq – tu peux sélectionner une plage de cellules et cliquer-droit. Une fenêtre s’ouvre et te demande où placer la sélection et la place en fonction du numéro de la ligne que tu y indiques.

Pour l’instant il y a l’inconvénient que la fenêtre traditionnelle qui s’ouvre normalement après le clic-droit reste ouverte. Mais si tout le reste te convient, je vais continuer à chercher afin de résoudre se problème ou demander moi-même de l’aide sur le Forum.

Cordialement.

46atchoume50.zip (9.76 Ko)

Bonsoir Yvouille

Yvouille a écrit :

Alors pourquoi le protéger ?

Dans les colonnes protégées, il y a des formules qui prennent en compte pas mal de paramètres et je ne veut pas que les utilisateurs puissent les changer.

Pour ton code, c'est tout simplement génial.

Je compte y faire quelques arrangements pour être conforme à l'attente de mon employeur mais cela me donne une très bonne base de travail. En gros je pense demander par sélection l'emplacement de l'insertion au lieu de passer par une InputBox.

Yvouille a écrit :

Pour l’instant il y a l’inconvénient que la fenêtre traditionnelle qui s’ouvre normalement après le clic-droit reste ouverte

Effectivement la fenêtre traditionnelle s'affiche, j'essayerai de passer par un raccourci clavier pour passer outre.

Merci beaucoup pour ta réponse et ta rapidité

Bonsoir à tous,

L'évènement Worksheet_BeforeRightClick possède 2 paramètres (Target et Cancel).

En mettant en début de code :

Cancel = True

ceci désactivera le menu du clic droit

Salut Vba-New,

Là, c'est moi qui doit te remercier pour l'information

Bonnes salutations à tous deux.

Bonjour

Yvouille, j'ai remanié un peu ta macro de la façon suivante pour la faire marcher par un bouton:

 Sub insere()
Dim i As Integer

i = InputBox("Dès quelle ligne veux-tu placer la sélection ?")

ActiveSheet.Unprotect "toto"
    Selection.Copy
    With Range("A" & i)
    .Insert Shift:=xlDown
    End With
    Application.CutCopyMode = True
    ActiveSheet.Protect Password:="toto"
End Sub

Malheureusement j'ai quelques désagréments, j'ai été obliger de changer Selection.Insert Shift:=xlDown par With.... .Insert Shift:=xlDown. sinon cela ne marcher pas. Mais surtout la macro s'arrête avant Application.CutCopyMode = True et cela sans erreur, et bien sur cela ne me remet pas la protection.

Une seule question pourquoi ?

En faite 2 questions, Il y a t-il un moyen d'y remédier ?


Juste pour info j ai exactement le même problème avec un macro similaire:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim col As Long
    If Target.Column <> 1 Then Exit Sub
    Cancel = True

    ActiveSheet.Unprotect MDP  
    Rows(Target.Row).Copy
    Rows(Target.Row).Insert Shift:=xlDown
    Application.CutCopyMode = False
    ActiveSheet.Protect MDP
End Sub

Est ce dut à mon excel ou à autre chose?

Re-bonjour,

Sur la base de la macro placée sur mon premier fichier et déclenchée par un clic-droit, j’ai créé la macro placée dans un module du nouveau fichier ci-joint (mon nouveau code Sub Insérer_la_sélection() déclenché par un bouton). En fait, seul la première ligne a été modifiée et ça fonctionne très bien. Je pense que tu as voulu modifier trop de chose dans ton essai de macro Sub insere(), placé dans le fichier ci-joint juste à côté, dans le même module.

Cordialement.

54atchoume50-v1.zip (10.08 Ko)

Le probléme ne venait en aucun cas de ta macro, mais de formules que j'avais créées dans Excel.

Merci Beaucoup

Rechercher des sujets similaires à "copier inserer copiees protection"