Verrouiller un tableau

Bonjour

J'ai un tableau ou je rentre des données par le biais d'un formulaire. L'accès au formulaire se fait par un simple bouton.

Une fois les data enregistrées dans le formulaire, cela incrémente mes lignes du tableau.

Le soucis est que, des collègues ne passent pas par le formulaire, mais ils rentrent directement les data dans les lignes du tableau.

Je ne veux pas ce fonctionnement là.

J'ai essayé de verrouiller le tableau, mais lorsque j'enregistre les data dans le formulaire cela ne s'incrémente pas dans le tableau ?

Y a t'il une façon de faire ?

Le tableau me sert uniquement en visuel....

Bonjour quattro1

Il faut déprotéger la feuille avant d'insérer les données et la reprotéger ensuite

@+

J'ai donc mis se code dans mon Private Sub UserForm_Initialize() :

Sheets("Feuil1").Visible = True
    Sheets("Feuil1").Select
    ActiveSheet.Unprotect "toto"

Avant ca, j'ai bien protégé ma feuille.

Quand je click sur mes cellules du tableau, cela ne fct pas, je ne peux rien modifier. Jusque là ok.

Ensuite, je click sur mon bouton pour aller dans mon formulaire, là, ça me met une erreur :

erreur d'exécution '9' :

l'indice n'appartient pas à la sélection.

Bonjour

Faudrait voir le code... sans quoi Bruno45 ne pourra vous aider

Cordialement

Re,

Je rejoins Dan que je salue, et je dirais même mieux, il nous faudrait le fichier anonymisé

@+

Re, voilà le code de votre bouton

Private Sub CommandButton2_Click()
  Dim Nom As String
  Dim CelF As Range, Lig As Long
  ' Comme il s'agit d'un tableau structuré
  Dim LstBdD As ListObject
  ' Tester
  If Me.TextBox1 = "" Or Me.TextBox1 = "jj/mm/aaaa" Or _
    Me.TextBox2 = "" Or Me.TextBox2 = "hh:mm" Or _
    Me.TextBox4 = "" Or Me.TextBox4 = "hh:mm" Or _
    Me.TextBox5 = "" Or _
    Me.TextBox6 = "" Or _
    Me.ComboBox1 = "" Then
    'Me.ComboBox3 = "" Then
    MsgBox ("Tous les champs ne sont pas remplis")
    Exit Sub
  End If
  ' Si tout est ok
  Nom = UserForm2.ListBox1.Text
  ' Assignation du tableau structuré
  Set LstBdD = ThisWorkbook.Sheets("Astreinte").ListObjects(1)
  ' Déprotéger
  Sheets("Astreinte").Unprotect "toto"
  ' Remplir le Tableau structuré
  With LstBdD
    ' Trouver la prochaine ligne vide du tableau
    Set CelF = .ListColumns(1).Range.Find("")
    ' Si aucune on ajoute une nouvelle ligne
    If CelF Is Nothing Or .ListRows.Count = 0 Then
      .ListRows.Add: Lig = .ListRows.Count
    Else
      Lig = CelF.Row - .HeaderRowRange.Row
    End If
    .DataBodyRange(Lig, 1).Value = CDate(Me.TextBox1)      ' Date astreinte
    .DataBodyRange(Lig, 2) = CDate(Me.TextBox2.Value) ' Heure d'appel
    .DataBodyRange(Lig, 3) = Me.ComboBox1             ' Source appel
    .DataBodyRange(Lig, 4) = Nom                      ' Technicien
    .DataBodyRange(Lig, 5) = UCase(Me.TextBox7)       ' N° Horo
    .DataBodyRange(Lig, 6) = Me.TextBox5              ' Problème
    .DataBodyRange(Lig, 7) = IIf(CheckBox1.Value = True, "Oui", "Non") ' Intervention
    .DataBodyRange(Lig, 8) = CDate(Me.TextBox4.Value) ' Heure fin
    .DataBodyRange(Lig, 9) = Me.TextBox6              ' Résolution
  End With
  ' Reprotéger
  Sheets("Astreinte").Protect Password:="toto"
  ' On éfface les données...
  Me.TextBox2.Value = ""
  Me.ComboBox1 = ""
  Me.TextBox7 = ""
  Me.TextBox5 = ""
  Me.TextBox4.Value = ""
  CheckBox1.Value = False
  Me.TextBox6 = ""
  ' On efface les variables objet
  Set LstBdD = Nothing
End Sub

Ok

Je ne peux pas tester mon code car maintenant j'ai un autre problème :

image

en fait j'ai mis le fichier sur mon PC provenant de celui du boulot. Apparemment il y a un soucis d'incompatibilité ?

Bon j'ai rajouter PtrSafe a la suite de Déclare, sa fct.

Maintenant j'ai un soucis avec le code :

image

Il me met :

erreur d'exécution '9' :

l'indice n'appartient pas à la sélection.

OK j'ai vu mon erreur

du coup ça fonctionne presque bien, sauf la parti du formulaire a droite "INFORMATION" qui traite les filtres, tries etc... ça ne fct pas car il n'a pas accès au ligne je pense ?

C'est bon

Rechercher des sujets similaires à "verrouiller tableau"