Ajouter une ligne sur plusieurs feuilles vérouiller
Résolu/Fermé
A voir également:
- Ajouter une ligne sur plusieurs feuilles vérouiller
- Comment aller à la ligne sur excel - Guide
- Partager photos en ligne - Guide
- Site de vente en ligne particulier - Guide
- Ajouter une signature sur word - Guide
- Fusionner 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.
DavidDURAN
Messages postés
6
Date d'inscription
dimanche 8 octobre 2017
Statut
Membre
Dernière intervention
10 octobre 2017
>
fred
8 oct. 2017 à 19:52
8 oct. 2017 à 19:52
Voici le lien du fichier :
Cela concerne la gestion horaire des agents. Je souhaite pouvoir ajouter une ligne avec l'option d'enlever et de remettre automatiquement le verrouillage pour éviter toutes mauvaises manipulations de mes collègues.
https://mon-partage.fr/f/HbeWA1Or/
Merci
Cela concerne la gestion horaire des agents. Je souhaite pouvoir ajouter une ligne avec l'option d'enlever et de remettre automatiquement le verrouillage pour éviter toutes mauvaises manipulations de mes collègues.
https://mon-partage.fr/f/HbeWA1Or/
Merci
DavidDURAN
Messages postés
6
Date d'inscription
dimanche 8 octobre 2017
Statut
Membre
Dernière intervention
10 octobre 2017
8 oct. 2017 à 20:50
8 oct. 2017 à 20:50
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é.
DavidDURAN
Messages postés
6
Date d'inscription
dimanche 8 octobre 2017
Statut
Membre
Dernière intervention
10 octobre 2017
10 oct. 2017 à 19:22
10 oct. 2017 à 19:22
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,
DavidDURAN
Messages postés
6
Date d'inscription
dimanche 8 octobre 2017
Statut
Membre
Dernière intervention
10 octobre 2017
>
DavidDURAN
Messages postés
6
Date d'inscription
dimanche 8 octobre 2017
Statut
Membre
Dernière intervention
10 octobre 2017
10 oct. 2017 à 22:30
10 oct. 2017 à 22:30
Bonjour Fred,
Ton programme est impeccable. Le classement des VBA ingénieux, je m'en servirai pour les prochaines fois. Comme je te l'ai dit, je suis encore novice en programmation alors j’essaie de comprendre tes modifications. En tous les cas, le résultat est là !
Merci beaucoup.
Ton programme est impeccable. Le classement des VBA ingénieux, je m'en servirai pour les prochaines fois. Comme je te l'ai dit, je suis encore novice en programmation alors j’essaie de comprendre tes modifications. En tous les cas, le résultat est là !
Merci beaucoup.
fred
>
DavidDURAN
Messages postés
6
Date d'inscription
dimanche 8 octobre 2017
Statut
Membre
Dernière intervention
10 octobre 2017
Modifié le 11 oct. 2017 à 03:18
Modifié le 11 oct. 2017 à 03:18
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.