IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Copie d'un onglet vers un autre [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier

    Profil pro
    Inscrit en
    Août 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 141
    Points : 71
    Points
    71
    Billets dans le blog
    1
    Par défaut Copie d'un onglet vers un autre
    Bonjour,
    je vous explique mon souci.
    J'ai fait un petit programme Excel avec des boutons qui me permettent de tout vider, effacer, extraire...
    lors de l'extraction la copie se fait mais les boutons se copient avec et je voudrais les supprimer en fin d'utilisation de la macro d'extraction.
    Comment dois-je m'y prendre?? Cela fait plusieurs semaines que je teste avec des et même des
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Shapes(x).Select
    et ça ne fonctionne pas.
    Quelqu'un peut-il m'aider??
    Merci

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 939
    Points : 28 936
    Points
    28 936
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La méthode Select comme son nom l'indique sélectionne et Delete supprime.
    Exemple d'une copie de la feuille nommée [Feuil1] contenant des contrôles Formulaire ou ActiveX et ensuite suppression de ceux-ci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub t()
     Dim sh As Shape
     Sheets("Feuil1").Copy Before:=Sheets(1)
     For Each sh In ActiveSheet.Shapes
      sh.Delete
     Next
    End Sub

  3. #3
    Membre régulier

    Profil pro
    Inscrit en
    Août 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 141
    Points : 71
    Points
    71
    Billets dans le blog
    1
    Par défaut
    Bonjour et merci pour votre aide,
    Là j'ai fait le test avec votre proposition et cela marche parfaitement bien sauf... que je voudrais copier cet onglet original directement vers un nouveau classeur et enlever les boutons ensuite afin de pouvoir le transmettre sans aucune macro ni bouton...
    Merci

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 939
    Points : 28 936
    Points
    28 936
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je n'ai lu nulle part dans ta demande que c'était une copie vers un nouveau classeur.
    Le code que je t'ai proposé montre comment enlever les boutons de la feuille active. Insère le dans ta procédure initiale qui je suppose fonctionnait.
    Seul le code de copie doit être modifié.

  5. #5
    Membre régulier

    Profil pro
    Inscrit en
    Août 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 141
    Points : 71
    Points
    71
    Billets dans le blog
    1
    Par défaut
    Me revoici
    EN fait votre code fonctionne parfaitement sauf qu'il supprime également le logo de notre société.
    Donc pour pas m'embêter je le rajoute automatiquement sur l'onglet de mon nouveau classeur.
    Le souci que j'ai maintenant est que, lorsque j'insère l'image, elle se met n'importe où avec une taille variable.
    Y a-t-il une commande qui lui permettrait de la mettre à une taille voulu et à un emplacement voulu?
    J'ai tester pour l'emplacement de la mettre tout en haut à gauche avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Selection.Left = [A1].Left
    Selection.Top = [A1].Top
    Mais c'est bizarre car ça ne marche pas tout le temps.
    J'ai également essayer de modifier la taille de l'image avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.ShapeRange.ScaleWidth...
    Mais pareil...
    Y a-t-il une solution
    Merci

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 939
    Points : 28 936
    Points
    28 936
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    EN fait votre code fonctionne parfaitement sauf qu'il supprime également le logo de notre société.
    Avant de poser une question, il serait intéressant de réfléchir à toutes les contraintes et ce afin d'éviter des discussions qui n'en finissent plus.
    Une image, un bouton, etc. font partie de la collection Shapes. Les membres de cette collection ont comme tous les objets un nom.
    Ce nom est la valeur de la propriété Name de l'objet. Il suffit donc de faire un test afin de ne pas supprimer celui-ci.

    Exemple d'une procédure, pour connaître le nom de tous les objets de la feuille nommée "Feuil1"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub t()
     Dim sh As Shape, txt As String
     txt = "Liste des objets Shape de la feuille"
     For Each sh In ThisWorkbook.Worksheets("Feuil1").Shapes
      txt = txt & vbCrLf & sh.Name
     Next
     MsgBox txt
    End Sub
    Ceci dit, à votre place, je placerais le logo de l'entreprise dans l'en-tête de la feuille et non pas sur la feuille elle-même.

  7. #7
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 699
    Points
    6 699
    Par défaut
    Bonjour,

    Citation Envoyé par Philippe
    Avant de poser une question, il serait intéressant de réfléchir à toutes les contraintes et ce afin d'éviter des discussions qui n'en finissent plus.
    Sinon ne serait-il pas plus simple que ton Bouton Extraire ne copie que les données et aille les coller dans un nouveau classeur qui serait ouvert à partir d'un modèle (.xlt) qui comporterait le logo à l'endroit voulu et les fioritures voulues pour la mise en forme, c'est la base de ce genre de traitement chez moi

    cordialement,

    Didier

  8. #8
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 939
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 939
    Points : 28 936
    Points
    28 936
    Billets dans le blog
    53
    Par défaut
    Bonjour Didier,

    C'est également cette méthode que je privilégie. Voire encore une feuille modèle (éventuellement cachée) présent dans le classeur où se trouve le code VBA et que l'on copie vers un nouveau, ce qui permet d'être plus nomade et surtout plus indépendant de son PC même si celui-ci est portable.

  9. #9
    Membre régulier

    Profil pro
    Inscrit en
    Août 2008
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 141
    Points : 71
    Points
    71
    Billets dans le blog
    1
    Par défaut
    OK Merci à tous pour votre aide
    J'ai trouvé mon bonheur grâce à vous
    Je cloture la discussion

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Copie de données d'un onglet vers un autre
    Par smael51 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 13/09/2010, 08h21
  2. Réponses: 7
    Dernier message: 16/08/2007, 10h06
  3. copie d'un fichier vers un autre d'un extrait XML
    Par MOMO321 dans le forum Modules
    Réponses: 2
    Dernier message: 05/07/2006, 11h21
  4. copie d'un record vers une autre table
    Par ph4prod dans le forum Bases de données
    Réponses: 2
    Dernier message: 27/10/2005, 14h04
  5. copie d'un fichier vers un autre serveur
    Par jexl dans le forum ASP
    Réponses: 4
    Dernier message: 20/12/2004, 16h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo