Automatiser la suppression de colonnes

Bonjour à tous,

J’ai beau essayé de comprendre mais c’est en vain, le langage VBA m’est inaccessible 😊

C’est pourquoi je demande l’aide de la communauté pour automatiser la suppression de colonnes sur une grande matrice (cf fichier en PJ).

Dans cette matrice, les colonnes avec un remplissage jaune sont celles que je souhaite conserver (ce sont les produits qui seront analysés ultérieurement).

Pourriez-vous m'aider à obtenir une macro qui supprime automatiquement les colonnes achromatiques de façon à avoir un tableau homogène des seuls produits sélectionnés dans les colonnes avec un remplissage jaune.

A noter qu'il y a toujours 14 colonnes entre chaque produit sauf pour le premier pour lequel il y a 12 colonnes à supprimer (il faut garder la première colonne qui contient les dates d'achat des produits).

Et j'ai tronqué une partie de la matrice pour faire passer le fichier mais en réalité la matrice contient plus de 900 lignes.

Merci par avance pour votre aide :)

Sarah

19produits.zip (569.83 Ko)

Bonsoir Sara79

Une possibilité comme ça à l'arrache, mais c'est long

Sub SuprColJaune()
  Dim Col As Long, dCol As Long
  With ThisWorkbook.Sheets("Produits")
    dCol = .Cells(1, Columns.Count).End(xlToLeft).Column
    For Col = dCol To 2 Step -1
      Application.StatusBar = "Traitement de la colonne : " & Col & "/" & dCol
      If .Cells(2, Col).Interior.Color <> 65535 Then
        .Cells(1, Col).EntireColumn.Delete
      End If
    Next Col
  End With
End Sub

A+

Merci Bruno :)

Toutefois la macro s'arrête aussitôt à la ligne "With ThisWorkbook.Sheets("Produits")"

et je ne sais pas pourquoi :)

Tu en sauras certainement davantage que moi :)

Sarah

J'ai oublié de te donner le message d'Excel :

Erreur d'exécution '9' :

L'indice n'appartient pas à la sélection

Voilà :)

Re,

Dans ton fichier, l'onglet se nomme "Produits" donc

Bonjour à tous!

sara79, BrunoM45

Un essai comme ceci si l'entête des colonnes est jaune...

Sub test()
dercol = Cells(1, Columns.Count).End(xlToLeft).Column
For j = dercol To 2 Step -1
If Cells(1, j).Interior.ColorIndex = 6 Then
Columns(j).Delete shift:=xlToLeft
End If
Next j
End Sub

Bonne soirée !

Salut Nordik_Nation

Ne pas définir l'objet conteneur est source à ennuis
même si cela fonctionne, mieux vaut ne pas faire ainsi

De plus, c'est exactement mon code à part le choix de la ligne de couleur et ColorIndex au lieu de Color (bien plus précis)

A+

Bonsoir à tous!

BrunoM45, en plus j'ai fait l'inverse de la demande sara79 voulait conserver les colonnes en jaune moi je les supprimais...désolé

Bonne soirée!

Bonjour à vous deux :)

En fait la couleur importe peu en réalité

C'est un code couleur pour signaler les colonnes à conserver.

Merci en tout cas pour vos contributions, c'est un début

Bonne journée

Sarah

Arf,

Sara79 et c'est maintenant que vous nous en parlez alors que nos codes ce sont basés sur la couleur

Voici alors le code basé uniquement sur le nombre de colonnes à supprimer

Sub Supr14Col()
  Dim Col As Long, dCol As Long
  With ThisWorkbook.Sheets("Produits")
    dCol = .Cells(1, Columns.Count).End(xlToLeft).Column
    For Col = dCol To 2 Step -15
      Application.StatusBar = "Veuillez patienter, supression des colonnes " & Col & "/" & dCol
      If Col - 14 > 0 Then
        .Range(.Cells(1, Col - 14), .Cells(1, Col - 1)).EntireColumn.Delete
      Else
        .Range(.Cells(1, Col - 12), .Cells(1, Col - 1)).EntireColumn.Delete
      End If
    Next Col
  End With
End Sub

A+

Désolée Bruno d'avoir mal défini mon besoin

J'ai testée la macro et elle s'arrête toujours à la ligne "With ThisWorkbook.Sheets("Produits")" sans comprendre pourquoi.

Merci infiniment pour ton aide

Sarah

Re,

Je te l'ai dis plus haut, le classeur dans lequel tu as mis le code ne contient pas de feuille "Produits"

A terme à remplacer par le vrai nom de la feuille

A+

Hello Bruno,

Pourtant l'onglet s'appelle bien "Produits" et le fichier également

Je ne comprends pas, vraiment.

Merci de ton aide,

Sarah

Re,

Alors

STP

Ou

4produits.zip (569.83 Ko)

Oups le voilà

Merci de ton aide

Sarah

Re,

Non Sara79, je ne veux pas le fichier ".xlsx" ça tu nous l'avais déjà donné

Je veux celui dans lequel tu as mis le code et qui doit avoir l'extension ".xlsm"

A+

Ton message m'a fait immédiatement comprendre que je faisais une mauvaise manip

Je ne l'avais pas enregistré au format xlsm.

Je l'ai fait et ça fonctionne !

Bravo ! Tu es un excellent pédagogue

Merci infiniment

Sarah

Re,

Une dernière chose que je ne devait pas avoir à te dire

J'avais beau cliquer sur le point d'exclamation, cela ne marchait pas

Encore merci pour ton aide

Sarah

Rechercher des sujets similaires à "automatiser suppression colonnes"