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 feuilles d'un fichier excel en fonction de la sélection vba [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2016
    Messages : 41
    Par défaut Supprimer feuilles d'un fichier excel en fonction de la sélection vba
    Bonjour,

    Je souhaiterais pouvoir supprimer les feuilles que j'ai sélectionné dans mon userform dont voici le code :
    Cela ne fonctionne pas correctement. Il y a un décalage entre les feuilles sélectionnées et les feuilles supprimées.


    Merci d'avance


    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
    Sub UserForm_Initialize()
     
    '--- Déclaration des variables
    Dim Feuille As Worksheet
     
    '--- Génération de la liste des onglets
      With ListBox1
        .MultiSelect = fmMultiSelectExtended
        .Clear
        For Each Feuille In Sheets
            .AddItem Feuille.Name
        Next
    End With
     
    End Sub
    'Action quand on clique sur le Bouton
    Private Sub CommandButton2_Click()
    '--- Déclaration des variables
    Dim i As Integer
    Dim Feuille() As Variant
    Dim NbFeuille As Integer
    '--- Impression des onglets sélectionnés
     With ListBox1
        For i = 0 To .ListCount - 1
          If .Selected(i) Then
            ReDim Preserve Feuille(NbFeuille)
            Feuille(NbFeuille) = .List(i)
            NbFeuille = NbFeuille + 1
            Application.DisplayAlerts = False
            Sheets(i).Delete
          End If
        Next i
      Unload Me
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Il te suffit de les sélectionner et de les supprimer en une seule fois :
    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
     
    Private Sub CommandButton2_Click()
     
        Dim i As Integer
     
        With ListBox1
     
            For i = 0 To .ListCount - 1
     
                If .Selected(i) Then Worksheets(.List(i)).Select (0)
     
            Next i
     
            Application.DisplayAlerts = False
            ActiveWindow.SelectedSheets.Delete
            Application.DisplayAlerts = True
     
        End With
     
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2016
    Messages : 41
    Par défaut
    Ok ca marche sauf que cela supprime également la feuille sur laquelle je me trouve.

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    et de cette façon ?
    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
     
    Private Sub CommandButton2_Click()
     
        Dim i As Integer
        Dim J As Integer
        Dim Tbl() As String
     
        With ListBox1
     
            For i = 0 To .ListCount - 1
     
                If .Selected(i) Then
     
                    J = J + 1
                    ReDim Preserve Tbl(1 To J): Tbl(J) = .List(i)
     
                End If
     
            Next i
     
            Application.DisplayAlerts = False
            Worksheets(Tbl).Delete
            Application.DisplayAlerts = True
     
        End With
     
    End Sub

  5. #5
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2016
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2016
    Messages : 41
    Par défaut
    Merci beaucoup c'est bon pour moi.

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

Discussions similaires

  1. Réponses: 12
    Dernier message: 27/01/2010, 08h59
  2. Copier les feuilles d'un fichier excel vers un autre
    Par zaki_1982 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 20/04/2008, 00h47
  3. 40 Feuilles dans 1 fichier Excel = Autant de Fichier .CSV
    Par Nissartis dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 25/03/2008, 15h53
  4. renommer une feuille d'un fichier excel depuis Access en VBA
    Par alexkickstand dans le forum VBA Access
    Réponses: 2
    Dernier message: 23/08/2007, 17h55
  5. Obtenir la liste des feuilles d'un fichier Excel
    Par Jean Bonnisme dans le forum Access
    Réponses: 3
    Dernier message: 15/10/2004, 10h53

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