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 SubNB : 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
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