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

collage qui coince si la feuille est protégée [VBA XL2K]

7 réponses
Avatar
J
Bonjour à tous (Excel 2000)

Dans une feuille protégée par .Protect UserInterfaceOnly:=True
je souhaite permettre de copier une ligne et de la coller là où met son
curseur.
Ex :
l'utilisateur sélectionne la ligne 20, à la main, puis insère son
curseur n'importe où dans une autre ligne et actionne un code qui colle
la ligne.

Le code suivant fonctionne si la feuille n'est *pas* protégée, plante
sinon : Erreur 1004.

Sub colleLigne()
With ActiveSheet
.Unprotect
ActiveCell.EntireRow.PasteSpecial
Application.CutCopyMode = False
End With
End Sub

Que faire, SVP, Merci.

cordialement
J@@

7 réponses

Avatar
isabelle
salut J@@,

je ne sais pas d'où provient le copy mais à tout hasard,

With ActiveSheet
.Unprotect
Set x = Rows(Selection.Row)
Set y = Application.InputBox(prompt:="Sélectionner une cellule de la
colonne A pour coller la ligne", Type:=8)
x.Copy y
Application.CutCopyMode = False
.Protect
End With


isabelle



Le 2011-01-29 22:51, J@@ a écrit :
Bonjour à tous (Excel 2000)

Dans une feuille protégée par .Protect UserInterfaceOnly:=True
je souhaite permettre de copier une ligne et de la coller là où met
son curseur.
Ex :
l'utilisateur sélectionne la ligne 20, à la main, puis insère son
curseur n'importe où dans une autre ligne et actionne un code qui
colle la ligne.

Le code suivant fonctionne si la feuille n'est *pas* protégée, plante
sinon : Erreur 1004.

Sub colleLigne()
With ActiveSheet
.Unprotect
ActiveCell.EntireRow.PasteSpecial
Application.CutCopyMode = False
End With
End Sub

Que faire, SVP, Merci.

cordialement
J@@
Avatar
michdenis
Bonjour,

Tu peux aussi utiliser ceci :

A ) si la feuille a été protégée en utilisant le paramètre UserInterfaceOnly:=True
Tu n'as nul besoin de déprotéger la feuille pour exécuter une macro sur cette
feuille.

B ) La petite procédure suivante va coller ce qui est dans le presse-papier à partir
de la colonne 1 de la cellule active sur la feuille active. Si tu veux coller une
ligne entière, cela ne peut se faire que si c'est fait à partir de la colonne 1,
chaque ligne ayant le même nombre de colonnes.

C ) If Application.CutCopyMode > 0 Then s'assure que l'opération "Paste" est
disponible.

'--------------------------------------
Sub colleLigne()
If Application.CutCopyMode > 0 Then
With ActiveCell
.Offset(, -(ActiveCell.Column - 1)).PasteSpecial
Application.CutCopyMode = False
End With
End If
End Sub
'--------------------------------------


MichD
--------------------------------------------
"J@@" a écrit dans le message de groupe de discussion : ii2n8o$3lj$

Bonjour à tous (Excel 2000)

Dans une feuille protégée par .Protect UserInterfaceOnly:=True
je souhaite permettre de copier une ligne et de la coller là où met son
curseur.
Ex :
l'utilisateur sélectionne la ligne 20, à la main, puis insère son
curseur n'importe où dans une autre ligne et actionne un code qui colle
la ligne.

Le code suivant fonctionne si la feuille n'est *pas* protégée, plante
sinon : Erreur 1004.

Sub colleLigne()
With ActiveSheet
.Unprotect
ActiveCell.EntireRow.PasteSpecial
Application.CutCopyMode = False
End With
End Sub

Que faire, SVP, Merci.

cordialement
J@@
Avatar
J
Bonjour Isabelle
et merci, cela fonctionne bien.
En fait je pensais utiliser le menu contextuel pour lancer l'action et
coller sur la dernière ligne vide.

Je coince pour modifier la ligne suivante :
Set y = Cells(Rows.Count, ActiveCell.Column).End(xlUp)

Merci
@+
J@@

Le 29/01/2011 19:30, isabelle a écrit :
salut J@@,

je ne sais pas d'où provient le copy mais à tout hasard,

