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 :

Perte des propriétés Active X lorsque copier-coller d'une feuille avec contrôles Active X


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 11
    Points : 5
    Points
    5
    Par défaut Perte des propriétés Active X lorsque copier-coller d'une feuille avec contrôles Active X
    Bonjour à tous,

    Je me tourne vers vous pour un problème assez spécial que je n'arrive pas à résoudre bien qu'ayant fait moult recherches sur les forums...

    Le code suivant me permet de créer une nouvelle feuille excel automatiquement qui copie le contenu d'une autre feuille et initialise les contrôles. La nouvelle feuille prend alors le nom "FP_Ld" & I ; I étant chiffre qui change en fonction du nombre de feuille (première feuille créée = FP_Ld1, 2e feuille crée = FP_Ld2,...).

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    'Bouton pour ajouter une feuille
    Private Sub CommandButton2_Click()
     
        Dim I As Integer
            Do
            I = I + 1
     
    ' FeuilleExiste est une fonction créée et présente après ce Sub
     
            If FeuilleExiste("FP_Ld" & I) = False Then
                Sheets("Feuil8").Copy Before:=Sheets("Feuil2") 'Feuil8 étant la feuille à copier
                ActiveSheet.Name = "FP_Ld" & I
     
                With Worksheets("FP_Ld" & I) ' Initialisation de paramètres et commandes diverses
                .Activate
     
                .Range("A1").Show
                .Label1.Caption = Sheets("Feuil1").Label2.Caption
                .Label2.Caption = Sheets("Feuil1").Label3.Caption
                .Label3.Caption = Sheets("FP_Ld" & I).Name
     
                .OptionButton1.Value = False
                .OptionButton2.Value = False
                .OptionButton3.Value = False
                .OptionButton4.Value = False
                .OptionButton5.Value = False
                .ComboBox4.Enabled = False
                .ComboBox5.Enabled = False
                .CommandButton16.Enabled = False
                .CommandButton17.Enabled = False
                .TextBox25.Enabled = False
                .TextBox26.Enabled = False
                .TextBox27.Enabled = False
     
                .ComboBox1.ListFillRange = "Feuil6!N93:N162"
                .ComboBox1.ListIndex = -1
     
                L1 = Sheets("Feuil7").Range("D1").End(xlDown).Row
                .ComboBox2.ListFillRange = "Feuil7!D1:D" & L1
                .ComboBox2.ListIndex = -1
     
                L2 = Sheets("Feuil2").Range("A6218").End(xlDown).Row
                .ComboBox3.ListFillRange = "Feuil2!A6218:A" & L2
                .ComboBox3.ListIndex = -1
     
                .ComboBox4.ListFillRange = "Feuil3!H2:H3746"
                .ComboBox4.ListIndex = -1
     
                .ComboBox5.ListFillRange = "Feuil2!A36:A6215"
                .ComboBox5.ListIndex = -1
     
                End With
                Exit Do
            End If
            Loop
     
    End Sub
    ________________________________________________________________
     
    Function FeuilleExiste(Nom As String) As Boolean
      On Error Resume Next
      FeuilleExiste = Sheets(Nom).Name <> ""
      On Error GoTo 0
    End Function
    Ce code fonctionne très bien pour la première feuille créée. Pour ce qui est de la 2e, le début du script fonctionne bien (copie-colle la feuil8 dans une nouvelle feuille nommée FP_Ld2) mais bug à partir de mon contrôle Optionbutton4 avec comme message d'erreur :

    Erreur d'exécution '438' :
    Propriété ou méthode d'exécution non gérée par cet objet
    En me rendant sur FP_Ld2, lorsque je clique droit sur l'Optionbutton en question, je me rends compte que je n'ai plus les onglets "Priorités" et "Visualiser le code" comme dans les contrôles Active X mais bien "Affecter une macro" comme dans les contrôles de formulaires... J'en déduis qu'il y a eu ce changement mais je ne comprends pas pourquoi et cela vaut pour tous les contrôles après cet optionbutton4! Mais ceux d'avant (Label1,2,3 et Optionbutton 1,2,3) restent Active X et fonctionnent à merveille....

    Ce n'est pas tout, lorsque je crée tout de même une 3e feuille ("FP_Ld3"), le même bug apparait mais à partir de Label1... Donc tous mes contrôles sont passés de Active X à formulaires...

    Dans ma feuille8 ce sont pourtant bien des contrôles active X qui doivent être copier-coller (et ça marche dans le premier copier-coller...).

    Ce problème me perturbe fortement car il est à la base du formulaire que je veux créer...

    Je vous remercie d'avance pour votre aide, quelle qu’elle soit!

  2. #2
    Invité
    Invité(e)
    Par défaut Bonjour, test ça
    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    'Bouton pour ajouter une feuille
    Private Sub CommandButton2_Click()
     Dim NewSheet As Worksheet
        Dim I As Integer
            Do
            I = I + 1
     
    ' FeuilleExiste est une fonction créée et présente après ce Sub
     
            If FeuilleExiste("FP_Ld" & I) = False Then
                Sheets("Feuil8").Copy Before:=Sheets("Feuil2") 'Feuil8 étant la feuille à copier
                Set NewSheet = Sheets(Sheets("Feuil2").Index - 1)
                NewSheet.Name = "FP_Ld" & I
     
                With NewSheet ' Initialisation de paramètres et commandes diverses
                .Activate
     
                .Range("A1").Show
                .Label1.Caption = Sheets("Feuil1").Label2.Caption
                .Label2.Caption = Sheets("Feuil1").Label3.Caption
                .Label3.Caption = NewSheet.Name
     
                .OptionButton1.Value = False
                .OptionButton2.Value = False
                .OptionButton3.Value = False
                .OptionButton4.Value = False
                .OptionButton5.Value = False
                .ComboBox4.Enabled = False
                .ComboBox5.Enabled = False
                .CommandButton16.Enabled = False
                .CommandButton17.Enabled = False
                .TextBox25.Enabled = False
                .TextBox26.Enabled = False
                .TextBox27.Enabled = False
     
                .ComboBox1.ListFillRange = "Feuil6!N93:N162"
                .ComboBox1.ListIndex = -1
     
                L1 = Sheets("Feuil7").Range("D1").End(xlDown).Row
                .ComboBox2.ListFillRange = "Feuil7!D1:D" & L1
                .ComboBox2.ListIndex = -1
     
                L2 = Sheets("Feuil2").Range("A6218").End(xlDown).Row
                .ComboBox3.ListFillRange = "Feuil2!A6218:A" & L2
                .ComboBox3.ListIndex = -1
     
                .ComboBox4.ListFillRange = "Feuil3!H2:H3746"
                .ComboBox4.ListIndex = -1
     
                .ComboBox5.ListFillRange = "Feuil2!A36:A6215"
                .ComboBox5.ListIndex = -1
     
                End With
                Exit Do
            End If
            Loop
     
    End Sub

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 11
    Points : 5
    Points
    5
    Par défaut Erreur apparente
    Merci pour votre réponse.

    Voici l'erreur que j'obtiens lorsque je clique sur le bouton :

    Erreur de compilation:
    Membre de méthode ou de données introuvable
    Et dans le code il me surligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Label1.Caption = Sheets("Feuil1").Label2.Caption
    Auriez-vous une idée? merci

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2013
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Bonjour,

    Voici la solution qui semble fonctionner :

    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    'Bouton pour ajouter une feuille
    Private Sub CommandButton2_Click()
     Dim NewSheet As Worksheet
        Dim I As Integer
            Do
            I = I + 1
     
    ' FeuilleExiste est une fonction créée et présente après ce Sub
     
            If FeuilleExiste("FP_Ld" & I) = False Then
                Sheets("Feuil8").Copy Before:=Sheets("Feuil2") 'Feuil8 étant la feuille à copier
                Set NewSheet = Sheets(Sheets("Feuil2").Index - 1)
                NewSheet.Name = "FP_Ld" & I
                NewSheet.Activate
     
                With Worksheets("FP_Ld" & I) ' Initialisation de paramètres et commandes diverses
     
                .Range("A1").Show
                .Label1.Caption = Sheets("Feuil1").Label2.Caption
                .Label2.Caption = Sheets("Feuil1").Label3.Caption
                .Label3.Caption = NewSheet.Name
     
                .OptionButton1.Value = False
                .OptionButton2.Value = False
                .OptionButton3.Value = False
                .OptionButton4.Value = False
                .OptionButton5.Value = False
                .ComboBox4.Enabled = False
                .ComboBox5.Enabled = False
                .CommandButton16.Enabled = False
                .CommandButton17.Enabled = False
                .TextBox25.Enabled = False
                .TextBox26.Enabled = False
                .TextBox27.Enabled = False
     
                .ComboBox1.ListFillRange = "Feuil6!N93:N162"
                .ComboBox1.ListIndex = -1
     
                L1 = Sheets("Feuil7").Range("D1").End(xlDown).Row
                .ComboBox2.ListFillRange = "Feuil7!D1:D" & L1
                .ComboBox2.ListIndex = -1
     
                L2 = Sheets("Feuil2").Range("A6218").End(xlDown).Row
                .ComboBox3.ListFillRange = "Feuil2!A6218:A" & L2
                .ComboBox3.ListIndex = -1
     
                .ComboBox4.ListFillRange = "Feuil3!H2:H3746"
                .ComboBox4.ListIndex = -1
     
                .ComboBox5.ListFillRange = "Feuil2!A36:A6215"
                .ComboBox5.ListIndex = -1
     
                End With
                Exit Do
            End If
            Loop
     
    End Sub
    Merci pour votre aide!

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

Discussions similaires

  1. [XL-2007] automatisation copier coller d'une feuille dans une autre
    Par luko6 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 22/04/2010, 10h26
  2. [XL-2003] Problème bizzare de copier coller d'une feuille à une autre
    Par FCL31 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 04/09/2009, 14h16
  3. [XL-2003] Blocage d'un copier/coller d'une feuille
    Par nicoaix dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 16/04/2009, 15h18
  4. [VBA] Pb avec Copier/coller d'une feuille Excel
    Par sebastien_oasis dans le forum Excel
    Réponses: 3
    Dernier message: 14/12/2007, 11h08
  5. JTree : copier, coller dans une feuille.
    Par sricard dans le forum Composants
    Réponses: 2
    Dernier message: 28/09/2006, 07h35

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