Ajout et masquage de colonne par vba

Résolu/Fermé
Bourrique66 Messages postés 158 Date d'inscription mardi 2 juin 2015 Statut Membre Dernière intervention 25 septembre 2023 - 18 mai 2018 à 21:19
Bourrique66 Messages postés 158 Date d'inscription mardi 2 juin 2015 Statut Membre Dernière intervention 25 septembre 2023 - 19 mai 2018 à 17:02
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

julia Namor Messages postés 524 Date d'inscription jeudi 27 mars 2014 Statut Membre Dernière intervention 13 janvier 2024 33
18 mai 2018 à 23:30
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
0
julia Namor Messages postés 524 Date d'inscription jeudi 27 mars 2014 Statut Membre Dernière intervention 13 janvier 2024 33
18 mai 2018 à 23:40
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
0
Bourrique66 Messages postés 158 Date d'inscription mardi 2 juin 2015 Statut Membre Dernière intervention 25 septembre 2023 2
19 mai 2018 à 17:02
Bonjour,
Votre code marche parfaitement bien, je vous remercie de votre rapidité et pour votre temps.
0