Microsoft 365 Bouton supprimer ligne via mon Userfom ne fonctionne pas

dadaze

XLDnaute Nouveau
Bonjour tous les Exceliens

Une fois encore, je bloque sur un petit souci et après m'être bien agacé je me tourne ver vous .

je m'explique.

j'ai créé une macro (module 24 du fichier) qui me permet de supprimer un nom depuis ma feuille active ainsi que sur toutes les autres situées à gauche de cette dernière.
Pour ce faire, je renseigne manuellement le numéro de ligne puis le nom qui s'y rattache et ça fonctionne très bien.

Donc par commodité, je créé un userfom composé de 2 CBX et un bouton supprimer et là patatra plus rien ne fonctionne.

Si l'un d'entre vous à quelques instants à me consacrer pour solutionner ce problème, je l'en remercie d'avance.

je joins donc mon fichier

Cordialement
 

Pièces jointes

  • VBA Rech Sup 2.xlsm
    125.6 KB · Affichages: 8
Solution
Bonjour

déjà . quand je lis "Module 24".. je me dis qu'il y a surement du tri à faire..
perso, j'ai rarement plus de 5 modules.. ET je leur donne des noms

ensuite; ton bouton "Supprimer" du formulaire ne fait PAS appel à ta macro du module 24: donc;.

puis.. quand je regarde le code.. aucune indentation
==> c'est illisible
===> avec une indentation. tu aurais tout de suite vu qu'un "End if" n'est pas à sa place..
VB:
Private Sub CommandButton1_Click()
    Dim numéro As Integer
    Dim Nomprénom As String
    
    numéro = CBXNuméro
    Nomprénom = CBXNomPrénom
    Application.ScreenUpdating = False
    If CBXNuméro = "" And CBXNomPrénom = "" Then
        Exit Sub
    End If
    For F = ActiveSheet.Index To Sheets.Count
        For L...

vgendron

XLDnaute Barbatruc
Bonjour

déjà . quand je lis "Module 24".. je me dis qu'il y a surement du tri à faire..
perso, j'ai rarement plus de 5 modules.. ET je leur donne des noms

ensuite; ton bouton "Supprimer" du formulaire ne fait PAS appel à ta macro du module 24: donc;.

puis.. quand je regarde le code.. aucune indentation
==> c'est illisible
===> avec une indentation. tu aurais tout de suite vu qu'un "End if" n'est pas à sa place..
VB:
Private Sub CommandButton1_Click()
    Dim numéro As Integer
    Dim Nomprénom As String
    
    numéro = CBXNuméro
    Nomprénom = CBXNomPrénom
    Application.ScreenUpdating = False
    If CBXNuméro = "" And CBXNomPrénom = "" Then
        Exit Sub
    End If
    For F = ActiveSheet.Index To Sheets.Count
        For L = 6 To Sheets(F).Range("a" & Rows.Count).End(xlUp).Row
            If Sheets(F).Cells(L, 1) = numéro And Sheets(F).Cells(L, 3) = Nomprénom Then
                Sheets(F).Cells.Rows(L).Delete
            End If
        Next L
    Next F
    Unload UserSup
    UserSup.Show 0
End Sub
 

vgendron

XLDnaute Barbatruc
de plus. tu dis "je selectionne le numéro de ligne et le nom qui lui est associé"..
euh bah non.. le numéro de ligne n'est pas associé à un nom puisque il y a une formule en colonne A qui se fout royalement de ce qu'il y a en colonne B...
la preuve.. si tu supprimes anonyme 1 (en ligne 2).. et bah.. anonyme 1 est supprimé.. mais la ligne 2 devient celle de anonyme 2..
 

vgendron

XLDnaute Barbatruc
tes macro "Private Sub Workbook_Open()" dans 4 ou 5 modules standards différents n'ont aucun sens et aucune chance d'être executée
LA macro Private Sub Workbook_Open() doit etre DANS le thisworkbook
et tu y lances les macros que tu souhaites
VB:
Private Sub Workbook_Open()
Dim ws As Worksheet
    For Each ws In Worksheets
        ws.Select
        RepasNatures
        Naturesbis
        MFC
        DFMFC
    Next ws
    UserSup.Show 0
