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

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 233
    Points : 462
    Points
    462
    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
    Il ne savait pas que c'était impossible, donc il l' a fait...

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    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 éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    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 073
    Points : 9 853
    Points
    9 853
    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 379
    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 379
    Points : 12 075
    Points
    12 075
    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 sénior 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
    Points : 32 866
    Points
    32 866
    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.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    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 confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 233
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 233
    Points : 462
    Points
    462
    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?
    Il ne savait pas que c'était impossible, donc il l' a fait...

  8. #8
    Inactif  

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

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    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 : 4918
Taille : 71,0 Ko
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    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
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    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
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 233
    Points : 462
    Points
    462
    Par défaut
    Patricktoulon :

    merci de ta réponse, avec (1) cela ne marche pas, j'en conclu que j'ai d'autres shapes et que ce n'est pas le 1... je vais lire les docs pour voir comment trouver la shape qui correspond à mon bouton...


    Unparia :

    merci de ton idée, mais comment puis-je insérer Private Sub CommandButton1_Click() dans ma macro qui fait également d'autres choses et qui s'appelle "sub imprimable"


    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éressante dans la nouvelle feuille, le bouton de commande qui est hors de cette plage ne suivra pas ?
    par contre je ne sais pas mettre en oeuvre la copie en sélectionnant une plage...
    Est-ce possible ?
    Il ne savait pas que c'était impossible, donc il l' a fait...

  12. #12
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    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.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 233
    Points : 462
    Points
    462
    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 ?
    Il ne savait pas que c'était impossible, donc il l' a fait...

  14. #14
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par retraite83 Voir le message
    Oui effectivement j'ai nom : bouton 237... cela veut-il dire que j'ai au moins 237 shapes dans ma feuille ?
    Ca signifie que c'est la 237è fois que tu as créé un bouton dans cette feuille.
    Parmi les 236 autres, certains ont pu être supprimés.

    J'ai testé cela marche très bien, cela me semble risquer d'adresser la suppression directement par ce nom... volatile ?
    Non, le nom persiste lorsque l'on copie la feuille.
    Si tu veux éventuellement te rassurer, dans le même champ, tu peux donner à ce bouton le nom que tu souhaites. "Mon bouton" par exemple.

    Pour le supprimer, il suffit alors d'un Shapes("Mon bouton").Delete appliqué à la bonne Worksheet.

    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 ?
    C'est la solution de Patricktoulon post #2.
    Le risque, c'est que s'il y a d'autres objets et que tu souhaites les transférer, ils ne le seront pas.
    Ca ne copiera pas non plus les hauteurs de ligne et largueurs de colonnes.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  15. #15
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    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 ?
    il faut lire toute les reponses que l'on te donne post #2

    ensuite je t'en ai donné une autre


    et oui nom volatile c'est ennuyant ca

    comme je te l'ai dis
    si tu es su!!!!!r d'avoir un seul bouton(activiX) nommé pierre paul ou jacques et que le reste des objects sont des formes,chart ,images

    alors c'est simple c'est oleobjects(1).delete

    et oui la collection shapes conterne tout les objects par contre la collection oleobjects concerne que les activX je te l'ai dis plus haut deja

    faut il encore lire toute les reponses
    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

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 233
    Points : 462
    Points
    462
    Par défaut
    Oui oui j'ai tout lu, mais pas tout compris... j'ai opté pour la solution du type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Shapes("Bouton 237").Delete
    Cela marche très bien, j'espère que le nom est stable dans le temps et en fonction des modfis sur la feuille

    Par contre j'ai un bouton sur 2 feuilles différentes qui lance chacun une macro différente... mais le nom dans la zone nom est "Bouton 237" pour les 2 ?

    j'ai essayé de mettre un nom spécifique dans la zone nom, mais "Bouton 237" revient...
    Il ne savait pas que c'était impossible, donc il l' a fait...

  17. #17
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par retraite83 Voir le message
    Par contre j'ai un bouton sur 2 feuilles différentes qui lance chacun une macro différente... mais le nom dans la zone nom est "Bouton 237" pour les 2 ?
    C'est pourquoi dans mon post #14 j'ai écrit :

    Citation Envoyé par Menhir Voir le message
    Pour le supprimer, il suffit alors d'un Shapes("Mon bouton").Delete appliqué à la bonne Worksheet.
    Pour donner un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("MaFeuille").Shapes("Bouton 237").Delete
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 233
    Points : 462
    Points
    462
    Par défaut
    Oui bien compris, merci;

    Mais quand j'écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sheets("PDF I").Select
        With ActiveSheet
            .Name = "PDF I"
            .Shapes("Bouton 237").Delete
    cela ne revient-il pas au même, étant positionné sur ma feuille "PDF I" je ne supprime que le bouton 237 de cette feuille ? même si d'autre bouton 237 existe par ailleurs

    Cela équivaut-il bien à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("PDF I").Shapes("Bouton 237").Delete
    Il ne savait pas que c'était impossible, donc il l' a fait...

  19. #19
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re

    je pense que tu comprends un peu de travers tout ce que l'on te dit
    regarde ce que tu fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sheets("PDF I").Select                          'SELECTIONNE LE FEUIL PDF 1
        With ActiveSheet                              'AVEC LE SHEET ACTIF 
            .Name = "PDF I"                                  'SON NOM EST MAINTENANT  "PDF 1"
    .Shapes("Bouton 237").Delete              'DELETE LA SHAPES "bouton 237"
    question 1 ce sheets PDF 1 c'est le quel l'original ou la copie ????
    question2 a quoi te sert de nommer le sheets actif du meme nom qu'il porte???


    on copie un sheets after ou before au autre sheets
    la copie on la selectionne pas il est deja actif !!!

    donc c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     Sheets("toto").Copy Before:=Sheets(2)' fait une copie du sheets("toto") et le met en 2d position
    'le sheets("toto(2)") est maintenant actif
    'on lui donne un autre nom 
    with activesheet
    .name="PDF 1"
    'maintenant on supprime le shape("bouton 237") dans !!! PDF 1 
    .shapes("bouton 237").delete
    end with
    qu'y a t-il que tu ne comprends pas dans ces 3 lignes ???
    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

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 233
    Points : 462
    Points
    462
    Par défaut
    Pardon de comprendre un peu de travers, mais je découvre le VBA, rappelle toi tes débuts...

    voilà l'intégralité de ma macro, elle marche très bien mais n'est surement pas optimisée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Sub supprlineimprimable()
    Dim i As Integer
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    '
    ' Suppression de l'ancienne feuille "PDF I" 
    '
    On Error Resume Next
        Application.DisplayAlerts = False
        Sheets("PDF I").Delete
        Application.DisplayAlerts = True
    '
    ' Copie "Imprimable" en "PDF I" et suppression du bouton "valider"
    '
    Sheets("Imprimable").Copy After:=Worksheets("Imprimable")
    Sheets("PDF I").Select
        With ActiveSheet
            .Name = "PDF I"
            .Shapes("Bouton 237").Delete
        End With
    '
    ' Suppression des lignes et photos inutiles dans "PDF I"
    '
    For i = 1200 To 1 Step -1
    If Cells(i, 40).Value = "X" Then
        For Each shap In ActiveSheet.Shapes
        If shap.TopLeftCell.Row = i Then shap.Delete
        Next
    Cells(i, 40).EntireRow.Delete
    End If
    Next i
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    End Sub
     
     
    Question 1 : PDF I est la copie
    Question 2 : dans 
    With ActiveSheet
            .Name = "PDF I"
            .Shapes("Bouton 237").Delete
        End With
     
    .Name = "PDF I" est donc inutile
    Il ne savait pas que c'était impossible, donc il l' a fait...

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

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