Sub CorrigeErrRef()
'replace les références des repères en cas de suppression de lignes
'ne pas lancer cette commande sans avoir recaculé les cellules avant, sinon ça ne sert à rien...
'le mode de calcul doit donc être en automatique, pas manuel
'enlève la protection pour pouvoir travailler
Call Enleve_Protec
'met en dictionnaire la colonne de Repere pour déterminer les lignes en erreur
'mise en cache colonne de Repère
ligne_debut = 1
colonne = Range("Repere").Column
ligne_fin = Range("Der_ligne_Ferr").Row
Dim fer As Worksheet
Set fer = Worksheets("Nomenclature")
'sélectionne la feuille ferrure-170 pour éviter un bug lors de l'ouverture du fichier si une autre feuille est sélectionnée
fer.Select
Dim plage As Range
Set plage = Application.Worksheets("Nomenclature").Range(Cells(ligne_debut, colonne), Cells(ligne_fin, colonne))
'mise en dico de la plage colonne Repere
Set Dico = CreateObject("scripting.dictionary")
cle = ligne_debut
For Each Value In plage
Dico.Add cle, Value
cle = cle + 1
Next
'On Error Resume Next
'cherche toutes les lignes #Ref dans le dico
For Each k In Dico.keys
'si une ligne est une ligne commençant par #
If IsError(Dico.item(k)) Then
'pour chaque colonne d'items ou de récap items met la formule de la cellule à jour
fer.Cells(k, colonne).FormulaR1C1 = "=R[-1]C"
End If
Next
End Sub