XL 2013 [RESOLU] insertion colonne sous condition

  • Initiateur de la discussion Initiateur de la discussion fabrice31
  • Date de début Date de début

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 !

F

fabrice31

Guest
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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
1 K
Réponses
9
Affichages
831
A
Réponses
4
Affichages
838
A
Réponses
3
Affichages
1 K
A
Réponses
5
Affichages
877
A
Z
Réponses
3
Affichages
1 K
Z
Retour