bonjour
Je cherche la méthode la plus rapide pour supprimer des colonnes discontinues B D E H K L M O dans un tableau structuré nommé Tableau1 de A6 :O16 en VBA.
Cordialement
Moi aussi jouer je veux .
Les numéros des colonnes sont les numéros des colonnes dans le tableau.
Si on déplace le tableau, les numéros des colonnes à supprimer ne changent pas.
La seule chose à modifier dans le code, c'est la cellule de départ du tableau ( [a6] ).
VB:
Sub test()
Dim mesColonnes, i&, j&
mesColonnes = Array(2, 13, 4, 11, 8, 15, 5, 12) ' pas forcément ordonné
For i = 0 To UBound(mesColonnes): Sheets("Feuil1").[a6].ListObject.ListColumns(Application.Large(mesColonnes, i + 1)).Delete: Next
End Sub
Salut, si tu dois faire cette manipulation régulièrement et que c'est toujours les mêmes colonnes, cette macro fait le job.
Code:
Sub SupprimerColonnes()
Dim ws As Worksheet
Dim tbl As ListObject
Dim arr As Variant
Dim i As Long
Set ws = ThisWorkbook.Sheets("Feuil1")
Set tbl = ws.ListObjects("Tableau1")
' Définir le tableau des colonnes à supprimer
arr = Array(15, 13, 12, 11, 8, 5, 4, 2)
' Boucle à travers le tableau pour supprimer les colonnes
For i = LBound(arr) To UBound(arr)
tbl.ListColumns(arr(i)).Delete
Next i
End Sub
bonjour
Je cherche la méthode la plus rapide pour supprimer des colonnes discontinues B D E H K L M O dans un tableau structuré nommé Tableau1 de A6 :O16 en VBA.
Cordialement
Bonsoir,
Procédure à associer éventuellement à un bouton :
VB:
Sub SupprCol()
Dim i As Long
With Worksheets("Feuil1").ListObjects("Tableau1")
i = .ListColumns.Count
Do While i >= 1
If Left(.ListColumns(i).Name, 7) = "Colonne" Then
.ListColumns(i).Range.Delete
End If
i = i - 1
Loop
End With
End Sub
Bonsoir M. @Gégé-45550
Merci pour votre code, c'est rapide et efficace. Effectivement, la libelle qui commence Colonne.
Mais si c'est possible que les valeurs en J1 et J2 se déplacent avec la suppression ?
re
bonsoir
une règle d'or quand on supprime des lignes ou des colonne non contiguës dans un tableau
c'est de le faire en commençant par la dernière pour terminer par la première
la demande est de supprimer je cite
supprimer des colonnes discontinues B D E H K L M O dans un tableau structuré nommé Tableau1
je met donc les colonnes désignées en évidence
comme ici les index de colonne feuille seront les même que le tableau
puisque qu'il commence en colonne "A"
je vais donc me servir des indexs colonne de feuille
je vais donc supprimer les colonnes à reculons de droite vers la gauche
VB:
Sub test()
Dim col, colm&
col = Split("B D E H K L M O", " ")
For i = UBound(col) To 0 Step -1
colm = Cells(1, col(i)).Column
Sheets("Feuil1").[tableau1].ListObject.ListColumns(colm).Delete
Next
End Sub
attention c'est parti
terminé
et si le tableau ne devait pas commencer en colonne "A"
mais que l'on avait que les colonne de feuille pour argument
on rectifie comme ceci
Code:
Sub test()
Dim col, colm&, TbS
col = Split("B D E H K L M O", " ")
Set TbS = Sheets("Feuil1").[tableau1].ListObject
For i = UBound(col) To 0 Step -1
colm = Cells(1, col(i)).Column + (TbS.Range.Column - 1)
.ListColumns(colm).Delete
Next
End Sub
pour finir je répète quand on supprime des lignes dans un tableau structuré , une plage de cellule , une listbox , une combobox et ce que peut comporter une liste on le fait en partant de la fin vers le début
c'est une règle immuable
merci, M @patricktoulon pour le code et pour vos conseils.
SVP, après tous vos codes, je dois ajouter les lignes suivantes.
range("F1").value = range("J1").value
range("F2").value = range("J2").value
En plus, éliminer la fusion du A3 et A4
Centrer la cellule A3:G3 et A3:G3
Moi aussi jouer je veux .
Les numéros des colonnes sont les numéros des colonnes dans le tableau.
Si on déplace le tableau, les numéros des colonnes à supprimer ne changent pas.
La seule chose à modifier dans le code, c'est la cellule de départ du tableau ( [a6] ).
VB:
Sub test()
Dim mesColonnes, i&, j&
mesColonnes = Array(2, 13, 4, 11, 8, 15, 5, 12) ' pas forcément ordonné
For i = 0 To UBound(mesColonnes): Sheets("Feuil1").[a6].ListObject.ListColumns(Application.Large(mesColonnes, i + 1)).Delete: Next
End Sub