VBA - suppression colonnes [Résolu/Fermé]

Signaler
Messages postés
47
Date d'inscription
mercredi 6 août 2014
Statut
Membre
Dernière intervention
2 juillet 2015
-
Messages postés
47
Date d'inscription
mercredi 6 août 2014
Statut
Membre
Dernière intervention
2 juillet 2015
-
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


4 réponses

Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 102
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.
Messages postés
47
Date d'inscription
mercredi 6 août 2014
Statut
Membre
Dernière intervention
2 juillet 2015

bonjour voici
comme demandé le classeur
https://www.cjoint.com/?3HxmMHWZ6ta
pour acceder au classeur
les code : evt2014/evt


cordialement


Chrispr07
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 102
Bonsoir,

Bien vu le classeur mais le "bouton M=>Weeks " pas vu et le mot de passe ne fonctionne pas.
Messages postés
47
Date d'inscription
mercredi 6 août 2014
Statut
Membre
Dernière intervention
2 juillet 2015

bonsoir
pour entrer dans le classeur essaye evt2014
pour acceder au code ecrit macro
le code c'est : evt
pour le bouton compile dans this workbook pour le faire apparaitre
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 102
Bonjour,

Je suis rentré dans ton code mais tu devrais le simplifier, par exemple :
     Sheets("MT_DD_LR_SA").Select
     'Erase the previous year
      Columns("G:BG").Select
    Selection.Delete shift:=xlToLeft

peut s'écrire ainsi et c'est plus efficace :
      'Erase the previous year
     Sheets("MT_DD_LR_SA").Columns("G:BG").Delete shift:=xlToLeft

ou encore :
   Range("BH4").Select
    Sheets("Feuil1").Select
    
    Range("A33:AZ35").Select 'correspond to 2015 Tableon sheet (1)
    Selection.Copy
    Sheets("MT_DD_LR_SA").Select
    Range("BH4").Select
    ActiveSheet.Paste
    Range("BH17").Select
    ActiveSheet.Paste
    
    Range("BH30").Select
    ActiveSheet.Paste
    
    Range("BH43").Select
    ActiveSheet.Paste
    
    Range("BH56").Select
    ActiveSheet.Paste

cela donne :
    Application.EnableEvents = False
    Sheets("Feuil1").Range("A33:AZ35").Copy
    With Sheets("MT_DD_LR_SA")
        .Activate
        .Paste Destination:=.Range("BH4")
        .Paste Destination:=.Range("BH17")
        .Paste Destination:=.Range("BH30")
        .Paste Destination:=.Range("BH43")
        .Paste Destination:=.Range("BH56")
    End With
    Application.EnableEvents = True

J'ai rajouté l'inhibition des événementielles qui prennent beaucoup de temps.
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 102
Tu devrais avoir des codes à adapter
Messages postés
47
Date d'inscription
mercredi 6 août 2014
Statut
Membre
Dernière intervention
2 juillet 2015

salut , me revoila encore j'ai vraiment honte
mais hier lorsque je compilais sa passait mais aujourd'hui onme parle d'erreur 1004
qe je deplace des cellules dans des plages vides


je ne sais plus quoi faire
Messages postés
14934
Date d'inscription
lundi 18 octobre 2004
Statut
Contributeur
Dernière intervention
24 juin 2020
4 102
Bonsoir,

Tu as sans doute changé des codes ?
Messages postés
47
Date d'inscription
mercredi 6 août 2014
Statut
Membre
Dernière intervention
2 juillet 2015

Bonsoir,
le truc c'est que je suis la dessus a voir si je ne me suis pas trompé quelque part
mais rien de concluant
Messages postés
47
Date d'inscription
mercredi 6 août 2014
Statut
Membre
Dernière intervention
2 juillet 2015

ça va
j'ai vu mon erreur
merci
Bonjour

voila des modele de Macro

Sub InsertColonne()
' Mettre en ordre decroissant
Columns(10).Insert
Columns(7).Insert
Columns(3).Insert
End Sub

Sub Delcolonne()
' Mettre en ordre decroissant
Columns(12).Delete
Columns(8).Delete
Columns(3).Delete
End Sub

A+
Maurice
Messages postés
47
Date d'inscription
mercredi 6 août 2014
Statut
Membre
Dernière intervention
2 juillet 2015

ok ,j'ai déjà résolu mon problème
mais merci

Chrispr07