With ActiveSheet
.Unprotect
Set x = Rows(Selection.Row)
Set y = Application.InputBox(prompt:="Sélectionner une cellule de la
colonne A pour coller la ligne", Type:=8)
x.Copy y
Application.CutCopyMode = False
.Protect
End With


isabelle



Le 2011-01-29 22:51, J@@ a écrit :
Bonjour à tous (Excel 2000)

Dans une feuille protégée par .Protect UserInterfaceOnly:=True
je souhaite permettre de copier une ligne et de la coller là où met
son curseur.
Ex :
l'utilisateur sélectionne la ligne 20, à la main, puis insère son
curseur n'importe où dans une autre ligne et actionne un code qui
colle la ligne.

Le code suivant fonctionne si la feuille n'est *pas* protégée, plante
sinon : Erreur 1004.

Sub colleLigne()
With ActiveSheet
.Unprotect
ActiveCell.EntireRow.PasteSpecial
Application.CutCopyMode = False
End With
End Sub

Que faire, SVP, Merci.

cordialement
J@@
Avatar
J
Bonjour michdenis
merci pour ton aide,

quand la feuille est déprotégée, le code fonctionne,

mais pas quand la feuille est protégée (dans la feuille j'ai le code
marque ligne de Gaetan Mourmant s'achevant par une protection avec
UserInterfaceOnly:=True
Dans ce cas le code (testé en pas à pas) passe à la fin sans coller
If Application.CutCopyMode> 0 Then
End if

Que dois-je faire ?
merci
@+
J@@

Le 30/01/2011 01:53, michdenis a écrit :
Bonjour,

Tu peux aussi utiliser ceci :

A ) si la feuille a été protégée en utilisant le paramètre UserInterfaceOnly:=True
Tu n'as nul besoin de déprotéger la feuille pour exécuter une macro sur cette
feuille.

B ) La petite procédure suivante va coller ce qui est dans le presse-papier à partir
de la colonne 1 de la cellule active sur la feuille active. Si tu veux coller une
ligne entière, cela ne peut se faire que si c'est fait à partir de la colonne 1,
chaque ligne ayant le même nombre de colonnes.

C ) If Application.CutCopyMode> 0 Then s'assure que l'opération "Paste" est
disponible.

'--------------------------------------
Sub colleLigne()
If Application.CutCopyMode> 0 Then
With ActiveCell
.Offset(, -(ActiveCell.Column - 1)).PasteSpecial
Application.CutCopyMode = False
End With
End If
End Sub
'--------------------------------------


MichD
--------------------------------------------
"J@@" a écrit dans le message de groupe de discussion : ii2n8o$3lj$

Bonjour à tous (Excel 2000)

Dans une feuille protégée par .Protect UserInterfaceOnly:=True
je souhaite permettre de copier une ligne et de la coller là où met son
curseur.
Ex :
l'utilisateur sélectionne la ligne 20, à la main, puis insère son
curseur n'importe où dans une autre ligne et actionne un code qui colle
la ligne.

Le code suivant fonctionne si la feuille n'est *pas* protégée, plante
sinon : Erreur 1004.

Sub colleLigne()
With ActiveSheet
.Unprotect
ActiveCell.EntireRow.PasteSpecial
Application.CutCopyMode = False
End With
End Sub

Que faire, SVP, Merci.

cordialement
J@@

Avatar
J
Bon voila ce qui va :
Set y = Cells(Rows.Count, ActiveCell.Column).End(xlUp)(2)

Me reste à intégrer cela dans le menu contextuel
@+
J@@

Le 30/01/2011 07:15, J@@ a écrit :
Bonjour Isabelle
et merci, cela fonctionne bien.
En fait je pensais utiliser le menu contextuel pour lancer l'action et
coller sur la dernière ligne vide.

Je coince pour modifier la ligne suivante :
Set y = Cells(Rows.Count, ActiveCell.Column).End(xlUp)

Merci
@+
J@@

Le 29/01/2011 19:30, isabelle a écrit :
salut J@@,

je ne sais pas d'où provient le copy mais à tout hasard,

With ActiveSheet
.Unprotect
Set x = Rows(Selection.Row)
Set y = Application.InputBox(prompt:="Sélectionner une cellule de la
colonne A pour coller la ligne", Type:=8)
x.Copy y
Application.CutCopyMode = False
.Protect
End With


isabelle



Le 2011-01-29 22:51, J@@ a écrit :
Bonjour à tous (Excel 2000)

Dans une feuille protégée par .Protect UserInterfaceOnly:=True
je souhaite permettre de copier une ligne et de la coller là où met
son curseur.
Ex :
l'utilisateur sélectionne la ligne 20, à la main, puis insère son
curseur n'importe où dans une autre ligne et actionne un code qui
colle la ligne.

Le code suivant fonctionne si la feuille n'est *pas* protégée, plante
sinon : Erreur 1004.

Sub colleLigne()
With ActiveSheet
.Unprotect
ActiveCell.EntireRow.PasteSpecial
Application.CutCopyMode = False
End With
End Sub

Que faire, SVP, Merci.

cordialement
J@@





Avatar
michdenis
Un petit fichier exemple : http://cjoint.com/?0bFwSsmCMAS

MichD
--------------------------------------------
Avatar
J
Bonjour MichD
excellent
merci
@+
J@@

Le 31/01/2011 11:44, michdenis a écrit :
Un petit fichier exemple : http://cjoint.com/?0bFwSsmCMAS

MichD
--------------------------------------------