Réduction de ligne dans ma base de donnée à la suppression ?

Bonjour à vous,

J'ai un petit problème que je n'arrive plus à résoudre. En espérant pourvoir trouver de l'aide ... Lorsque je supprime un usager à partir de mon userform je perds des lignes dans ma base de donnée. Je vous donne les codes des boutons que j'ai utilisé pour mon userform :

Supprimer :

Private Sub BtnSupprimer_Click()
'supprimer un usager

Dim i As Integer

With Sheets("Inscriptions")

Dim SupprimeLigne As String

SupprimeLigne = InputBox("Veuillez entrer le nom, prénom à supprimer", "SUPPRESSION")

With ThisWorkbook.Sheets("Inscriptions")

For i = .Range("F" & .Rows.Count).End(xlUp).Row To 3 Step -1

If .Range("F" & i).Value = SupprimeLigne Then
Sheets("Inscriptions").Unprotect Password:="CES"

Rows(i).Delete

Sheets("Inscriptions").protect Password:="CES"

End If
Next i
End With
End With
End Sub

et pour l'inscription de mes champs dans ma base donnée (bouton inscrire) :

'Inscrire dans la source

Private Sub Boutoninscrire_Click()

If Bassins = "" Or ChoixRLS = "" Or NUM = "" Or Choixhrs = "" Or nomprenom = "" Or choixlangue = "" Or TextBox6 = "" Or datenaissance = "" Or typedemande = "" Or IntPivot = "" Or Intautres = "" Or profilintervention = "" Or profilisosmaf = "" Or oemcdate = "" Or raisoncode = "" Then

MsgBox ("Tous les champs de sont pas correctement remplis")

Else
If Sheets("Inscriptions").Range("B3") = "" Then
Sheets("Inscriptions").Range("B3") = Bassins
Else
Sheets("Inscriptions").ListObjects(1).ListRows.Add

With Sheets("Inscriptions")
.Unprotect Password:="CES"

Sheets("Inscriptions").Activate

Range("B3").End(xlDown).Offset(1, 0).Select

ActiveCell = Bassins.Value
ActiveCell.Offset(0, 1).Value = ChoixRLS
ActiveCell.Offset(0, 2).Value = NUM
ActiveCell.Offset(0, 3).Value = Format(Me.Choixhrs.Value, "hh:mm:ss")
ActiveCell.Offset(0, 4).Value = nomprenom
ActiveCell.Offset(0, 5).Value = choixlangue
ActiveCell.Offset(0, 6).Value = TextBox6
ActiveCell.Offset(0, 7).Value = datenaissance
ActiveCell.Offset(0, 8).Value = typedemande
ActiveCell.Offset(0, 9).Value = IntPivot
ActiveCell.Offset(0, 10).Value = Intautres
ActiveCell.Offset(0, 11).Value = profilintervention
ActiveCell.Offset(0, 12).Value = profilisosmaf
ActiveCell.Offset(0, 13).Value = Format(Me.oemcdate.Value, "YYYY/MM/DD")
ActiveCell.Offset(0, 14).Value = raisoncode

MsgBox "Les informations ont été ajoutés à la base de donnée", vbOKOnly + vbInformation, "COMFIRMATION"

.protect Password:="CES"
End With
End If
End If
End Sub

Une personne pourrait me dire ce qui ne fonctionne pas ou bien ce que j'ai manqué afin de pouvoir faire fonctionner la machine ?

Merci beaucoup pour votre aide !

Bonjour

Je vois que lorsque vous postez un code vous n'utilisez jamais les balises prévues.
Merci d'utiliser les balises de codes en cliquant sur l'icone </> disponible dans le menu et en collant le code dans la fenêtre. Il sera plus facile à lire.

Pour votre souci, je pense qu'il vous manque un point devant ROWS(i).delete

Essayez votre code comme ceci :

Private Sub BtnSupprimer_Click()
'supprimer un usager
Dim i As Integer
Dim SupprimeLigne As String

SupprimeLigne = InputBox("Veuillez entrer le nom, prénom à supprimer", "SUPPRESSION")

With ThisWorkbook.Sheets("Inscriptions")
    .Unprotect Password:="CES"
    For i = .Range("F" & .Rows.Count).End(xlUp).Row To 3 Step -1
        If .Range("F" & i).Value = SupprimeLigne Then 
            .Rows(i).Delete
        End If
    Next i
    .Protect Password:="CES"
End With
End Sub

NB : une chose m'intrigue toutefois au vu de votre deuxième code, votre tableau est au format structuré ?

Si ok -->

Cordialement

EDIT : C'est au pif car sans fichier .... mais si votre tableau est au format structuré, essayez plutôt ceci pour votre deuxième code

Private Sub Boutoninscrire_Click()
Dim bassins As String

If bassins = "" Or ChoixRLS = "" Or num = "" Or Choixhrs = "" Or nomprenom = "" Or choixlangue = "" Or TextBox6 = "" Or datenaissance = "" Or typedemande = "" Or IntPivot = "" Or Intautres = "" Or profilintervention = "" Or profilisosmaf = "" Or oemcdate = "" Or raisoncode = "" Then

    MsgBox ("Tous les champs de sont pas correctement remplis")
    Exit Sub
End If

With Sheets("Inscriptions")
    .Unprotect Password:="CES"
    If .Range("B3") = "" Then
        .Range("B3") = bassins
    Else
        With .ListObjects(1)
            If .ListRows.Count = 0 Then
                .ListRows.Add: lig = 1
            Else: .ListRows.Add: lig = .ListRows.Count 'insérer à la dernière ligne
            End If

            .DataBodyRange.Item(lig, 1) = bassins.Value
            .DataBodyRange.Item(lig, 2) = ChoixRLS
            .DataBodyRange.Item(lig, 3) = num
            'la suite pour vos autres colonnes
            '.Databodyrange.item(lig,4) = .......
            '....
        End With
        MsgBox "Les informations ont été ajoutés à la base de donnée", vbOKOnly + vbInformation, "COMFIRMATION"
    End If
.Protect Password:="CES"
End With
End sub

@Dan j’utiliserai les balises merci pour ce rappel.
J’ai tenté un autre code sans succès je vais essayer celui proposé de ce pas. 👌

J’ai modifié le code de ma base de donnée et j’obtiens l’erreur de ma private Sub. Erreur de compilation et de qualificatif … avez-vous une idée de la raison ?

Merci 🙏

En changeant l’ordre tout fonctionne merci !

Ok bien.

Comme demandé -->

Cordialement

Absolument. Merci pour ce rappel

Rechercher des sujets similaires à "reduction ligne base donnee suppression"