XL 2013 [RESOLU] insertion colonne sous condition

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

fabrice31

XLDnaute Junior
Bonjour,

j'aimerai inserer une colonne vide à chaque changement de mois.
mes mois commencent en I3 jusque NX3 (1 par jour).
j'ai essayé d'adapter un code trouvé pour insérer des lignes mais ..
j'y pompe rien

Sub ins()
lastr = Range("ZZ3").End(xlLeft).Row (je commence loin a droite et je reveins 1 par 1)
For i = lastr To 1 Step -1
nom1 = Cells(i, 1).Value
nom2 = Cells(i + 1, 1).Value
If nom1 <> nom2 Then
Cells(i + 1, 1).Select
Selection.EntireColumn.Insert Shift:=xlRight
End If
Next
End Sub

sur l'onglet '2017', vous avez le résultat voulu (colonne grise) fait a la main.
sur l'onglet '2018', une page test...

si quelqu'un est dispo pour m'expliquer

en vous remerciant

fabrice
 

Pièces jointes

Bonjour fabrice

A lancer sur la feuille en cours

Code:
Sub inserer_colonnes()
Application.ScreenUpdating = False
lastcol = Cells(2, Columns.Count).End(xlToLeft).Column
For n = 9 To lastcol
    If Month(Cells(2, n + 1)) <> Month(Cells(2, n)) Then
         Cells(2, n + 1).EntireColumn.Insert Shift:=xlRight
         n = n + 1
    End If
Next
Application.ScreenUpdating = True
End Sub
 
super-(précis/rapide/efficace)

juste pour info, pourquoi:
lastcol = Cells(2, Columns.Count).End(xlToLeft).Column?

et pourquoi 9?

au lieu de dire month <>, cell<> ne suffisait pas?

application.screenupdating?

désolé mais j'aime bien comprendre...

en tout cas merci et à très vite...
 
Re
Code:
Sub inserer_colonnes()
'pour arreter la mise ajour de l'ecran
Application.ScreenUpdating = False
'avoir le n° de la colonne de la derniere cellule non vide  de la ligne 2
lastcol = Cells(2, Columns.Count).End(xlToLeft).Column
For n = 9 To lastcol
'sur la ligne 2 c'est l'affichage qui donne le mois mais la valeur reste la date complète 
    If Month(Cells(2, n + 1)) <> Month(Cells(2, n)) Then
         Cells(2, n + 1).EntireColumn.Insert Shift:=xlRight
         n = n + 1
    End If
Next
Application.ScreenUpdating = True
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
9
Affichages
730
Réponses
3
Affichages
1 K
Retour