XL 2016 Créer une macros pour insérer une ligne en gardant les formules (document protégé)

Graounette92

XLDnaute Nouveau
Bonjour,

J'ai un tableau recensant les effectifs et leur carrière.
Bien sur, pour éviter toutes mauvaises manipulations, les cellules contenant des formules sont protégées par un mot de passe.
J'utilise une macro qui me permet d'insérer en ligne en copiant la ligne du dessous pour garder les formules :
Sub InsèreCopieLigne()
ActiveSheet.Unprotect "RH"
ActiveCell.EntireRow.Insert
Rows(ActiveCell.Row + 1).Copy Rows(ActiveCell.Row)
On Error Resume Next
Rows(ActiveCell.Row).SpecialCells(xlCellTypeConstants, 1).ClearContents
ActiveSheet.Protect "RH", True, True, True
End Sub

Maintenant, j'aimerai que la macro vide les cellules non protégées de cette nouvelle ligne. Le but étant d'insérer une ligne vide à remplir lors de l'arrivée d'un nouvel effectif, tout en gardant les formules.
Savez-vous comment faire ?

Je vous remercie.

(PS : Je ne maîtrise absolument pas les VBA. ^^')
 
Solution
C
Bonjour Graounette92

Pour le code, le voici optimisé et dans le bon ordre ;)
VB:
Sub InsèreCopieLigne()
  ActiveSheet.Unprotect "RH"
  ' Copier la ligne actuelle
  ActiveCell.EntireRow.Copy
  ' Insérr une nouvelle ligne avec les données
  ActiveCell.EntireRow.Insert
  On Error Resume Next
  ' Effacer les cellules contenant des valeurs
  ActiveCell.EntireRow.SpecialCells(xlCellTypeConstants, 23).ClearContents
  ActiveSheet.Protect "RH", True, True, True
End Sub

@+
C

Compte Supprimé 979

Guest
Bonjour Graounette92

Pour le code, le voici optimisé et dans le bon ordre ;)
VB:
Sub InsèreCopieLigne()
  ActiveSheet.Unprotect "RH"
  ' Copier la ligne actuelle
  ActiveCell.EntireRow.Copy
  ' Insérr une nouvelle ligne avec les données
  ActiveCell.EntireRow.Insert
  On Error Resume Next
  ' Effacer les cellules contenant des valeurs
  ActiveCell.EntireRow.SpecialCells(xlCellTypeConstants, 23).ClearContents
  ActiveSheet.Protect "RH", True, True, True
End Sub

@+
 

Graounette92

XLDnaute Nouveau
Bonjour Graounette92

Pour le code, le voici optimisé et dans le bon ordre ;)
VB:
Sub InsèreCopieLigne()
  ActiveSheet.Unprotect "RH"
  ' Copier la ligne actuelle
  ActiveCell.EntireRow.Copy
  ' Insérr une nouvelle ligne avec les données
  ActiveCell.EntireRow.Insert
  On Error Resume Next
  ' Effacer les cellules contenant des valeurs
  ActiveCell.EntireRow.SpecialCells(xlCellTypeConstants, 23).ClearContents
  ActiveSheet.Protect "RH", True, True, True
End Sub

@+
Merci beaucoup ! Ça marche parfaitement !! :D
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 940
Membres
101 845
dernier inscrit
annesof