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 :

Suppression d'un bouton en VBA sur excel 2016 [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 291
    Par défaut Suppression d'un bouton en VBA sur excel 2016
    Bonjour,

    j'ai écrit une macro qui a pour but de copier une feuille "A" en "B" après avoir fait suppression de "B" par précaution

    Mon soucis est que dans ma feuille "A" se trouve le bouton qui déclenche ma macro et je ne veux pas le retrouver sur le feuille "B"

    Comment le supprimer ou éviter la copie?

    Merci de votre aide

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    copie le usedrangeen prenant aussi A1 (pour avoir la plage au meme endroit sur sheets(2)) et non le sheets lui meme
    ajoute eventuellement le sheets(2) avant si il n'existe pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub test()
        'Sheets.Add After:=Sheets(1): Sheets(2).Name = "B"    'si le sheets("B") n'existe pas
        With Sheets("A")
            .Range("A1", .UsedRange).Copy Destination:=Sheets("B").[A1]
        End With
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    s'il n'y a pas d'autres boutons/formes/graphiques etc..., tu peux balayer la collection Shapes et supprimer chaque Shape de la feuille

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    oui aussi la methode de joe est valable
    @joe sil y n'y en a pas d'autre pas la peine de parcourir c'est shapes(1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub test2()
        Sheets("A").Select
        Sheets("A").Copy Before:=Sheets(2)
        With ActiveSheet
            .Name = "B"
            .Shapes(1).Delete
        End With
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par joe.levrai Voir le message
    s'il n'y a pas d'autres boutons/formes/graphiques etc..., tu peux balayer la collection Shapes et supprimer chaque Shape de la feuille
    Si on peut connaitre son nom (après tout, c'est un objet identifié), ça permettrait d'éviter le balayage.
    Ca permettrait aussi de supprimer d'autres "éventuelles" objets utile pour la feuille destination.

    Une solution alternative : place ton bouton dans un ruban d'icones ou dans la barre d'outils à accès rapide plutôt que dans la feuille, ça évitera d'avoir à le supprimer.

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonsoir menhir
    #post 2 et il n'a plus ce soucis
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 291
    Par défaut
    J'essaye de m'y retrouver, mais je ne suis pas expert...

    j'ai écrit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sheets("Imprimable").Copy After:=Worksheets("Imprimable")
    Sheets("PDF I").Select
        With ActiveSheet
            .Name = "PDF I"
            .Shapes(1).Delete
         End With
    La copie se fait bien au bon endroit, mais mon bouton est toujours présent dans la copie.
    Je n'arrive pas à saisir la signification de shapes(1) les docs à ce sujet sur internet ne sont pas parlantes à mes yeux de profane, que signifie le (1) ?

    J'ai vu aussi l'hypothèse de Menhir d'adresser l'objet à supprimer par son nom, celui me parait une solution simple, mais je ne vois pas comment connaître le nom de l'objet à supprimer.

    Dans ma feuille il n'y a qu'un bouton, mais aussi des images qui sont affichées dynamiquement par la fonction INDIRECT(RECHERCHEV...) , les images sont-elles dans ce cas des objets? peut être que le (1) ne pointent pas sur le bon élément à supprimer?

  8. #8
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Je n'arrive pas à saisir la signification de shapes(1)
    Shapes, c'est la collection de tous les objets shape de la feuilles.
    shapes(1), c'est le premier élément (la première shape) de l'ensemble des shapes de la feuille.


    Dans ma feuille il n'y a qu'un bouton, mais aussi des images qui sont affichées dynamiquement par la fonction INDIRECT(RECHERCHEV...) , les images sont-elles dans ce cas des objets?
    Ils disent quoi sur cette page, dont tu as le lien un peu plus haut ?

    Nom : shape.jpg
Affichages : 5724
Taille : 71,0 Ko

  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    bonjours a tous
    dur dur
    bon je recapitule
    tu a un sheets avec des donnéees des image ou des shapes et !!!!!!! 1bouton

    on t'a dis de passer par la collection shapes et je t'ai dit shapes(1) parce que tu n'avais pas dit que tu avais autre chose que des données dans ton sheets

    alors shapes(1) c'est peut etre pas le bouton donc c'est pas bon

    on va etre plus precis si tu le veux bien

    la collection shapes concerne toute les objects que tu pourrais bien mettre sur ta feuille

    mais comme tu veux supprimer que le bouton on peut passer par la collection Oleobjects qui elle ne concerne que les activX(bouton,label,etc..)

    sachant que tu n'en a qu'un pas besoins de balayer la encore c'est le (1) on a meme pas besoins de connaitre son nom

    conclusion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test2()
        Sheets("Imprimable").Copy Before:=Sheets(2)
        With ActiveSheet
            .Name = "PDF I"
            .OLEObjects(1).Delete
        End With
    End Sub
    voila
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  10. #10
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Il serait très simple de :
    - insérer un contrôle activex (ici commandbutton1) et non un contrôle formulaire
    - utiliser l'évènement clic de ce bouton (et non une macro), ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub CommandButton1_Click()
        ActiveSheet.Copy Before:=Sheets(Sheets.Count)
        With ActiveSheet
            .Name = "ma_copie"
            .Shapes("CommandButton1").Delete
        End With
    End Sub

  11. #11
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par retraite83 Voir le message
    Je n'arrive pas à saisir la signification de shapes(1)
    Ca signifie "le premier objet".
    Si on part du principe que ton bouton est un objet (ce qui est une hypothèse probable) et qu'il est le seul dans ta feuille (à toi de le confirmer), ça peut fonctionner.
    Mais, personnellement, ce n'est pas une méthode que j'appliquerais car elle est suspendue à trop de "si".
    Par exemple, si dans ta feuille tu as une flèche, un graphe, une image ou une zone de texte, ça risque de poser problème.

    J'ai vu aussi l'hypothèse de Menhir d'adresser l'objet à supprimer par son nom, celui me parait une solution simple, mais je ne vois pas comment connaître le nom de l'objet à supprimer.
    Tu sélectionnes l'objet et tu regarde le champ situé complètement à gauche de la barre de formule, sous les barres d'outils.

  12. #12
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 291
    Par défaut
    Oui effectivement j'ai nom : bouton 237... cela veut-il dire que j'ai au moins 237 shapes dans ma feuille ?

    J'ai testé cela marche très bien, cela me semble risquer d'adresser la suppression directement par ce nom... volatile ?

    Par contre j'ai une idée qui peut peut être résoudre mon problème : si au lieu de copier la feuille entière on ne copie que la plage de cellules intéressantes dans la nouvelle feuille, le bouton de commande qui est hors de cette plage ne suivra pas ?

    Mais je ne sais pas mettre en oeuvre la copie en sélectionnant une plage...
    Est-ce possible ?

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

Discussions similaires

  1. Sinon passer 6 lignes en VBA sur excel 2016
    Par scuti dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 06/07/2017, 10h06
  2. Réponses: 0
    Dernier message: 17/02/2017, 11h11
  3. Mot de passe VBA sur Excel ?
    Par ft035580 dans le forum Sécurité
    Réponses: 4
    Dernier message: 30/09/2006, 21h48
  4. [VBA-E]Executer fonction VBA sur Excel sans activer la macro
    Par marie10 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 19/01/2006, 14h34
  5. Envoi de mail via un macro vba sur excel
    Par momolamoto dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/12/2005, 18h51

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