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 :

Supprimer Combobox avec Sub [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club Avatar de Scoubi7
    Profil pro
    Inscrit en
    Août 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 172
    Points : 54
    Points
    54
    Par défaut Supprimer Combobox avec Sub
    Bonjour,

    Je souhaiterais supprimer toutes les Shapes d'un classeur
    cela fonctionne avec la commande :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            For Each Shape In ActiveSheet.Shapes
                Shape.Delete
            Next Shape
    jusqu'à ce que cela soit le tour des Comboboxes, j'obtiens une erreur car je leur ai attribué des Sub ComboBox0?_Change() (? remplace un nombre car il y en a plusieurs)

    Quelqu'un a-t-il une solution ?
    Soyez ce que vous voudriez que le monde soit !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    A essayer :

    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
     
    Sub EssaiSuppressionShape()
     
    Dim ShapeEnCours As Shape
    Dim OngletEnCours As Worksheet
     
        Application.EnableEvents = False
     
        For Each OngletEnCours In ActiveWorkbook.Worksheets
            For Each ShapeEnCours In OngletEnCours.Shapes
                ShapeEnCours.Delete
            Next ShapeEnCours
        Next OngletEnCours
     
        Application.EnableEvents = True
     
    End Sub
    Cordialement.

  3. #3
    Membre du Club Avatar de Scoubi7
    Profil pro
    Inscrit en
    Août 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 172
    Points : 54
    Points
    54
    Par défaut
    Merci pour ton aide

    Non toujours pareil
    Soyez ce que vous voudriez que le monde soit !

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Scoubi7 Voir le message
    Non toujours pareil
    Il faudrait tester sur un fichier sans données confidentielles.

    Cordialement.

  5. #5
    Membre du Club Avatar de Scoubi7
    Profil pro
    Inscrit en
    Août 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 172
    Points : 54
    Points
    54
    Par défaut
    Si finalement j'avais essayé de l'intégrer dans mon code directement en ajoutant uniquement "Application.EnableEvents = False"
    mais quand je lance ta macro seule, cela fonctionne
    Je vais chercher d'où cela peut provenir dans mon code

    Merci !
    Soyez ce que vous voudriez que le monde soit !

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Scoubi7 Voir le message
    Je vais chercher d'où cela peut provenir dans mon code
    Il faut intégrer "Application.EnableEvents = False" en début de la procédure principale qui devrait se trouver dans un module standard.

    Cordialement.

  7. #7
    Membre du Club Avatar de Scoubi7
    Profil pro
    Inscrit en
    Août 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 172
    Points : 54
    Points
    54
    Par défaut
    Je me demande si cela ne vient pas d'une incompatibilité avec "On Error Resume Next" ou "Application.DisplayAlerts = False"

    Voici mon code :

    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
    Sub Proprio(WB As Workbook, ByVal Password As String)
        On Error Resume Next
        Application.DisplayAlerts = False
        Chemin = ThisWorkbook.Path
        Fichier = Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
        ThisWorkbook.SaveAs Filename:=Chemin & "\" & Fichier & ".xlsx", FileFormat:=xlOpenXMLWorkbook
        For Each Sheet In Worksheets
            Sheet.Activate
            Sheet.Unprotect (PasswordA)
            Sheet.Unprotect (PasswordB)
            With ActiveSheet.UsedRange
                .Value = .Value
                .FormatConditions.Delete
            End With
            Application.EnableEvents = False
            For Each Shape In ActiveSheet.Shapes
                Shape.Delete
            Next Shape
            Application.EnableEvents = True
            If ActiveSheet.Visible = False Then ActiveSheet.Delete
        Next Sheet
        ThisWorkbook.Code = ""
        'Kill (Chemin & "\" & Fichier & ".xls") ' A intégrer quand finalisé
        Application.DisplayAlerts = True
        ThisWorkbook.Save
        ThisWorkbook.Close
    End Sub
    (en fait ce code me sert à supprimer macros, formules et mises en formes conditionnelles si le fichier n'est pas lancé sur mon ordi)
    Soyez ce que vous voudriez que le monde soit !

  8. #8
    Invité
    Invité(e)
    Par défaut
    Voir mon message précédent pour l'emplacement de la ligne de commande.

    En phase de test, il vaut mieux éviter de mettre des On Error Resume Next. Sinon vous ne voyez pas ce qui se passe.

    Cordialement.
    Dernière modification par AlainTech ; 01/01/2017 à 13h18. Motif: Suppression de la citation inutile

  9. #9
    Membre du Club Avatar de Scoubi7
    Profil pro
    Inscrit en
    Août 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 172
    Points : 54
    Points
    54
    Par défaut
    En fait l'erreur vient de cette partie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            With ActiveSheet.UsedRange
                .Value = .Value
                .FormatConditions.Delete
            End With
    En fait le problème vient du fait que c'est la Macro de fichier xls qui est en cours alors que les modifs se font sur le fichier xlsx...
    Soyez ce que vous voudriez que le monde soit !

  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
    En fait le problème vient du fait que c'est la Macro de fichier xls qui est en cours alors que les modifs se font sur le fichier xlsx
    voilà ce qui n'arrive jamais à ceux qui, de manière systématique et rigoureuse, travaillent (et les invoquent) directement sur les objets de l'Application.
    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 du Club Avatar de Scoubi7
    Profil pro
    Inscrit en
    Août 2007
    Messages
    172
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 172
    Points : 54
    Points
    54
    Par défaut
    J'ai résolu une partie du problème en faisant comme ceci :
    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
    Sub ESSAI()
        'Application.DisplayAlerts = False
        'Application.EnableEvents = False
        Chemin = ThisWorkbook.Path
        Fichier = Left(ThisWorkbook.Name, Len(ThisWorkbook.Name) - 4)
        Set NewWorkbook = Workbooks.Add(1)
        ActiveWindow.DisplayGridlines = False
        NewWorkbook.SaveAs Filename:=Chemin & "\" & Fichier & ".xlsx", FileFormat:=xlOpenXMLWorkbook
        For Each Sheet In Workbooks(Fichier & ".xls").Worksheets
            If Workbooks(Fichier & ".xls").Worksheets(Sheet.Name).Visible = True Then
                Workbooks(Fichier & ".xls").Worksheets(Sheet.Name).Cells.Copy
                Workbooks(Fichier & ".xlsx").Worksheets(xlLast).Paste
                Workbooks(Fichier & ".xlsx").ActiveSheet.Name = Sheet.Name
                Workbooks(Fichier & ".xlsx").ActiveSheet.Range("A1").Select
            End If
            With Workbooks(Fichier & ".xlsx").ActiveSheet.UsedRange
                .Value = .Value
                .FormatConditions.Delete
            End With
        Next Sheet
    End Sub
    Mais mon problème maintenant est qu'il faut que j'arrive à supprimer le fichier qui lance la macro mais qui est ouvert...
    Soyez ce que vous voudriez que le monde soit !

  12. #12
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Scoubi7 Voir le message
    Si finalement j'avais essayé de l'intégrer dans mon code directement en ajoutant uniquement "Application.EnableEvents = False"
    mais quand je lance ta macro seule, cela fonctionne
    Bonsoir,

    Ma première réponse répondait au problème posé. Vos derniers messages sont à des "km" du message d'origine et plus personne n'arrive à vous suivre. Vous devriez clôturer ce message et en créer un nouveau en expliquant ce que vous voulez faire réellement.

    Cordialement.

  13. #13
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 814
    Points : 2 949
    Points
    2 949
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Pour les anglophones : à lire
    Cordialement,
    Franck

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

Discussions similaires

  1. [C#] Remplir une combobox avec le champs d'une table Access
    Par Damsou dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/06/2005, 15h31
  2. PB de chargement de combobox avec une requete
    Par bubu1905 dans le forum Bases de données
    Réponses: 9
    Dernier message: 23/03/2005, 16h14
  3. [VB.NET] Remplir une ComboBox avec une requete sql
    Par graphicsxp dans le forum Windows Forms
    Réponses: 6
    Dernier message: 22/03/2005, 15h29
  4. Réponses: 2
    Dernier message: 26/07/2004, 13h34
  5. [langage] supprimer un # avec un . comme marqueur
    Par Cjules dans le forum Langage
    Réponses: 6
    Dernier message: 08/07/2004, 17h54

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