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 :

VBA : Supprimer une colonne et un onglet après sélection dans combobox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Apprenti Ingénieur
    Inscrit en
    Janvier 2016
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Apprenti Ingénieur

    Informations forums :
    Inscription : Janvier 2016
    Messages : 72
    Par défaut VBA : Supprimer une colonne et un onglet après sélection dans combobox
    Bonjour tout le monde,

    J'ai un gros problème de codification depuis quelques jours j'espère que vous pourrez m'aider.

    Je cherche à supprimer une colonne qui possède un en-tête en ligne 1 à partir de B1 par exemple B1="1".

    Je cherche également à supprimer l'onglet qui porte le même nom que l'entête de la colonne que je souhaite supprimer.

    Je suis passé par un userform composé d'un combobox et d'un bouton supprimé.

    Concernant le combobox j'ai réussi à le coder mais mon gros soucis c'est de codé l'action du bouton supprimé.

    Avez-vous une idée??? Vous trouverez un exemple de fichier le userform est à activer dans le developpeur. Classeur2.xlsm

  2. #2
    Membre éprouvé
    Homme Profil pro
    Technicien bureau d'études
    Inscrit en
    Novembre 2015
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien bureau d'études

    Informations forums :
    Inscription : Novembre 2015
    Messages : 118
    Par défaut
    Une idé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
    Dim d As Object
     
    Private Sub CommandButton1_Click()
        Application.DisplayAlerts = False
        v = Me.ComboBox1.Value
        Sheets("résumé").Columns(d(Val(v))).Delete
        Sheets(v).Delete
        Application.DisplayAlerts = True
        Unload Me
        UserForm1.Show
    End Sub
     
    Private Sub UserForm_Activate()
    Dim i As Integer
        Set d = CreateObject("Scripting.Dictionary")
        With Sheets("résumé")
            For i = 1 To .Cells.Find("*", , , , xlByColumns, xlPrevious).Column
                If .Cells(1, i).Value <> "" Then d(.Cells(1, i).Value) = i
            Next i
        End With
        Me.ComboBox1.List = d.Keys
    End Sub

  3. #3
    Membre confirmé
    Homme Profil pro
    Apprenti Ingénieur
    Inscrit en
    Janvier 2016
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Apprenti Ingénieur

    Informations forums :
    Inscription : Janvier 2016
    Messages : 72
    Par défaut
    Alors je vais répondre point par point :

    1er point: la première ligne à partir de B1 comporte des valeurs comme par EXEMPLE 1 mais ca peut être paul pierre 40404040 n'importe quoi. Ces valeurs représentent le nom des onglets qu'il peut y avoir dans la feuille.
    Par exemple dans la feuille "résumé" en ligne 1 B1 = 1 c'est donc la colonne qui correspond à l'onglet 1; en ligne 1 C1 = 2 c'est donc la colonne qui correspond à l'onglet 2 etc...

    2e point: ce que je cherche à faire c'est à l'aide du userform sélectionner dans ma combobox le nom de la colonne (et donc de l'onglet) que je veux supprimer. Par exemple : si je sélectionne dans ma combobox 1 alors la colonne qui comporte en ligne 1 la valeur de 1 est supprimée et l'onglet qui comporte la valeur de la combobox se supprime aussi

    3e point : je passe par un userform car j'en ai besoin pour mon vrai fichier tout simplement ce que j'ai envoyé est un exemple du principe que je cherche à produire

    En espérant avoir été assez clair...

    Ton code fonctionne merci beaucoup!!!
    Est-ce que ça te dérangerais de m'expliquer un peu en détail ton code car je suis un petit débutant du vba ^^

  4. #4
    Membre éprouvé
    Homme Profil pro
    Technicien bureau d'études
    Inscrit en
    Novembre 2015
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien bureau d'études

    Informations forums :
    Inscription : Novembre 2015
    Messages : 118
    Par défaut
    Voilà :

    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
    Dim d As Object
     
    Private Sub CommandButton1_Click()
        'On désactive les alertes (sinon tu en auras une au moment de supprimer l'onglet)
        Application.DisplayAlerts = False
        'On enregistre la valeur de la combobox
        v = Me.ComboBox1.Value
        'd(Val(v)), recherche l'item selon la clé Val(v), transforme un texte en numérique
        Sheets("résumé").Columns(d(Val(v))).Delete
        'On supprime l'onglet reprenant la valeur
        Sheets(v).Delete
        Application.DisplayAlerts = True
        'On décharge l'UF
        Unload Me
        'On réaffiche l'UF
        UserForm1.Show
    End Sub
     
    Private Sub UserForm_Activate()
    Dim i As Integer
        'On crée un dictionnaire pour enregistrer en clef la valeur et en item le numéro de colonne
        Set d = CreateObject("Scripting.Dictionary")
        With Sheets("résumé")
            'On boucle de la 1ère colonne à la dernière remplie
            For i = 1 To .Cells.Find("*", , , , xlByColumns, xlPrevious).Column
                'S'il existe une valeur en ligne 1 et colonne i, on ajoute l'entrée dans le dictionnaire
                If .Cells(1, i).Value <> "" Then d(.Cells(1, i).Value) = i
            Next i
        End With
        'La combobox reprend toutes les clefs du dictionnaire
        Me.ComboBox1.List = d.Keys
    End Sub

  5. #5
    Membre confirmé
    Homme Profil pro
    Apprenti Ingénieur
    Inscrit en
    Janvier 2016
    Messages
    72
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Apprenti Ingénieur

    Informations forums :
    Inscription : Janvier 2016
    Messages : 72
    Par défaut
    Merci pour tes explications , cependant je rencontre encore un petit problème

    Les deux parties de code fonctionnent indépendamment de l’autre :
    L’une sert à supprimer les colonnes du « TBR » en fonction de la sélection que j’ai choisi dans mon combobox et l’autre sert à supprimer les onglets.
    Par contre quand j’assemble les deux parties du code voila ce qu’il se passe :
    Par exemple en ligne 1 à partir de B1 j’ai les valeurs dans l’ordre 1,2,3,4,5,6,7,8 etc… il en va de même pour les onglets
    Si je sélectionne avec ma combobox la valeur 3 ça me supprime la colonne 3 mais ca me supprime les onglets 3 et 4 également par exemple…

    Par contre si je supprime dans l'ordre 8,7,6,5,4,3,2,1 ça fonctionne correctement
    Exemple Combobox.xlsm

  6. #6
    Membre éprouvé
    Homme Profil pro
    Technicien bureau d'études
    Inscrit en
    Novembre 2015
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Technicien bureau d'études

    Informations forums :
    Inscription : Novembre 2015
    Messages : 118
    Par défaut
    Pourquoi avoir modifié le code qui fonctionnait correctement pour supprimer l'onglet et la colonne ?

  7. #7
    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 aurelu Voir le message
    Vous trouverez un exemple de fichier le userform est à activer dans le developpeur.
    http://www.developpez.net/forums/d84...s-discussions/

    Je cherche à supprimer une colonne qui possède un en-tête en ligne 1 à partir de B1 par exemple B1="1".
    Je ne comprends pas ce que tu expliques.
    Est-ce que ça veut dire que tu veux scruter chaque colonne et supprimer celles qui ont la valeur 1 en première ligne ?

    Dans ce cas, il faut faire une une boucle For Each sur les cellules de la ligne 1.
    Pour chacune, tester si sa valeur est 1.
    Si c'est le cas, faire un Delete sur EntireColumn de cette cellule.

    Je cherche également à supprimer l'onglet qui porte le même nom que l'entête de la colonne que je souhaite supprimer.
    Je comprends de moins en moins.
    Tu viens d'écrire que tu cherchais les colonne ayant "1" comme entête et maintenant, tu dis que tu veux supprimer les onglet qui porte un nom correspondant à l'entête de la colonne.
    Est-ce que ça veut dire que tu veux supprimer les onglets nommés "1" ?

    Pour supprimer un onglet, il faut utiliser la méthode Delete sur le Worksheet correspondant.

    Je suis passé par un userform composé d'un combobox et d'un bouton supprimé.
    Etrange méthode.
    Pourquoi ne pas avoir fait un simple bouton dans la feuille de calcul ?

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/06/2016, 10h04
  2. Réponses: 4
    Dernier message: 12/04/2016, 12h13
  3. [VBA-Excel]Supprimer une colonne entiere basee sur une cellule
    Par Tartenpion dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/10/2006, 22h08
  4. Supprimer une colonne sous SQL Serveur 2000
    Par WOLO Laurent dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 14/07/2003, 12h24

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