XL 2016 Copier cellule dans un autre onglets

  • Initiateur de la discussion Initiateur de la discussion hutch57
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

hutch57

XLDnaute Occasionnel
Bonsoir le forum,
J'ai un petit souci de macro, je voudrais sauvegarder les cellules D a J dans un autre onglet sachant que dans la feuille les 2 onglets sont protégé par un mot de passe, c'est la que ca coince j'ai essayé de combiner les 2 modules en 1 seul mais ca ne fonctionne pas.
Module1
Sub SaveM2()

Sheets("DP").Select

Range("C6").Select
If ActiveCell = "" Then
MsgBox "UNE VALEUR EST OBLIGATOIRE POUR CETTE CELLULE"
End
End If

Range("D6").Select
If ActiveCell = "" Then
MsgBox "UNE VALEUR EST OBLIGATOIRE POUR CETTE CELLULE"
End
End If


Range("E6").Select
If ActiveCell = "" Then
MsgBox "UNE VALEUR EST OBLIGATOIRE POUR CETTE CELLULE"
End
End If

Range("F6").Select
If ActiveCell = "" Then
MsgBox "UNE VALEUR EST OBLIGATOIRE POUR CETTE CELLULE"
End
End If

Range("G6").Select
If ActiveCell = "" Then
MsgBox "UNE VALEUR EST OBLIGATOIRE POUR CETTE CELLULE"
End
End If

Range("H6").Select
If ActiveCell = "" Then
MsgBox "UNE VALEUR EST OBLIGATOIRE POUR CETTE CELLULE"
End
End If

Module2
Sub test()

ActiveSheet.Unprotect "1234"
Sheets("Datas").Select
ActiveSheet.Unprotect "1234"
Sheets("DP").Select
Range("B6:J6").Select
Selection.Copy
Sheets("Datas").Select
Range("A7").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("A8").Select
Application.CutCopyMode = False
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
False
Sheets("DP").Select
Range("D6:I6").Select
Selection.ClearContents
Range("D6").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

Un avis! en attendant j'essaye de faire mieux.
 

Pièces jointes

Rebonsoir,
C'est bon ca fonctionne j'ai trouver comment faire, par contre les feuille sont déprotégé puis reprotégé mais sans le mot de passe, bizarre.
Voici la macro modifier
Sub SaveM2()

Sheets("DP").Select


Range("C6").Select
If ActiveCell = "" Then
MsgBox "UNE VALEUR EST OBLIGATOIRE POUR CETTE CELLULE"
End
End If

Range("D6").Select
If ActiveCell = "" Then
MsgBox "UNE VALEUR EST OBLIGATOIRE POUR CETTE CELLULE"
End
End If


Range("E6").Select
If ActiveCell = "" Then
MsgBox "UNE VALEUR EST OBLIGATOIRE POUR CETTE CELLULE"
End
End If

Range("F6").Select
If ActiveCell = "" Then
MsgBox "UNE VALEUR EST OBLIGATOIRE POUR CETTE CELLULE"
End
End If

Range("G6").Select
If ActiveCell = "" Then
MsgBox "UNE VALEUR EST OBLIGATOIRE POUR CETTE CELLULE"
End
End If

Range("H6").Select
If ActiveCell = "" Then
MsgBox "UNE VALEUR EST OBLIGATOIRE POUR CETTE CELLULE"
End
End If


ActiveSheet.Unprotect "1234"
Sheets("Datas").Select
ActiveSheet.Unprotect "1234"
Sheets("DP").Select
Range("B6:J6").Select
Selection.Copy
Sheets("Datas").Select
Range("a65536").End(xlUp).Select

ActiveCell.Offset(rowOffset:=1, columnOffset:=0).Activate
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

Range("A8").Select
Application.CutCopyMode = False
ActiveSheet.Protect DrawingObjects:=False, Contents:=True, Scenarios:= _
False
Sheets("DP").Select
Range("D6:I6").Select
Selection.ClearContents
Range("D6").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub
 

