Supprimer des colonnes selon les checkbox cochées VBA
Résolu
Lili!
Messages postés
1
Date d'inscription
Statut
Membre
Dernière intervention
-
Lili! -
Lili! -
Bonjour,
J'ai dans un UserForm une liste de checkbox qui ont pour texte les noms de chaque colonne de ma feuille Excel. Le numéro d'une checkbox correspond au numéro de la colonne qu'elle représente.
Je voudrais lorsque j'en sélectionne une ou plusieurs que la ou les colonnes correspondantes soit supprimées. Cela fonctionne mais cela ne me supprime pas les bonnes colonnes. Voilà le code de mon UserForm :

Private Sub CommandButton2_Click()
Dim Chbx As Control
Dim i As Long
For Each Chbx In Frame1.Controls
If Left$(Chbx.Name, 8) = "checkbox" And Chbx.Value = True Then
i = Mid(Chbx.Name, 9, 1)
Sheets("Feuil1").Columns(i).Delete
End If
Next Chbx
End Sub
Private Sub UserForm_Initialize()
Me.StartUpPosition = 2
CommandButton2.Caption = "Supprimer"
UserForm1.Caption = "Compteurs"
Frame1.Caption = "Compteurs"
With Me.Frame1
.ScrollBars = fmScrollBarsVertical
.ScrollHeight = .InsideHeight * 10
.ScrollWidth = .InsideWidth * 9
End With
Dim i As Long
Dim LastColumn As Long
Dim Cpt As Control
LastColumn = Sheets("Feuil1").Cells(1, 200).End(xlToLeft).Column
For i = 2 To LastColumn
Set Cpt = Frame1.Controls.Add("Forms.CheckBox.1", "checkbox" & i)
Cpt.Caption = Sheets("Feuil1").Cells(1, i).Value
Cpt.Left = 5
Cpt.Top = 5 + ((i - 1) * 20)
Cpt.Width = 120
Cpt.Height = 15
Next i
End Sub
Quelqu'un aurait-il une solution s'il vous plaît ?
Merci d'avance pour votre aide :)
J'ai dans un UserForm une liste de checkbox qui ont pour texte les noms de chaque colonne de ma feuille Excel. Le numéro d'une checkbox correspond au numéro de la colonne qu'elle représente.
Je voudrais lorsque j'en sélectionne une ou plusieurs que la ou les colonnes correspondantes soit supprimées. Cela fonctionne mais cela ne me supprime pas les bonnes colonnes. Voilà le code de mon UserForm :

Private Sub CommandButton2_Click()
Dim Chbx As Control
Dim i As Long
For Each Chbx In Frame1.Controls
If Left$(Chbx.Name, 8) = "checkbox" And Chbx.Value = True Then
i = Mid(Chbx.Name, 9, 1)
Sheets("Feuil1").Columns(i).Delete
End If
Next Chbx
End Sub
Private Sub UserForm_Initialize()
Me.StartUpPosition = 2
CommandButton2.Caption = "Supprimer"
UserForm1.Caption = "Compteurs"
Frame1.Caption = "Compteurs"
With Me.Frame1
.ScrollBars = fmScrollBarsVertical
.ScrollHeight = .InsideHeight * 10
.ScrollWidth = .InsideWidth * 9
End With
Dim i As Long
Dim LastColumn As Long
Dim Cpt As Control
LastColumn = Sheets("Feuil1").Cells(1, 200).End(xlToLeft).Column
For i = 2 To LastColumn
Set Cpt = Frame1.Controls.Add("Forms.CheckBox.1", "checkbox" & i)
Cpt.Caption = Sheets("Feuil1").Cells(1, i).Value
Cpt.Left = 5
Cpt.Top = 5 + ((i - 1) * 20)
Cpt.Width = 120
Cpt.Height = 15
Next i
End Sub
Quelqu'un aurait-il une solution s'il vous plaît ?
Merci d'avance pour votre aide :)
A voir également:
- Supprimer checkbox excel
- Supprimer rond bleu whatsapp - Guide
- Liste déroulante excel - Guide
- Supprimer une page word - Guide
- Word et excel gratuit - Guide
- Supprimer pub youtube - Accueil - Streaming
6 réponses
Bonjour,
oui mais quand tu en supprimes une, tout est recalculé dans >Excel
et ta colonne suivant la supprimé, était deux colonnes plus loin avant,
elle s'appelait Z, par exemple tu supprimes Y, elle devient Y...
c''est cà qui me gène:
Sheets("Feuil1").Columns(i).Delete
le i n'est plus le même après le premier delete, non ?
et si tu masques simplement ?
à mon avis
sinon il faut reconnaitre le nom de la colonne plutôt que son rang i
et bon WE...ça sent le repos !
oui mais quand tu en supprimes une, tout est recalculé dans >Excel
et ta colonne suivant la supprimé, était deux colonnes plus loin avant,
elle s'appelait Z, par exemple tu supprimes Y, elle devient Y...
c''est cà qui me gène:
Sheets("Feuil1").Columns(i).Delete
le i n'est plus le même après le premier delete, non ?
et si tu masques simplement ?
à mon avis
sinon il faut reconnaitre le nom de la colonne plutôt que son rang i
et bon WE...ça sent le repos !
Bonjour
je pense a un truc comme ça
A+
Maurice
je pense a un truc comme ça
Dim LastColumn As Long Private Sub UserForm_Initialize() Me.StartUpPosition = 2 CommandButton2.Caption = "Supprimer" Me.Caption = "Compteurs" Frame1.Caption = "Compteurs" With Me.Frame1 .ScrollBars = fmScrollBarsVertical .ScrollHeight = .InsideHeight * 10 .ScrollWidth = .InsideWidth * 9 End With Dim i As Long Dim Cpt As Control LastColumn = Sheets("Feuil1").Cells(1, 200).End(xlToLeft).Column For i = 2 To LastColumn Set Cpt = Frame1.Controls.Add("Forms.CheckBox.1", "CheckBox" & i) Cpt.Caption = Sheets("Feuil1").Cells(1, i).Value Cpt.Left = 5 Cpt.Top = 5 + ((i - 1) * 20) Cpt.Width = 120 Cpt.Height = 15 Next i End Sub Private Sub CommandButton2_Click() Dim C As Long For C = LastColumn To 2 Step -1 If Controls("CheckBox" & C).Value = True Then Sheets("Feuil1").Columns(C).Delete End If Next End Sub
A+
Maurice
Merci pour vos réponses,
Maurice j'ai essayé ton code, rien ne se passe.
Labdreun j'ai fait en masquant les colonnes mais j'ai un problème pour la dernière colonne. Je ne sais pas pourquoi quand je coche la dernière checkbox qui devrait me masquait la dernière colonne, cela me masque la première. Pourtant il n'y a aucune checkbox qui doit correspondre à la première colonne !
Maurice j'ai essayé ton code, rien ne se passe.
Labdreun j'ai fait en masquant les colonnes mais j'ai un problème pour la dernière colonne. Je ne sais pas pourquoi quand je coche la dernière checkbox qui devrait me masquait la dernière colonne, cela me masque la première. Pourtant il n'y a aucune checkbox qui doit correspondre à la première colonne !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question