Userform qui écrit sur plusieurs lignes

Donc je met ces deux lignes, je fais la manip que tu m'a proposé et je supprime tous les autres protect et unprotect?

Bonjour,

Oui

ric

Merci de ton aide! Je teste ça cet après-midi!

Bonjour,

Bien évidemment, il faut tester sur une copie du fichier.

ric

C'était prévu ne t'inquiète pas, cela inaugurera la huitième version du fichier

J'ai essayé ça a résolu plein de problème!

Il en demeure deux petits néanmoins:

Un détail mais les demandes déjà effectuées avant la manip restent et sont verrouillées, comment les supprimer?

Et un problème autre, qui vient de mon codage de "WorksheetsChange (résultats)", théoriquement, j'attend que quand une case du tableau prend la valeur terminée, toutes les surfaces à mesurer pour une même machine s'effacent, mais ce n'est pas le cas, une solution?

C'est cette partie de code qui est concernée:

If Target.Address = "$J$7" Or Target.Address = "$J$8" Or Target.Address = "$J$9" Then   'Si les cellules qui changent sont J7 ou J8
    Call HeureJ9 'On appelle Heure qui va afficher l'heure sur J9
     Dim i As Integer
     Dim x As Double
     Dim n As Integer
     Dim y As Integer
     For i = 4 To 20
     If Sheets("demande").Range("F" & i).Value = 600 Then  'On cherche les pièces de la machine à mesurer
    Sheets("Demande").Range("I4").Value = Sheets("Demande").Range("A" & i).Value  'Transmet les données vers les pièces terminées
    Sheets("Demande").Range("J4").Value = Sheets("Demande").Range("B" & i).Value
    Sheets("Demande").Range("K4").Value = Sheets("Demande").Range("C" & i).Value
    Sheets("Demande").Range("L4").Value = Sheets("Demande").Range("D" & i).Value
    Sheets("Demande").Range("O4").Value = Format(Time, "h:mm;@")
    Sheets("Demande").Range("O4").Value = Sheets("Demande").Range("H" & i).Value
    Sheets("Demande").Range("M4").Value = Sheets("Demande").Range("E" & i).Value
    Sheets("Demande").Range("N4").Value = Format(Time, "h:mm;@") 'La cellule L4 devient l'heure
    Sheets("Demande").Range("P4").Value = Format(Time, "h:mm;@")        ' pour donner un format à la cellule avant d'y écrire
    Sheets("Demande").Range("P4") = CDate(Sheets("Demande").Range("N4")) - CDate(Sheets("Demande").Range("G" & i)) 'Temps pris pour mesurer
    x = CDate(Sheets("Demande").Range("H" & i)) - CDate(Sheets("Demande").Range("P4")) 'Compare le temps mis au temps attendu
    If x > 0 Then
    Sheets("Demande").Range("Q4").Value = "Avance"
    ElseIf x < 0 Then
    Sheets("Demande").Range("Q4").Value = "Retard"
    x = -x
    End If
    Sheets("Demande").Range("R4").Value = Format(Time, "h:mm;@") 'Donne un format à la cellule
    Sheets("Demande").Range("R4").Value = x 'Prend la vameur de l'écart entre temps attendu et temps mis
    y = 5
    For n = i + 1 To n = i + 10
    If Sheets("Demande").Range("B" & n) = "" Then
    Sheets("Demande").Rows(y).Insert
    Sheets("Demande").Rows(y).Locked = False
    Sheets("Demande").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFormattingCells:=True
    n = n + 1
    Sheets("Demande").Range("L" & y) = Sheets("Demande").Range("D" & n).Value
    Sheets("Demande").Range("M" & y) = Sheets("Demande").Range("E" & n).Value
    n = n + 1
    y = y + 1
    End If
    Next n
    Sheets("Demande").Range("B" & i).ClearContents 'Vide les pièces à mesurer
    Sheets("Demande").Range("C" & i).ClearContents
    Sheets("Demande").Range("D" & i).ClearContents
    Sheets("Demande").Range("E" & i).ClearContents
    Sheets("Demande").Range("A" & i).ClearContents
    Sheets("Demande").Range("F" & i).ClearContents
    Sheets("Demande").Range("G" & i).ClearContents
    Sheets("Demande").Range("H" & i).ClearContents
    Sheets("Demande").Rows(4).Insert
    Sheets("Demande").Rows(4).Locked = False
  Sheets("Demande").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowFormattingCells:=True
    End If
    Next i
    End If
     

Je te joins également la nouvelle version du fichier pour que tu puisse y voir plus clair

Bonjour,

... Un détail mais les demandes déjà effectuées avant la manip restent et sont verrouillées, comment les supprimer? ...

Est-ce pour les supprimer manuellement ou automatique via du code ?

Si c'est manuellement, il n'y a qu'à déprotéger la feuille manuellement.

Puis, enregistrer, fermer et rouvrir afin d'appliquer de nouveau le code de protection.

ric

Oui c'est bon! J'aurais du y penser

C'est ceux la qui ne s'effacent pas normalement:

erreur

Bonjour,

C'est bon, je regarde cela aujourd'hui.

ric

Bonjour,

Je te laisse tester cette version ci.

Note : avec ce type protection ...

Worksheets("Demande").Protect , UserInterFaceOnly:=True
Worksheets("Résultats").Protect , UserInterFaceOnly:=True

Si tu déprotèges, pour une raison quelconque, une des deux feuilles manuellement, il ne faut pas réactiver la protection manuellement. Sinon, les problèmes risquent de survenir.

Il faut Enregistrer le fichier, le Fermer; puis, le rouvrir pour appliquer à nouveau la protection "UserInterFaceOnly".

ric

Rechercher des sujets similaires à "userform qui ecrit lignes"