VBA - suppression colonnes
Résolu
chrispr07
Messages postés
47
Date d'inscription
Statut
Membre
Dernière intervention
-
chrispr07 Messages postés 47 Date d'inscription Statut Membre Dernière intervention -
chrispr07 Messages postés 47 Date d'inscription Statut Membre Dernière intervention -
Bonjour tout le monde,
j'ai ecris un code qui me permet d'inserer des colonnes dans une feuille excel
mais pour cela il me fallait suprimer des colonnes qui m'interessait pas
pour cela j'ai ecris une macro permettant la suppression de colonne
il se trouve qu'il marche bien dans le cas d'une seule fois
mais apres on me parle d'un probleme colonne vide et mon algo n'efface plus la plage que je veux
voici le code
j'arrive pas a voir mon erreur
donc si quelqu'un pouvait jeter un oeil
il ya une partie qui coince au niveau de la suppression de colonne
sa marche pour la premiere fois quand je veux reappliquer sa déconne
l
' Long_Term_Planning_Update Macro
'
'
Dim i As Integer
i = Sheets("MyMenuSheet").Range("E47").Value
'MsgBox i
' Copy and save the current year
Sheets("MT_DD_LR_SA").Select
Sheets("MT_DD_LR_SA").Copy Before:=Sheets("Feuil1")
'Rename this copy
Sheets("MT_DD_LR_SA (2)").Name = "Historic_" & i - 1 & "_" & i
Sheets("MT_DD_LR_SA").Select
'Erase the previous year
Columns("G:BG").Select
Selection.Delete shift:=xlToLeft
' first_Userform1.hide
' Inser_Column_UserForm1.show
'insertion columns
Application.DisplayAlerts = False
Dim x As Integer ' row of month in MyMenuSheet
Dim sem As Integer ' sem is the weeks number
Dim debut, fin, courant As Double
debut = Range("BH3").Column 'Change by what you want
fin = Range("BS3").Column
courant = debut
x = 49
Do Until courant > fin
'Add sem column
sem = Sheets("MyMenuSheet").Range("E" & x).Value
For n = 1 To sem - 1
Columns(courant).Insert shift:=xlToRight, CopyOrigin:=xlFormatFromRightOrBelow
With Range(Cells(3, courant), Cells(3, (courant + sem - 1)))
.ColumnWidth = 4
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
End With
Next n
' column size
With Range(Cells(3, courant), Cells(3, (courant + sem - 1)))
.ColumnWidth = 4
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
End With
'Columns(courant).insert shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
'merge Columns:
Cells(3, courant).Value = Cells(3, (courant + sem - 1)).Value
Range(Cells(3, courant), Cells(3, (courant + sem - 1))).Merge
courant = courant + sem
fin = fin + sem - 1
x = x + 1
Loop
Application.DisplayAlerts = True
merci d'avance pour votre aide
Chrispr07
j'ai ecris un code qui me permet d'inserer des colonnes dans une feuille excel
mais pour cela il me fallait suprimer des colonnes qui m'interessait pas
pour cela j'ai ecris une macro permettant la suppression de colonne
il se trouve qu'il marche bien dans le cas d'une seule fois
mais apres on me parle d'un probleme colonne vide et mon algo n'efface plus la plage que je veux
voici le code
j'arrive pas a voir mon erreur
donc si quelqu'un pouvait jeter un oeil
il ya une partie qui coince au niveau de la suppression de colonne
sa marche pour la premiere fois quand je veux reappliquer sa déconne
l
' Long_Term_Planning_Update Macro
'
'
Dim i As Integer
i = Sheets("MyMenuSheet").Range("E47").Value
'MsgBox i
' Copy and save the current year
Sheets("MT_DD_LR_SA").Select
Sheets("MT_DD_LR_SA").Copy Before:=Sheets("Feuil1")
'Rename this copy
Sheets("MT_DD_LR_SA (2)").Name = "Historic_" & i - 1 & "_" & i
Sheets("MT_DD_LR_SA").Select
'Erase the previous year
Columns("G:BG").Select
Selection.Delete shift:=xlToLeft
' first_Userform1.hide
' Inser_Column_UserForm1.show
'insertion columns
Application.DisplayAlerts = False
Dim x As Integer ' row of month in MyMenuSheet
Dim sem As Integer ' sem is the weeks number
Dim debut, fin, courant As Double
debut = Range("BH3").Column 'Change by what you want
fin = Range("BS3").Column
courant = debut
x = 49
Do Until courant > fin
'Add sem column
sem = Sheets("MyMenuSheet").Range("E" & x).Value
For n = 1 To sem - 1
Columns(courant).Insert shift:=xlToRight, CopyOrigin:=xlFormatFromRightOrBelow
With Range(Cells(3, courant), Cells(3, (courant + sem - 1)))
.ColumnWidth = 4
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
End With
Next n
' column size
With Range(Cells(3, courant), Cells(3, (courant + sem - 1)))
.ColumnWidth = 4
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = True
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
End With
'Columns(courant).insert shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
'merge Columns:
Cells(3, courant).Value = Cells(3, (courant + sem - 1)).Value
Range(Cells(3, courant), Cells(3, (courant + sem - 1))).Merge
courant = courant + sem
fin = fin + sem - 1
x = x + 1
Loop
Application.DisplayAlerts = True
merci d'avance pour votre aide
Chrispr07
A voir également:
- Supprimer colonne vba
- Supprimer rond bleu whatsapp - Guide
- Déplacer colonne excel - Guide
- Trier colonne excel - Guide
- Supprimer une page word - Guide
- Colonne word - Guide
4 réponses
Bonjour,
Si tu pouvais nous mettre un classeur au lieu d'une liste imbuvable de codes, sans éléments personnels, avec les résultats souhaités expliqués clairement, se serait plus facile de t'aider.
Pour communiquer ton classeur tu le télécharges sur https://www.cjoint.com/ et tu mets ici le lien obtenu.
Si tu pouvais nous mettre un classeur au lieu d'une liste imbuvable de codes, sans éléments personnels, avec les résultats souhaités expliqués clairement, se serait plus facile de t'aider.
Pour communiquer ton classeur tu le télécharges sur https://www.cjoint.com/ et tu mets ici le lien obtenu.