Ajouter une ligne sur plusieurs feuilles vérouiller
Résolu
David DURAN
-
fred -
fred -
Bonjour,
Je suis conscient que la question a été posé mainte fois. Novice en VBA, je n'arrive pas à trouver l'erreur.
Voici mon code :
Sub ajout_ligne_par_feuilles()
Dim s As Worksheet, ligne&
ligne = InputBox("A quelle position voulez-vous insérer une nouvelle ligne?", "N° Ligne")
For Each s In Worksheets
Select Case s.Name
Case "Sept", "Sept rectifié", "Oct", "Oct rectifié", "Nov", "Nov rectifié", "Déc", "Déc rectifié", "Janv", "Janv rectifié", "Févr", "Févr rectifié", "Mars", "Mars rectifié", "Avril", "Avril rectifié", "Mai", "Mai rectifié", "Juin", "Juin rectifié", "Juillet", "Juillet rectifié", "Récap", "Détails"
s.Rows(ligne).Copy
s.Rows(ligne).Insert Shift:=xlDown
End Select
Next s
Application.CutCopyMode = False
End Sub
Je voulais rajouter les lignes suivantes pour déverrouiller et verrouiller automatiquement les feuilles :
Sub ajout_ligne_par_feuilles()
ActiveSheet.Unprotect ("MotdePasse")
Dim s As Worksheet, ligne&
ligne = InputBox("A quelle position voulez-vous insérer une nouvelle ligne?", "N° Ligne")
For Each s In Worksheets
Select Case s.Name
Case "Sept", "Sept rectifié", "Oct", "Oct rectifié", "Nov", "Nov rectifié", "Déc", "Déc rectifié", "Janv", "Janv rectifié", "Févr", "Févr rectifié", "Mars", "Mars rectifié", "Avril", "Avril rectifié", "Mai", "Mai rectifié", "Juin", "Juin rectifié", "Juillet", "Juillet rectifié", "Récap", "Détails"
s.Rows(ligne).Copy
s.Rows(ligne).Insert Shift:=xlDown
End Select
Next s
Application.CutCopyMode = False
ActiveSheet.Protect ("MotdePasse")
End Sub
Mais cela ne fonctionne pas.
Merci d'avance pour votre soutien.
Je suis conscient que la question a été posé mainte fois. Novice en VBA, je n'arrive pas à trouver l'erreur.
Voici mon code :
Sub ajout_ligne_par_feuilles()
Dim s As Worksheet, ligne&
ligne = InputBox("A quelle position voulez-vous insérer une nouvelle ligne?", "N° Ligne")
For Each s In Worksheets
Select Case s.Name
Case "Sept", "Sept rectifié", "Oct", "Oct rectifié", "Nov", "Nov rectifié", "Déc", "Déc rectifié", "Janv", "Janv rectifié", "Févr", "Févr rectifié", "Mars", "Mars rectifié", "Avril", "Avril rectifié", "Mai", "Mai rectifié", "Juin", "Juin rectifié", "Juillet", "Juillet rectifié", "Récap", "Détails"
s.Rows(ligne).Copy
s.Rows(ligne).Insert Shift:=xlDown
End Select
Next s
Application.CutCopyMode = False
End Sub
Je voulais rajouter les lignes suivantes pour déverrouiller et verrouiller automatiquement les feuilles :
Sub ajout_ligne_par_feuilles()
ActiveSheet.Unprotect ("MotdePasse")
Dim s As Worksheet, ligne&
ligne = InputBox("A quelle position voulez-vous insérer une nouvelle ligne?", "N° Ligne")
For Each s In Worksheets
Select Case s.Name
Case "Sept", "Sept rectifié", "Oct", "Oct rectifié", "Nov", "Nov rectifié", "Déc", "Déc rectifié", "Janv", "Janv rectifié", "Févr", "Févr rectifié", "Mars", "Mars rectifié", "Avril", "Avril rectifié", "Mai", "Mai rectifié", "Juin", "Juin rectifié", "Juillet", "Juillet rectifié", "Récap", "Détails"
s.Rows(ligne).Copy
s.Rows(ligne).Insert Shift:=xlDown
End Select
Next s
Application.CutCopyMode = False
ActiveSheet.Protect ("MotdePasse")
End Sub
Mais cela ne fonctionne pas.
Merci d'avance pour votre soutien.
A voir également:
- Ajouter une ligne sur plusieurs feuilles vérouiller
- Partager photos en ligne - Guide
- Comment faire un livret avec des feuilles a4 - Guide
- Ajouter une signature sur word - Guide
- Mètre en ligne - Guide
- Regrouper plusieurs feuilles excel en une seule - Guide
4 réponses
Bonjour David,
Enlève déjà les parenthèses inutiles :
Ensuite, il faut bien sûr que le mot de passe soit le bon. ;)
⚠ Majuscules différent des minuscules ! "A" <> "a"
Cordialement
Enlève déjà les parenthèses inutiles :
Sub ajout_ligne_par_feuilles() ActiveSheet.Unprotect "MotdePasse" . . . ActiveSheet.Protect "MotdePasse" End Sub
Ensuite, il faut bien sûr que le mot de passe soit le bon. ;)
⚠ Majuscules différent des minuscules ! "A" <> "a"
Cordialement
Bonjour,
Suite à la proposition de Fred, j’ai enlevé les parenthèse comme expliqué ci-dessus. Cependant, lorsque je lance la macro pour ajouter une ligne (avec les feuilles verrouillées) il m’indique le message suivant « erreur d’exécution 1004 – la méthode Insert de la classe Range a échoué». Lorsque je lance le mode débogage il m’indique la ligne en gras ci-dessous :
Sub ajout_ligne_par_feuilles()
ActiveSheet.Unprotect "MotdePasse"
Dim s As Worksheet, ligne&
ligne = InputBox("A quelle position voulez-vous insérer une nouvelle ligne?", "N° Ligne")
For Each s In Worksheets
Select Case s.Name
Case "Sept", "Sept rectifié", "Oct", "Oct rectifié", "Nov", "Nov rectifié", "Déc", "Déc rectifié", "Janv", "Janv rectifié", "Févr", "Févr rectifié", "Mars", "Mars rectifié", "Avril", "Avril rectifié", "Mai", "Mai rectifié", "Juin", "Juin rectifié", "Juillet", "Juillet rectifié", "Récap", "Détails"
s.Rows(ligne).Copy
s.Rows(ligne).Insert Shift:=xlDown
End Select
Next s
Application.CutCopyMode = False
ActiveSheet.Protect "MotdePasse"
End Sub
Merci pour votre aide,
Suite à la proposition de Fred, j’ai enlevé les parenthèse comme expliqué ci-dessus. Cependant, lorsque je lance la macro pour ajouter une ligne (avec les feuilles verrouillées) il m’indique le message suivant « erreur d’exécution 1004 – la méthode Insert de la classe Range a échoué». Lorsque je lance le mode débogage il m’indique la ligne en gras ci-dessous :
Sub ajout_ligne_par_feuilles()
ActiveSheet.Unprotect "MotdePasse"
Dim s As Worksheet, ligne&
ligne = InputBox("A quelle position voulez-vous insérer une nouvelle ligne?", "N° Ligne")
For Each s In Worksheets
Select Case s.Name
Case "Sept", "Sept rectifié", "Oct", "Oct rectifié", "Nov", "Nov rectifié", "Déc", "Déc rectifié", "Janv", "Janv rectifié", "Févr", "Févr rectifié", "Mars", "Mars rectifié", "Avril", "Avril rectifié", "Mai", "Mai rectifié", "Juin", "Juin rectifié", "Juillet", "Juillet rectifié", "Récap", "Détails"
s.Rows(ligne).Copy
s.Rows(ligne).Insert Shift:=xlDown
End Select
Next s
Application.CutCopyMode = False
ActiveSheet.Protect "MotdePasse"
End Sub
Merci pour votre aide,
Bonjour Fred,
Je viens d'essayer ta proposition :
Sub ajout_ligne_par_feuilles()
ActiveSheet.Unprotect "MotdePasse"
Dim s As Worksheet, ligne&
ligne = Val(InputBox("A quelle position voulez-vous insérer une nouvelle ligne?", "N° Ligne"))
If ligne = 0 Then Exit Sub
For Each s In Worksheets
Select Case s.Name
Case "Sept", "Sept rectifié", "Oct", "Oct rectifié", "Nov", "Nov rectifié", "Déc", "Déc rectifié", "Janv", "Janv rectifié", "Févr", "Févr rectifié", "Mars", "Mars rectifié", "Avril", "Avril rectifié", "Mai", "Mai rectifié", "Juin", "Juin rectifié", "Juillet", "Juillet rectifié", "Récap", "Détails"
s.Rows(ligne).Copy
s.Rows(ligne).Insert Shift:=xlDown
End Select
Next s
Application.CutCopyMode = False
ActiveSheet.Protect "MotdePasse"
End Sub
Malheureusement, j'ai le même message d'erreur.
Veux-tu que je te fasse parvenir le fichier pour une meilleure compréhension du problème ?
Merci encore de me consacrer de ton temps.
Je viens d'essayer ta proposition :
Sub ajout_ligne_par_feuilles()
ActiveSheet.Unprotect "MotdePasse"
Dim s As Worksheet, ligne&
ligne = Val(InputBox("A quelle position voulez-vous insérer une nouvelle ligne?", "N° Ligne"))
If ligne = 0 Then Exit Sub
For Each s In Worksheets
Select Case s.Name
Case "Sept", "Sept rectifié", "Oct", "Oct rectifié", "Nov", "Nov rectifié", "Déc", "Déc rectifié", "Janv", "Janv rectifié", "Févr", "Févr rectifié", "Mars", "Mars rectifié", "Avril", "Avril rectifié", "Mai", "Mai rectifié", "Juin", "Juin rectifié", "Juillet", "Juillet rectifié", "Récap", "Détails"
s.Rows(ligne).Copy
s.Rows(ligne).Insert Shift:=xlDown
End Select
Next s
Application.CutCopyMode = False
ActiveSheet.Protect "MotdePasse"
End Sub
Malheureusement, j'ai le même message d'erreur.
Veux-tu que je te fasse parvenir le fichier pour une meilleure compréhension du problème ?
Merci encore de me consacrer de ton temps.
Désolé Fred, j'ai oublié de déverrouiller le fichier. Voici le fichier déverrouiller.
https://mon-partage.fr/f/zI554N9f/
Cordialement.
https://mon-partage.fr/f/zI554N9f/
Cordialement.
Bonjour Fred,
Je tiens à te remercier fortement pour le temps et surtout le travail que tu as effectué sur mon fichier. Rien que cela est formidable.
Je regarderai les détails ce soir (vie de famille oblige). Mon premier ressenti est que tu as réorganisé l'ensemble des VBA et j'ai l'impression que l'exécution des macros est plus rapide.
Je te tiens au courant et encore merci pour ta disponibilité.
Je tiens à te remercier fortement pour le temps et surtout le travail que tu as effectué sur mon fichier. Rien que cela est formidable.
Je regarderai les détails ce soir (vie de famille oblige). Mon premier ressenti est que tu as réorganisé l'ensemble des VBA et j'ai l'impression que l'exécution des macros est plus rapide.
Je te tiens au courant et encore merci pour ta disponibilité.
Par la même occasion, je voulais savoir ce que tu penses de cette VBA sachant que l'objectif est de simplifier la manipulation du bouton "ajouter une ligne" et "ajouter agent" en positionnant le curseur sur l'emplacement vide où le nom de l'agent doit être écrit (j'espère que je suis clair) :
Sub Ajout_CDD()
Application.ScreenUpdating = False ' pour accélérer le processus
'Déverrouiller toutes les feuilles
Dim nombre As Integer
Dim Motdepasse As String
Motdepasse = "MotdePasse"
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Unprotect Password:=Motdepasse
Next i
' Ajout CDD Macro
Sheets("Sept").Select
Range("A7").Select
Selection.End(xlDown).Offset(1, 0).Select
' Ajout ligne
Dim Ligne As Long, F As Integer
Ligne = ActiveCell.Row
For F = 1 To Sheets.Count
If Not (Sheets(F).Name = "Accueil") Then
Sheets(F).Rows(Ligne).Copy
Sheets(F).Rows(Ligne).Insert Shift:=xlDown
End If
Next F
Application.CutCopyMode = False
' Verrouiller toutes les feuilles
Motdepasse = "celietta66"
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect Password:=Motdepasse
Next i
Application.ScreenUpdating = True
End Sub
En te remerciant,
Sub Ajout_CDD()
Application.ScreenUpdating = False ' pour accélérer le processus
'Déverrouiller toutes les feuilles
Dim nombre As Integer
Dim Motdepasse As String
Motdepasse = "MotdePasse"
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Unprotect Password:=Motdepasse
Next i
' Ajout CDD Macro
Sheets("Sept").Select
Range("A7").Select
Selection.End(xlDown).Offset(1, 0).Select
' Ajout ligne
Dim Ligne As Long, F As Integer
Ligne = ActiveCell.Row
For F = 1 To Sheets.Count
If Not (Sheets(F).Name = "Accueil") Then
Sheets(F).Rows(Ligne).Copy
Sheets(F).Rows(Ligne).Insert Shift:=xlDown
End If
Next F
Application.CutCopyMode = False
' Verrouiller toutes les feuilles
Motdepasse = "celietta66"
nombre = ActiveWorkbook.Sheets.Count
Application.ScreenUpdating = False
For i = 1 To nombre
Worksheets(i).Protect Password:=Motdepasse
Next i
Application.ScreenUpdating = True
End Sub
En te remerciant,
Bonjour David,
Merci du retour ; j'ai bien lu tes 3 derniers messages ;
pour celui d'hier à 19:22, je te propose ce code VBA :
Sub Ajout_CDD() 'Déverrouiller toutes les feuilles Dim MotdePasse As String, nombre As Integer, i As Integer MotdePasse = "password": nombre = ActiveWorkbook.Sheets.Count Application.ScreenUpdating = False ' pour accélérer le processus For i = 1 To nombre Worksheets(i).Unprotect MotdePasse Next i ' Ajout CDD GoFX "Sept", "A7": [A7].End(xlDown).Offset(1).Select ' Ajout ligne Dim Ligne As Long: Ligne = ActiveCell.Row For i = 1 To nombre With Worksheets(i) If .Name <> "Accueil" Then .Rows(Ligne).Copy: .Rows(Ligne).Insert Shift:=xlDown End If End With Next i Application.CutCopyMode = False ' Verrouiller toutes les feuilles For i = 1 To nombre Worksheets(i).Protect MotdePasse Next i End Sub
C'est juste une optimisation de ton code ; je ne l'ai pas testé
et je te laisse le soin de le faire ; à te lire pour avoir ton avis.