Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Macro VBA supprimer une colonne

marie3107

XLDnaute Nouveau
Bonjour,

J'ai créé une macro me permettant de copier/coller plusieurs feuilles (qui se nomment "RAPPORT DE COMPETENCE", "COLLECTIF" et "REPONSES") d'un fichier dans un autre fichier Excel :

Sub CopieFeuilles_INDIV()

Dim tablo, F As Object, n%, chemin$, test As Boolean, Fichier$, FileFormatNum
Dim NomClasseur As String
Dim MaMessagerie As Object
Dim MonMessage As Object
Dim NomFichier As String

ActiveSheet.Unprotect

Continuer = MsgBox("ATTENTION : Vous êtes sur le point de faire une copie du rapport de compétences. Souhaitez vous continuer ?", vbYesNo)

If Continuer = vbYes Then

tablo = Array("RAPPORT DE COMPETENCES", "COLLECTIF", "REPONSES") 'noms des feuilles à copier

Set F = ThisWorkbook.Sheets(tablo)
With Application
n = .SheetsInNewWorkbook
.SheetsInNewWorkbook = F.Count
Workbooks.Add 'nouveau document
.SheetsInNewWorkbook = n
End With
With ActiveWorkbook
For n = 1 To F.Count
With .Sheets(n)
F(n).Cells.Copy .Cells
.UsedRange = .UsedRange.Value
.Name = F(n).Name
Sheets("RAPPORT DE COMPETENCES").Columns("J:N").Select
Selection.Delete Shift:=xlToLeft
End With
Next

.Sheets(tablo).Select
ActiveWindow.DisplayGridlines = False 'le quadrillage n'est pas affiché
Application.DisplayFormulaBar = True 'Masque la barre de formule
Application.DisplayStatusBar = False
ActiveWindow.DisplayHeadings = False 'Masque les en-têtes


Sheets("RAPPORT DE COMPETENCES").Range("H2").Select

Application.Dialogs(xlDialogSaveAs).Show ("RAPPORT DE COMPETENCE - " & Sheets("RAPPORT DE COMPETENCES").Range("D6") & ".xlsx")
Sheets("RAPPORT DE COMPETENCES").Select
ActiveWorkbook.Protect
ActiveWorkbook.Close

End With
End If

End Sub

La macro marche très bien.
Or, j'arrive à supprimer les colonnes J à N de la feuille "RAPPORT de COMPETENCE" mais pas de celles "COLLECTIFS" ni "REPONSES".

Pourriez-vous m'éclairer SVP ?
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour arie,
Si les colonnes J:N sont à supprimer sur toutes les feuilles, essayez de remplacer :
VB:
Sheets("RAPPORT DE COMPETENCES").Columns("J:N").Select
par
VB:
.Columns("J:N").Select
Il utilisera par défaut la feuille nommée par Sheets(n).
 

marie3107

XLDnaute Nouveau
J'ai l'impression que je suis obligée de renseigner une feuille en amont. D'où mon Sheets("RAPPORT DE COMPETENCES").Columns("J:N").Select
Mais ça ne le supprime pas pour les feuilles COLLECTIF ni REPONSES....
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Testez avec :
Code:
Set F = ThisWorkbook.Sheets(tablo)
With ActiveWorkbook
For n = 1 To F.Count
    With .Sheets(n)
        F(n).Cells.Copy .Cells
        .UsedRange = .UsedRange.Value
        .Name = F(n).Name
        With Sheets(F(n).Name)
            .Select
            .Columns("J:N").Delete Shift:=xlToLeft
        End With
    End With
Next
End With
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…