Macro suppression de colonnes

Bonjour, je suis débutant en macro et ce que je voudrais faire ne me semble pas simple (enfin pour moi...)

J'ai un tableau de 11 colonnes : première colonne ce sont des noms de famille et les colonnes suivantes des heures par mois (de septembre jusqu'à juin)

ce que je voudrais, c'est que la macro supprime les colonnes qui ne sont pas du mois en cours (je précise que la première ligne indique le nom des mois... si ça peut aider...)

Par exemple si on est au mois de mai, qu'il ne conserve que la première colonne (puisque ce sont les noms de famille) et la 10ème colonne.

Si quelqu'un a une idée... je suis preneur ;-)

Merci à tous et très belle journée.

Laurent.

Bonjour

Sans fichier exemple c'est toujours compliqué de faire une réponse adaptée.

Sub SupprimeColonnes()
  Dim nc!, i!, mois$
  mois = Format(Now, "mmmm")
  nc = Cells(1, Columns.Count).End(xlToLeft).Column
  For i = nc To 2 Step -1
    If Cells(1, i).Value <> mois Then Columns(i).Delete
  Next i
End Sub

Ca devrait être une bonne base...

Wahou !!! Et le tout sans fichier support...! ça marche parfaitement et c'est exactement ce que je voulais... à une chose près.

Je viens de me rendre compte que j'envoyais mes tableaux au début du mois suivant... donc en fait, il faudrait qu'il ne conserve que la colonne du mois précédent.

Par exemple dans votre exemple il a bien conservé le mois d'octobre (puisqu'on est le 5 octobre), mais c'est le mois de septembre que je dois envoyer...

Une petite astuce (il doit y avoir un -1 quelque part j'imagine ?)

Merci 1000 fois en tout cas !!!

Laurent.

C'est prequel ça

Sub SupprimeColonnes()
  Dim nc!, i!, mois%
  mois = Month(Now)
  nc = Cells(1, Columns.Count).End(xlToLeft).Column
  For i = nc To 2 Step -1
    If Month(CDate("01/" & Cells(1, i).Value)) <> mois - 1 Then Columns(i).Delete
  Next i
End Sub

En fait il faut d'abord transformer les noms des mois en nombre.

Bonjour, et encore merci pour votre aide.

Cela ne fonctionne pas cette fois (il me met incompatibilité de type) en surlignant en jaune la ligne :

If Month(CDate("01/" & Cells(1, i).Value)) <> mois - 1 Then

Des idées ?

Merci en tout cas !!!

bonjour à tous

la variable mois est déclarée en string et on essaye d'en soustraire 1 : donc incompatibilité de type.

une solution pourrait être de conserver la première solution de yal_excel, en adaptant l'initialisation de la variable mois :

  mois = Format(DateSerial(Year(Date), Month(Date) - 1, Day(Date)), "mmmm")

A+

et ça marche... parfaitement !!!

Merci beaucoup à tous les deux pour votre contribution !!!

Bonne continuation et je saurais où venir au prochain blocage ;-)

Laurent.

Rechercher des sujets similaires à "macro suppression colonnes"