Ajout et masquage de colonne par vba [Résolu/Fermé]

Signaler
Messages postés
120
Date d'inscription
mardi 2 juin 2015
Statut
Membre
Dernière intervention
9 décembre 2020
-
Messages postés
120
Date d'inscription
mardi 2 juin 2015
Statut
Membre
Dernière intervention
9 décembre 2020
-
Bonjour,
J’ai enregistré une macro qui ajoute une colonne dans la feuille « tableau de bord », en même temps cette macro copie la formule et la mise en forme à toute la colonne ajoutée. Après cela, elle masque L’avant avant dernière colonne (dans ce cas la colonne 2017). Cette macro ne fonctionne bien qu’une fois, en effet la deuxième fois que je lance la macro elle ajoute bien une colonne, la formule et la mise en forme, mais masque toujours la même colonne (2017).
Exemple :
Premier lancement de la macro : colonne ajoutée 2019 (parfait)
Colonne cachée 2017 (parfait)
Deuxième lancement de la macro : colonne ajoutée 2019 (à la place de 2020)
Colonne cachée 2017 (à la place de 2018)
Je pense qu’il faut modifier quelque chose, mais mes connaissances en VBA s’arrêtent là. En espérant une réponse à mon problème, je joins un fichier. Merci de votre aide.

https://www.cjoint.com/c/HEstr3AE7T4

2 réponses

Messages postés
493
Date d'inscription
jeudi 27 mars 2014
Statut
Membre
Dernière intervention
26 décembre 2020
32
Bonsoir
J’espère que ce code fera l'affaire . A
tester


Sub Ajout_colonne()
With Sheets("Tableau de bord")
Application.ScreenUpdating = False
col = Cells(1, Cells(1, Rows(1).Cells.Count).End(xlToLeft).Column + 0).Address
.Range(Range(col), Range(col).Offset(7, 0)).Copy
.Range(col).Offset(0, 1).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
.Range(col).Offset(0, 1).Value = .Range(col).Offset(0, 0).Value + 1
Application.ScreenUpdating = True
End With
End Sub

bien cordialement
Messages postés
493
Date d'inscription
jeudi 27 mars 2014
Statut
Membre
Dernière intervention
26 décembre 2020
32
Oup'ss j' oubliais le masquage

Sub Ajout_colonne()
With Sheets("Tableau de bord")
Application.ScreenUpdating = False
col = Cells(1, Cells(1, Rows(1).Cells.Count).End(xlToLeft).Column + 0).Address
.Range(Range(col), Range(col).Offset(7, 0)).Copy
.Range(col).Offset(0, 1).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Application.CutCopyMode = False
.Range(col).Offset(0, 1).Value = .Range(col).Offset(0, 0).Value + 1
.Range(col).Offset(0, -1).EntireColumn.Hidden = True

Application.ScreenUpdating = True
End With
End Sub
Messages postés
120
Date d'inscription
mardi 2 juin 2015
Statut
Membre
Dernière intervention
9 décembre 2020
1
Bonjour,
Votre code marche parfaitement bien, je vous remercie de votre rapidité et pour votre temps.