XL 2016 VBA insertion de deux colonnes régulières à partir d'une cellule variable

bagheera

XLDnaute Nouveau
Supporter XLD
Bonjour les experts Excel,
je me suis mis au défi de faire une macro toute simple pour automatiser une action que je fais à la main à chaque fois :
créer deux colonnes régulières (une de séparation et une à remplir, exemple colonnes Q et R) à chaque nouvelle date de test.
Évidemment, la tâche s'avère plus compliquée que je ne le souhaitais.
- J'ai une cellule fusionnée (F1:S1) qui me copie tout mon tableau avec ma macro donc j'ai dû ajouter une action d'ôter la fusion de cellule pour faire la fusion de cette cellule après mon action.
- J'ai ma colonne de référence qui se déplace de deux colonnes vers la droite à chaque nouvelle insertion et je n'arrive pas à utiliser ma variable "col" comme il faut.
- Je souhaite garder la mise en forme d'origine des deux colonnes en supprimant les marquants de notation comme montrés en colonne F.
Bref, comme dirait Bonnie Tyler, je tourne en rond...
Si il y a moyen de m'expliquer ce qui pêche dans mon codage pour réussir mon défi, vous seriez géniaux !
Mille mercis d'avance pour votre aide.
Bagheera, le plus gros chat noir qu'on connaisse ^^
 

Pièces jointes

  • MODELE.xlsm
    55.8 KB · Affichages: 7
Solution
Bonjour
Ta macro modifiée
VB:
Sub Ajout_Colonnes()
    Dim col As Long
    col = Cells(2, Columns.Count).End(xlToLeft).Column
    'col = Rows("2:2").Find(What:="z").Column
    Range("F1").Select
    Selection.UnMerge
    Columns("K:L").Copy
    Columns(col).Insert Shift:=xlToRight
    col = Cells(2, Columns.Count).End(xlToLeft).Column
    Range(Range("F1"), Cells(1, col)).Merge
End Sub
A+ François

fanfan38

XLDnaute Barbatruc
Bonjour
Ta macro modifiée
VB:
Sub Ajout_Colonnes()
    Dim col As Long
    col = Cells(2, Columns.Count).End(xlToLeft).Column
    'col = Rows("2:2").Find(What:="z").Column
    Range("F1").Select
    Selection.UnMerge
    Columns("K:L").Copy
    Columns(col).Insert Shift:=xlToRight
    col = Cells(2, Columns.Count).End(xlToLeft).Column
    Range(Range("F1"), Cells(1, col)).Merge
End Sub
A+ François
 

bagheera

XLDnaute Nouveau
Supporter XLD
Merci beaucoup !
Je comprends le code plus simplifié.
Cela nécessite de n'avoir aucune écriture sur la ligne 2 après mon point de repère. C'est ça ?
Pour le fait d'avoir des colonnes vierges et prêtes à être remplies, j'ai créé une copie sur la droite de mon tableau des deux colonnes à copier.

Et j'essaie avec ce code pour aller chercher mes deux colonnes:

VB:
    Columns((col + 5) & ":" & (col + 6)).Copy
    Columns(col).Insert Shift:=xlToRight
    col = Cells(2, Columns.Count).End(xlToLeft).Column

Je dois être encore près de la bonne réponse mais je bute sur un bug.
 

Pièces jointes

  • MODELE.xlsm
    45.9 KB · Affichages: 2

Discussions similaires

Statistiques des forums

Discussions
298 001
Messages
1 965 031
Membres
200 810
dernier inscrit
lejibe