Problème macro

thri

XLDnaute Junior
Bonjour,
La macro fonctionne très bien quand la feuille bd n'est pas protègée, quand elle est protégée ça ne passe pas a l'endroit

Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

Pourtant j"ai déprotégé et reprotégé dans la macro !!!

Sub Modification()
'
' Modification Macro
If MsgBox("Confirmation de la modification de la carte,si des données sont supprimées la cellule en vert activation pour supprimer des données doit être activée. ", vbYesNo, "Modification") = vbYes Then
ActiveSheet.Unprotect
Range("A4:DD4").Select
Selection.Copy
Sheets("Bd").Select
ActiveSheet.Unprotect
Range("A" & [param_no_ligne] + 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("Formule").Select
Application.CutCopyMode = False
Selection.Copy
Range("DE" & [param_no_ligne] + 1).Select
ActiveSheet.Paste
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
True
Sheets("Consultation").Select
Range("O12:W12").Select
Selection.ClearContents
Range("O13:R14").Select
Selection.ClearContents
Range("S14:Z14").Select
Selection.ClearContents
Range("O15:Z32").Select
Selection.ClearContents
Range("O12").Select
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
True
End If
End Sub

Merci de votre aide, je n'arrive pas à comprendre!!!!
 

JNP

XLDnaute Barbatruc
Re : Problème macro

Bonsoir Thri :),
A priori, ta première déprotection se fait sur l'ActiveSheet. Est-ce la bonne feuille qui est activée ? Evite tous les Active et Select que tu peux, ça augmentera la vitesse de ton code et la clarté pour la lecture...
Donc utilise plutôt Sheets("Consultation").Unprotect, Range("A4:D4").Copy, avec éventuellement une structure With Sheets("Consultation") ... End With pour pouvoir faire appel aux cellules en .Range("A4:D4").
Bon courage :cool:
 

thri

XLDnaute Junior
Re : Problème macro

Bonsoir JNS,
Merci pour ta réponse
J'ai configurer la macro comme tu le dis, pas de changement, elle fonctionne quand la feuille bd est déprotégée et bloque toujours au même endroit une fois protégée.
Si quelqu'un a une idée
Merci
 

JNP

XLDnaute Barbatruc
Re : Problème macro

Re :),
En supprimant tous les Protect et Unprotect, essaie de mettre en début de macro
Code:
Dim Feuille As Worksheet
On Error Resume Next
For Each Feuille In ThisWorkbook.Worksheets
Feuille.Unprotect
Next
On Error GoTo 0
et en fin de macro
Code:
On Error Resume Next
For Each Feuille In ThisWorkbook.Worksheets
Feuille.Protect DrawingObjects:=False, Contents:=True, Scenarios:=True
Next
On Error GoTo 0
Bête question, tu n'as pas mis de mot de passe à la protection ?
Bonne soirée :cool:
 

Etienne2323

XLDnaute Impliqué
Re : Problème macro

Bonjour thri, JNP, le forum,
en prenant en considération les conseils de JNP, il y a moyen également de supprimer les lignes inutiles pour épurer votre code.

Voici un exemple en espérant que cela puisse vous aider.

Code:
Sub Modification()

Dim Feuille As Worksheet
On Error Resume Next
For Each Feuille In ThisWorkbook.Worksheets
Feuille.Unprotect
Next
On Error GoTo 0


If MsgBox("Confirmation de la modification de la carte, si des données sont supprimées la cellule en vert activation pour supprimer des données doit être activée. ", vbYesNo, "Modification") = vbYes Then
    Range("A4:D4").Copy
    
    Sheets("Bd").Select
    ActiveSheet.Unprotect
    Range("A" & [param_no_ligne] + 1).PasteSpecial Paste:=xlPasteValues
    Range("Formule").Copy
    Range("DE" & [param_no_ligne] + 1).Select
    ActiveSheet.Paste
    ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
    True

    Sheets("Consultation").Select
    Range("O12:W12").ClearContents
    Range("O13:R14").ClearContents
    Range("S14:Z14").ClearContents
    Range("O15:Z32").ClearContents
    Range("O12").Select
    ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
    True
End If

On Error Resume Next
For Each Feuille In ThisWorkbook.Worksheets
Feuille.Protect DrawingObjects:=False, Contents:=True, Scenarios:=True
Next
On Error GoTo 0

End Sub

Cordialement,

Étienne
 

JNP

XLDnaute Barbatruc
Re : Problème macro

Re :),
Merci pour la condensation, mais ce serait encore plus condensé
Code:
Sub Modification()
Dim Feuille As Worksheet
On Error Resume Next
For Each Feuille In ThisWorkbook.Worksheets
Feuille.Unprotect
Next
On Error GoTo 0
If MsgBox("Confirmation de la modification de la carte, si des données sont supprimées la cellule " & _
    "en vert activation pour supprimer des données doit être activée. ", vbYesNo, "Modification") = vbYes Then
    Sheets("Consultation").Range("A4:D4").Copy
    With Sheets("Bd")
        .Range("A" & [param_no_ligne] + 1).PasteSpecial Paste:=xlPasteValues
        .Range("Formule").Copy
        .Range("DE" & [param_no_ligne] + 1).Paste
    End With
    With Sheets("Consultation")
    .Range("O12:W12", "O13:R14", "S14:Z14", "O15:Z32").ClearContents
    .Range("O12").Select
End If
On Error Resume Next
For Each Feuille In ThisWorkbook.Worksheets
Feuille.Protect DrawingObjects:=False, Contents:=True, Scenarios:=True
Next
On Error GoTo 0
End Sub
comme cela.
Mais l'intention était très bonne ;).
Bonne continuation :cool:
 

JNP

XLDnaute Barbatruc
Re : Problème macro

Re :),
Difficile à dire sans le fichier... Un problème de compatibilité entre ta zone nommée Formule et ton Range ?
Tu peux aussi essayer
Code:
        .Range("Formule").Copy .Range("DE" & [param_no_ligne] + 1)
mais ça devrait pas changer grand chose...
Bon courage :cool:
 

Etienne2323

XLDnaute Impliqué
Re : Problème macro

Bonjour thri, JNP, le forum,
@trhi
C'est un plaisir. Si tu as d'autres questions, n'hésite pas.

@JNP
C'était un beau cours de condensation ici. Je n'ai d'autre choix que de vous lever mon chapeau. Jumeler efficacité et élégance, c'est un art ;)
Au plaisir de vous recroiser !

Étienne
 

Discussions similaires

Réponses
2
Affichages
149
Réponses
5
Affichages
174

Statistiques des forums

Discussions
312 480
Messages
2 088 756
Membres
103 947
dernier inscrit
Quentin_sf