Pièces jointes

Apres on peut faire mieux en macro je pense
Bonjour,
Par exemple
VB:
Sub SaveM2()
    Dim C As Range
    Application.ScreenUpdating = False
    With Feuil1
        For Each C In .[c6:i6]
            If C = "" Then
                MsgBox "UNE VALEUR EST OBLIGATOIRE POUR CETTE CELLULE (" & C.Offset(-1) & ")"
                C.Select: Exit Sub
            End If
        Next
        Feuil2.Unprotect "1234"
        .[b6:j6].Copy Feuil2.Range("a" & Feuil2.Cells(Rows.Count, "a").End(xlUp).Row + 1)
        Feuil2.Protect "1234"
    End With
End Sub
 

Pièces jointes

Bonsoir Jacky67,
C'est mieux mais l'heure ne change plus, j'avais mis cette formule dans la feuil1pour ca/
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("D6")) Is Nothing Then
If Target.Count > 1 Then Exit Sub
Sheets("DP").Select
ActiveSheet.Unprotect "1234"
Target.Offset(0, -2) = Date
End If

If Not Application.Intersect(Target, Range("D6")) Is Nothing Then
If Target.Count > 1 Then Exit Sub
Sheets("DP").Select
Target.Offset(0, -1) = Time
ActiveSheet.Protect "1234"
End If
End Sub

et il n'efface pas les cellules de D a J sur le feuille DP.
 
Bonsoir Jacky67,
C'est mieux mais l'heure ne change plus, j'avais mis cette formule dans la feuil1pour ca/
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("D6")) Is Nothing Then
If Target.Count > 1 Then Exit Sub
Sheets("DP").Select
ActiveSheet.Unprotect "1234"
Target.Offset(0, -2) = Date
End If

If Not Application.Intersect(Target, Range("D6")) Is Nothing Then
If Target.Count > 1 Then Exit Sub
Sheets("DP").Select
Target.Offset(0, -1) = Time
ActiveSheet.Protect "1234"
End If
End Sub

et il n'efface pas les cellules de D a J sur le feuille DP.
Ok
La date et l'heure se mettent à jour avec la validation.
La saisie s'efface après validation
 

Pièces jointes

@hutch57

Le code est assez facile à comprendre.

En gros c'est le nom des 2 feuilles que j'ai mise en variable cela évite de les répéter

Set Ws1 = Worksheets("DP") '<== c'est la feuille DP
Set Ws2 = Worksheets("Datas") '<== c'est la feuille Datas

Chaque fois que j'écris par exemple
Ws1.Range("D6:J6").Value = ""
C'est comme si j'écris
Worksheets("DP").Range("D6:J6").Value = ""
 
Phil,
par contre dans ma feuil1 j'avais ca en code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("D6")) Is Nothing Then
If Target.Count > 1 Then Exit Sub
Sheets("DP").Select
ActiveSheet.Unprotect "*1234*"
Target.Offset(0, -2) = Date
End If

If Not Application.Intersect(Target, Range("D6")) Is Nothing Then
If Target.Count > 1 Then Exit Sub
Sheets("DP").Select
Target.Offset(0, -1) = Time
ActiveSheet.Protect "*1234*"
End If
End Sub
Comment tu as intégrer ca dans le code
merci de ton retour
 
Notre forum d’entraide est 100 % gratuit et le restera.
Aucune formation payante, aucun fichier à acheter, rien à vendre. Mais comme tout site, nous devons couvrir nos frais pour continuer à vous accompagner.
Soutenez-nous en souscrivant à un compte membre : c’est rapide, vous choisissez simplement votre niveau de soutien et le tour est joué.

Je soutiens la communauté et j’accède à mon compte membre

Discussions similaires

Réponses
17
Affichages
855
Réponses
2
Affichages
111
  • Question Question
Microsoft 365 Probléme VBA
Réponses
5
Affichages
191
Réponses
4
Affichages
321
Réponses
5
Affichages
368
Retour