Modification suppression par userform

Bonjour à tous,

Je reviens vers la communauté pour corriger une de mes erreurs de code. En fait, j'ai rajouté un bouton pour modifier et ou supprimer des données mais clairement je m'y perds. Le formulaire affiche des erreurs. Si vous voulez bien m'orienter, j'essaye d'avancer !

Merci d'avance

Cordialement

Bonjour Wall.

Pourrais-tu expliquer le fonctionnement de ton userform ?

Je voudrais comprendre avant de pouvoir te donner un coup de main, sinon je vais sans doute perdre trop de temps.

Bonjour,

Il s'agit d'un formulaire de donnée ci-joint qui alimente des feuilles mais je viens le modifier pour pouvoir modifier les données. Une fonction nécessaire car je ne laisse pas accès aux onglets pour une suppression manuelle.

C'est la dernière partie du code qui bloque

Merci à vous.

Cordialement

Entre nous, je pense que la structure de ton fichier est à revoir.

C'est difficile de s'y retrouver dans le formulaire, avec le nombre conséquent de TextBox et ComboBox.

Je vais te proposer une première idée de travail, et on verra si ça peut t'aider.

Bonsoir,

Merci d'avoir regardé,

Oui c'est gros et désordonné mon travail,

En fait, je cherche par ce dernier code à récupérer par le formulaire mes données saisies dans la feuille 'Traces' et pouvoir les modifier ou les supprimer. L'erreur se trouve sur la ligne :

Private Sub ComboBox28_Change() 'au changement dans la ComboBox28

et

LI = R.Row

Ci-joint le bout de code, merci de bien vouloir jeter un coup d’œil

Cordialement

Private Sub ComboBox28_Change() 'au changement dans la ComboBox28
'Stop
Dim R As Range 'déclare la variable R (Recherche)
Dim CTRL As Control 'déclare la variable CTRL (ConTRôLe)
Set ShTrace = Sheets("Traces")

If Me.ComboBox28.Value = "" Then 'condition si la ComboBox28 est vide
    MsgBox "vous devez choisir un élève !" 'message
    Me.ComboBox28.SetFocus 'place le curseur dans la ComboBox28
    Exit Sub 'sort de la procédure
End If 'fin de la condition
Set R = ShTrace.Columns(2).Find(Me.ComboBox28.Value, , xlValues, xlWhole) 'définit la recherche R (recherche la valeur entière de la Combobox2 dans la seconde colonne de l'onglet ShTrace)
If Not R Is Nothing Then 'si il existe au moins une occurrence trouvée
    LI = R.Row 'définit la ligne LI
    Me.CommandButton2.Caption = "Modifier" 'définit le texte du bouton
    Me.CommandButton3.Visible = True 'affiche le bouton "Supprimer"
    For Each CTRL In Me.Controls 'boucle sur tous les contrôles de l'userForm
        'si la propriété [Tag] du contrôle n'est pas vide, récupère la valeur de la cellulle ligne LI / colonne propriété [Tag] du contrôle convertie en byte, dans le contrôle
        If CTRL.Tag <> "" Then CTRL.Value = ShTrace.Cells(LI, CByte(CTRL.Tag)).Value
    Next CTRL 'prochain contrôle de la boucle
    Me.TextBox5.Value = Me.ComboBox12.Value 'recupère la valeur de la ComboBox12 dans la TextBox4
Else 'sinon (si aucune occurrence trouvée)
    Me.CommandButton2.Caption = "Enregistrer" 'définit le texte du bouton
    Me.CommandButton3.Visible = False 'masque le bouton "Supprimer"
    LI = ShTrace.Cells(Application.Rows.Count, 1).End(xlUp).Row + 1 'définit la ligne LI (première ligne vide de l'onglet ShTrace)
    If LI = 2 Then LI = 3 'redéfinit la ligne LI
    For I = 1 To 27 'boucle 1 : sur les ComboBoxes 1 à 27
        Me.Controls("ComboBox" & I).Value = "" 'vide la Combobox
    Next I 'prochaine comboBox de la boucle 1
End If 'fin de la condition
Set ShEval = Sheets("Inscriptions")
With ShEval
    Set R = .Columns(6).Find(Me.ComboBox28.Value, , xlValues, xlWhole)
    If Not R Is Nothing Then
        Me.TextBox10 = .Cells(R.Row, "O").Value
    End If
End With
End Sub

Private Sub ComboBox12_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) 'à l'auppui sur une touche du clavier
If KeyAscii < 49 Or KeyAscii > 53 Then KeyAscii = 8 'interdit toute autre touche que {1, 2, 3, 4 et 5} (efface les autres caractères)
End Sub

'Private Sub ComboBox12_Change() ' 'au changement dans la ComboBox12
'Me.TextBox5.Value = Me.ComboBox12.Value ' 'définit la valeur de la TextBox5
'End Sub

Private Sub CommandButton2_Click() 'bouton "Valider/Modifier"
End Sub
Dim CTRL As Control 'déclare la variable CTRL (ConTRôLe)
Dim I As Byte
Dim TEST As Boolean
Dim Cell As Range
Dim DateNaiss As Date
Dim Lgn As Long
'Stop

Private Sub CommandButton3_Click() 'bouton "Supprimer"
If MsgBox("Êtes-vous sûr(e) de vouloir supprimer ces données ?", vbYesNo, "ATTENTION") = vbYes Then 'condition :si "Oui" au message
    ShTrace.Rows(LI).Delete 'supprime la ligne
    ShEval.Rows(LI).Delete 'supprime la ligne
    Unload Me 'vide et ferme l'UserForm
    Saisie1.Show 'affiche l'UserForm
End If 'fin de la condition
End Sub

Private Sub CommandButton_Click() 'bouton "Sortir"
Unload Me 'vide et ferme l'UserForm
End Sub

Bonjour à tous,

Personne à la rescousse pour un début de solution?

Merci à vous de me conseiller !

Cordialement

Rechercher des sujets similaires à "modification suppression userform"