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.
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...
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
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..
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
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
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..
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..
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..
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.
For a data analyst, Excel Tables are a necessity! They are the most efficient way to organize your raw data and refer to data that contracts or expands on a regular basis. Likewise, Excel tables can be extremely useful in combination with VBA.