End Sub
 

dadaze

XLDnaute Nouveau
Bonjour

déjà . quand je lis "Module 24".. je me dis qu'il y a surement du tri à faire..
perso, j'ai rarement plus de 5 modules.. ET je leur donne des noms

ensuite; ton bouton "Supprimer" du formulaire ne fait PAS appel à ta macro du module 24: donc;.

puis.. quand je regarde le code.. aucune indentation
==> c'est illisible
===> avec une indentation. tu aurais tout de suite vu qu'un "End if" n'est pas à sa place..
VB:
Private Sub CommandButton1_Click()
    Dim numéro As Integer
    Dim Nomprénom As String
   
    numéro = CBXNuméro
    Nomprénom = CBXNomPrénom
    Application.ScreenUpdating = False
    If CBXNuméro = "" And CBXNomPrénom = "" Then
        Exit Sub
    End If
    For F = ActiveSheet.Index To Sheets.Count
        For L = 6 To Sheets(F).Range("a" & Rows.Count).End(xlUp).Row
            If Sheets(F).Cells(L, 1) = numéro And Sheets(F).Cells(L, 3) = Nomprénom Then
                Sheets(F).Cells.Rows(L).Delete
            End If
        Next L
    Next F
    Unload UserSup
    UserSup.Show 0
End Sub
En effet, c'était sous mes yeux j'ai tendance à m'agacer trop vite.
En tout cas, je te remercie chaleureusement.
Bonne soirée Vgendron
 

vgendron

XLDnaute Barbatruc
autre remarque
quand je vois "Sub find()"
et dans un autre module, une remarque "' jamais très bon de nommer une procédure avec un mot clef de VBA ou d'Excel
je me dis que tu n'as pas pris en compte cette remarque..
en plus; ta sub find. ne sert à rien..et n'a aucune chance de trouve le mot total, puisqu'il est hors range ciblée
et meme s'il le trouve;; et bah.. c'est bien.. il ne se passe rien..

Bref.. un gros ménage est à faire
 

vgendron

XLDnaute Barbatruc
Hello

Je reviens au sujet de ton fichier
je présume et j'espère que c'est juste un fichier de "debuggage" pour tes macros..??

beaucoup de macros travaillent sur les lignes de 6 à 126.. or il y a 216 lignes.. et sans doute plus à l'avenir.. du coup, tes macros ne sont pas adaptées...

tu aurais intérêt à modifier tes tableaux en tables structurées, pour que
1) les macros - à modifier- soient insensibles au nombre croissant ou décroissant du nombre de lignes
2) que les formules ici et la soient également plus facile à maintenir..
 

dadaze

XLDnaute Nouveau
Hello

Je reviens au sujet de ton fichier
je présume et j'espère que c'est juste un fichier de "debuggage" pour tes macros..??

beaucoup de macros travaillent sur les lignes de 6 à 126.. or il y a 216 lignes.. et sans doute plus à l'avenir.. du coup, tes macros ne sont pas adaptées...

tu aurais intérêt à modifier tes tableaux en tables structurées, pour que
1) les macros - à modifier- soient insensibles au nombre croissant ou décroissant du nombre de lignes
2) que les formules ici et la soient également plus facile à maintenir..

Bonjour,

Pour tout de dire c'est un fichier Test.
Par ailleurs, je vais me pencher sur les tableaux structurés.
Encore merci pour ton aide et tes observations pertinentes.

Bonne journée
 

vgendron

XLDnaute Barbatruc
Hello
pour les TS (Tableaux Structurés), je te conseille la lecture de ces deux sites

 

Statistiques des forums

Discussions
313 865
Messages
2 103 078
Membres
108 521
dernier inscrit
manouba