Suppression de données dans une liste

traputaca

XLDnaute Nouveau
Bonjour à tous,

j'ai un petit souci :

j'utilise dans un fichier excel avec macro, une base de données regroupant différentes machines. Quand je sélectionne une machine de la base de donnée, il m'en ressort les caractéristiques de celle-ci.

Cependant, à travers une macro je peux ajouter / supprimer des machines et leurs caractéristiques dans ma base de données.

j'ai un tableau regroupant les caractéristiques des machines, et une liste de fichier "source" (le nom des machines)

mon problème est le suivant, je peux ajouter les machines sans souci, je peux supprimer n'importe laquelle sans problème, sauf : la 1ère de la liste, si par ma macro je supprime la première machine de ma liste, toute ma liste "source" se retrouve supprimé, et je ne comprend pas pourquoi.

ci joint le bout de code associer à ma fonction supprimer

Code:
Private Sub CommandButton2_Click()

Application.ScreenUpdating = False

Dim numac As String

Call protect_off

    'on verifie que la machine a supprimer fasse partie de la liste
    If Me.txtsup.MatchFound = False Then
    MsgBox "La machine " & Me.txtsup.Text & " n'existe pas!", vbExclamation
    Call protect_on
    Exit Sub
    End If
'on donne la valeur de la machine à supprimer a la variable numac
numac = Me.txtsup.Text

p_source.Select
Range("snumac").Select
    
    Do While ActiveCell.Value <> numac
    ActiveCell.Offset(1, 0).Select
    Loop
    
'on supprime le numero
Selection.Delete Shift:=xlUp

'on passe sur l'onglet base
p_base.Select
Range("nmachine").Select

    Do While ActiveCell.Value <> numac
    ActiveCell.Offset(1, 0).Select
    Loop
    
    
'on supprime la ligne recherchée

ActiveCell.EntireRow.Delete

'on vide le champ de recherche
Me.txtsup.Text = ""

'conclusion
MsgBox "La machine " & numac & " et sa Check List ont été supprimées!", vbInformation

Call protect_on
End Sub

"snumac" étant ma plage de donnée des machines ( = source, numéro machine)

si je n'ai pas été clair, n'hésitez pas

voilà, si quelqu'un à la patience de m'aider, je vous remercie d'avance !

Charles.
 

traputaca

XLDnaute Nouveau
Re : Suppression de données dans une liste

salut !

j'ai essayer, mais sa ne résous pas mon problème... mais merci déjà d'avoir pris le temps de me répondre :)

je ne comprend pas .. on ne pourrait pas faire un genre de mode pas a pas pour voir ce qui déconne et me fait tout supprimer ?
 

youky(BJ)

XLDnaute Barbatruc
Re : Suppression de données dans une liste

Re,
sans fichier exemple pas facile.
Pour supprimer des lignes il faut le faire de bas en haut et non de haut en bas.
Evite aussi les select. Une boucle For Next de bas en haut ferait bien l'affaire.
Bruno
 

traputaca

XLDnaute Nouveau
Re : Suppression de données dans une liste

ci joint un bout de mon fichier réduit a la fonction supprimer qui bug ..

pour lancer le truc il faut aller dans vba et play

si on supprime la 1ere, sa supprime tout ...

merci d'avance
 

Pièces jointes

  • Classeur1.xlsm
    19.6 KB · Affichages: 61
  • Classeur1.xlsm
    19.6 KB · Affichages: 60
  • Classeur1.xlsm
    19.6 KB · Affichages: 60

youky(BJ)

XLDnaute Barbatruc
Re : Suppression de données dans une liste

Salut bien,
Désolé de mon retard,
voici qui fera l'affaire sous le bouton supprimer
Code:
Private Sub CommandButton2_Click()
Dim numac As String
numac = CDbl(Me.txtsup.Text)
 If Me.txtsup.ListIndex = -1 Then 'aucune selection
    MsgBox "La machine " & Me.txtsup.Text & " n'existe pas!", vbExclamation
    Exit Sub
 End If
'on utilise listindex qui donne le nombre de lignes ou est la machine à supprimer
Feuil1.Rows(Me.txtsup.ListIndex + 2).Delete
'listindex commence à 0 et +ligne entete donc voila pour le +2
'on vide le champ de recherche
Me.txtsup.Text = ""
'conclusion
MsgBox "La machine " & numac & " et sa Check List ont été supprimées!", vbInformation
End Sub

Bruno
 

traputaca

XLDnaute Nouveau
Re : Suppression de données dans une liste

super, sa marche niquel apriori, merci beaucoup bruno !!

il y a quelques truc que je ne comprend pas encore .. la commande "CDbl" ? (je vais chercher un peu aussi ... ! )

et le "Me.txtsup.ListIndex = -1" ainsi que "Feuil1.Rows(Me.txtsup.ListIndex + 2)"


encore merci bruno !
 

traputaca

XLDnaute Nouveau
Re : Suppression de données dans une liste

il me reste un tout petit souci, il faudrait que la fonction supprime uniquement la machine et son numéro, car à coté j'ai d'autre paramètres (numéro de ligne, périodicité etc ... ) et lorsque je supprime un paramètre en haut de colone, il me supprime toute la ligne donc j'ai certain paramètre qui disparaisse, qui ne devrait pas. Faut-il adapter la ligne "Feuil1.Rows(Me.txtsup.ListIndex + 2).Delete"
 

youky(BJ)

XLDnaute Barbatruc
Re : Suppression de données dans une liste

OK,
remplace "Feuil1.Rows(Me.txtsup.ListIndex + 2).Delete" par

Dim lig as Long
lig=
Me.txtsup.ListIndex + 2
Feuil1.range("B & lig & ":C" & lig).clearcontents 'on efface
Me.txsup.RemoveItem 'on supp de la liste

Pour avoir de l'aide en vba mets le curseur sur un mot clé et presse la touche F1
exemple écrit Cdbl et presse F1 si l'aide n'est pas installé je te conseille fortement de l'installer.
Si tu as 1234 dans un textbox ou combobox il renvoie du texte et non du numérique donc Cdbl va traduire le texte en chiffre.
Bruno
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 229
Messages
2 086 425
Membres
103 206
dernier inscrit
diambote