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 :

Insertion d'onglet par variable [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 39
    Par défaut Insertion d'onglet par variable
    Bonjour le forum,

    j'ai crée un userform avec des checkbox (exactement 12 ,une pour chaque mois)

    exemple de ce que j'ai fait pour chaque mois dans l'userform

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public booljanvier As Boolean
    Private Sub CheckBox_janvier_Click()
         If UserForm_fournisseur.CheckBox_janvier.Value = True Then
                booljanvier = True
                Else
                    booljanvier = False
       End If
    End Sub
    ce que je souhaite est de créer une copie des onglets correspondants aux checkbox selectionées dans un nouv fichier.

    voici le début de mon code pour créer le fichier avec les deux onglets que je copie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ' Créer un nouv fichier
    Sheets(Array("COMMUNICATION", "TCD")).Copy
    Merci de votre aide!!

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Bonsoir,

    Pour créer dynamiquement autant de Checkbox que d'onglets dans le classeur,
    à l'affichage de la UserForm :

    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
    Private CbBoxs() As MSForms.CheckBox
     
    Private Sub UserForm_Activate()
     
        On Error GoTo INITCB
        If UBound(CbBoxs) > 1 Then
            Dim cbi As Integer
            For cbi = 1 To UBound(CbBoxs)
                Call UserForm1.Controls.Remove(CbBoxs(cbi).Name)
                Set CbBoxs(cbi) = Nothing
            Next cbi
        End If
        GoTo INIT_END
    INITCB:
        ReDim CbBoxs(0)
    INIT_END:
     
        On Error GoTo 0
     
        ReDim CbBoxs(Worksheets.Count)
        Dim ws As Worksheet
        cbi = 1
        For Each ws In Worksheets
            Set CbBoxs(cbi) = UserForm1.Controls.Add("Forms.CheckBox.1")
            CbBoxs(cbi).Top = (cbi - 1) * 20
            CbBoxs(cbi).Left = 10
            CbBoxs(cbi).Caption = ws.Name
            cbi = cbi + 1
        Next ws
     
     
    End Sub

    Pour déclencher la copie des onglets dans un nouveau classeur à la fermeture de la UserForm :

    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
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
           Dim wsList() As String
           Call GetWsToCopy(wsList)
           Sheets(wsList).Copy
    End Sub
     
     
    Public Sub GetWsToCopy(ByRef wsList() As String)
        ReDim wsList(0)
        Dim cbi As Integer
        For cbi = 1 To UBound(CbBoxs)
            If (CbBoxs(cbi).Value) Then
                ReDim Preserve wsList(UBound(wsList) + 1)
                wsList(UBound(wsList) - 1) = CbBoxs(cbi).Caption
            End If
        Next cbi
     
        If UBound(wsList) > 0 Then
            ReDim Preserve wsList(UBound(wsList) - 1)
        End If
     
    End Sub

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Août 2012
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2012
    Messages : 39
    Par défaut
    merci!


  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Bonsoir,

    Mais de rien.
    A+

    P.S. :
    Juste pour progresser, le code du post #1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    If UserForm_fournisseur.CheckBox_janvier.Value = True Then
       booljanvier = True
    Else
       booljanvier = False
    End If
    Ca revient à booljanvier = UserForm_fournisseur.CheckBox_janvier.Value

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

Discussions similaires

  1. Recherche d'un onglet par une variable
    Par Pilote106 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 19/09/2014, 12h54
  2. [XL-2010] Remplacer le nom d un onglet par une variable
    Par toto92 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/02/2014, 17h40
  3. [XL-2007] Insertion d'onglet par variable
    Par jean bapt' dans le forum Conception
    Réponses: 26
    Dernier message: 29/08/2012, 22h41
  4. Créer et nommer des onglets par le contenu d'une variable
    Par titi0685 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/09/2010, 00h48
  5. [ASP] include remplacer chemin par variable
    Par damn dans le forum ASP
    Réponses: 3
    Dernier message: 01/10/2004, 16h27

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