Exécuter macro sur feuille précise

Bonjour à toutes et à tous. Déjà, merci pour la précieuse aide fournie pour mon autre question .

Voilà, je vous repose une autre question.

J'ai actuellement un fichier Excel avec un bouton, et quand je clique dessus, il me créé une 2è feuille qu'il rempli à partir d'un autre fichier Excel. J'aimerais rajouter dans ce bouton du code qui supprime quelques lignes et colones pour la nouvelle feuille. J'ai donc mis ça, mais ou le placer ? Par rapport au code ci-dessous, si je le place en dessous de la sélection de la bonne feuille, il me fait une erreur 400 :

    Columns("A:A").Select
    Selection.Delete Shift:=xlToLeft
    Rows("1:13").Select
    Selection.Delete Shift:=xlUp

Le problème c'est qu'il supprime les lignes et les colones de ma feuille ou se trouve mon bouton et non sur la feuille qui a été créee car il sélectionne la première feuille. J'ai donc rajouté une ligne que je vais mettre en majuscule dans le code ci-dessous pour sélectionner la bonne feuille :

Voici le code que j'ai déjà :

Sub Auto_Open()
    ' This macro will put today's date as the default new tab name
    Sheets("Menu").Select
    Range("D5").Select
    Selection.Formula = "=text(now(),""mmm dd yyyy"")"
    Selection.Copy
    Selection.PasteSpecial Paste:=xlValues
    Application.CutCopyMode = False
    Selection.Columns.AutoFit
    Range("D8").Value = ""
End Sub

Sub GetFile()
    ' This macro will import a file into this workbook

    Sheets("Menu").Select
    PathName = Range("D3").Value
    Filename = Range("D4").Value
    TabName = Range("D5").Value
    ControlFile = ActiveWorkbook.Name
    Workbooks.Open Filename:=PathName & Filename
    ActiveSheet.Name = TabName
    Sheets(TabName).Copy After:=Workbooks(ControlFile).Sheets(1)
    Windows(Filename).Activate

    'Rows("1:13").Select
    'Selection.Delete Shift:=xlUp
    'Columns("A:A").Select
    'Selection.Delete Shift:=xlToLeft

    ActiveWorkbook.Close SaveChanges:=False
    Windows(ControlFile).Activate
    Sheets("Menu").Select
    Range("D8").Select
    ActiveCell.Value = "Completed"
    Range("D9").Select

    'LIGNE QUI PERMET DE SÉLÉCTIONNER LA BONNE FEUILLE
    SHEETS("ZPFS_ORI").SELECT

    'ActiveSheet.Name = TabName
    'Sheets(TabName).Select
    'Rows("1:13").Select
    'Selection.Delete Shift:=xlUp
    'Columns("A:A").Select
    'Selection.Delete Shift:=xlToLeft

End Sub

Et j'ai biensûr dans D3, D4 et D5 les noms de mes fichiers qui se situent au même endroit.

J'espère avoir été clair, merci d'avance.

Bonjour,

Le problème c'est qu'il supprime les lignes et les colones de ma feuille ou se trouve mon bouton et non sur la feuille qui a été créee.

Pas facile sans fichier... du manière générale, Il faut savoir quelle est la feuille active à ce moment là et mettre la référence de ta feuille.

Essaie donc :

With Sheets("nom de ta feuille")
.Columns("A:A").Delete Shift:=xlToLeft
.Rows("1:13").Delete Shift:=xlUp
End With

Amicalement

J'ai édité mon premier message en sorte de te donner plus d'informations, j'espère que c'est plus clair pour toi.

Désolé je ne peux pas joindre le fichier, confidentiel...

re,

Ton code est situé après --> Windows(Filename).Activate ou plus bas dans le code ??

Autre chose à éviter --> la macro Auto_open. C'est de l'antiquité excel là. Supprime la et mets celle ci-après :

Private Sub Workbook_Open()
With Sheets("Menu")
    .Range("D5") = Format(Date, "mmm dd yyyy")
    .Columns(5).AutoFit
    .Range("D8").Value = ""
End With
End Sub

Le code est à mettre dans THISWORKBOOK en VBA.

A te relire

Ok, j'ai remplaçé la macro Auto_Open, merci.

Pour ce qui est de ta question par rapport à l'emplaçement de mon code je ne comprends pas vraiment, moi j'ai fait ctrl + a et j'ai copié et collé ça ici, je vois pas de Windows(Filname).Activate :s

EDIT : C'est quoi le THISWORKBOOK en VBA ?

EDIT 2 : Si je fais un 2è bouton qui supprimerait ce que je veux supprimer sur ma page de base : ça veut dire, je clique sur le premier, il me génère ma feuille, je clique sur le 2è, il supprime. Ça fonctionne.

Merci !

Re,

EDIT : C'est quoi le THISWORKBOOK en VBA ?

le code Pivate sub workbook_open doit être placé là.

Pour le faire :

  • ALT+F11 sur ton clavier
  • CTRL + R pour afficher VBA project à gauche
  • Double clique sur Thisworkbook et colle le code que je t'ai donné.
  • Ensuite supprime le code AUTO_OPEN

Pour ce qui est de ta question par rapport à l'emplaçement de mon code je ne comprends pas vraiment, moi j'ai fait ctrl + a et j'ai copié et collé ça ici, je vois pas de Windows(Filname).Activate :s

Elle est dans ta sub getfile que tu as collée dans ta demande..

A te relire

Edit : quel est le nom de la feuille où tu dois supprimer les lignes et colonnes --> est-ce la variable Tabname trouvée en D5 de la feuille MENU ?? est-ce --> ZPFS_ORI ??

Salut!

Oui c'est ZPFS_ORI

-- 01 Déc 2010, 08:47 --

Voilà j'ai mit dans THISWORKBOOK. Bon l'opération que je voulais faire fonctionne en 2 boutons mais j'aurais voulu tout mettre dans un seul.. Merci.

Re,

essaie ce code :

Sub GetFile()
'This macro will import a file into this workbook
'Macro modifée par Dan pour Steve le 30/11/10
Dim PathName As String, FileName As String, TabName As String, controlfile As String
With Sheets("Menu")
    .Select
    PathName = .Range("D3").Value
    FileName = .Range("D4").Value
    TabName = .Range("D5").Value
End With
controlfile = ActiveWorkbook.Name
Workbooks.Open FileName:=PathName & FileName
'ActiveSheet.Name = TabName 'désactivé au profit de l'instruction suivante
Sheets(TabName).Copy After:=Workbooks(controlfile).Sheets(1)  
Workbooks(FileName).Close SaveChanges:=False
With Thisworkbook.Sheets(TabName)
    .Columns("A:A").Delete Shift:=xlToLeft
    .Rows("1:13").Delete Shift:=xlUp
End With
Sheets("Menu").Range("D8") = "Completed"
End Sub

Si ok, n'oublie pas de cliquer sur le V vert pour cloturer le fil.

Amcialement

Merci énormément, nickel.

Rechercher des sujets similaires à "executer macro feuille precise"