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 :

Le code dynamiquement créé ne s'enregistre pas


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut Le code dynamiquement créé ne s'enregistre pas
    Bonjour à tous,

    Cela fait des jours que j'ai un problème aléatoire et que j'écume la toile pour trouver une solution.

    Je crée dynamiquement un bouton et le code associé à l'événement OnClicK.
    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
    Sub PutControlErrorsBtn()
      Dim Obj As Object
      Dim Code As String
      ThisWorkbook.Sheets(1).Select
      Set Obj = ActiveSheet.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False, DisplayAsIcon:=False, _
                Left:=0, Top:=0, Width:=180, Height:=24)
      Obj.Name = "ControlErrorsBtn"
      Obj.Object.Caption = "Recherche des erreurs d'extraction"
      Code = "Private Sub " & Obj.Name & "_Click()" & vbCrLf
      Code = Code & "  Constat2ExtractErrors" & vbCrLf
      Code = Code & "End Sub"
       With ThisWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).CodeModule
            .insertlines .CountOfLines + 1, Code
        End With
    End Sub
    Le bouton se crée mais parfois, le code ne s'enregistre pas, ce qui rend le bouton inutile.
    J'ai essayé sur deux autres machines et, cela marche un jour, le lendemain plus. J'ai mis le code dans une boucle while testant la valeur zéro du nombre de lignes de code, rien à faire.

    Quelqu'un aurait-il une solution pour s'assurer que le code est bien enregistré pour rendre mon application fiable ?

    Merci d'avance

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Au lieu des Select et Activesheet
    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
    Sub PutControlErrorsBtn()
    Dim Obj As OLEObject
    Dim Sh As Worksheet
    Dim Code As String, NomBouton As String
     
    NomBouton = "ControlErrorsBtn"
    Set Sh = ThisWorkbook.Sheets(1)
    On Error Resume Next
    Set Obj = Sh.OLEObjects(NomBouton)
    On Error Resume Next
    'On vérifie si notre bouton existe déjà
    If Obj Is Nothing Then
        Set Obj = Sh.OLEObjects.Add(ClassType:="Forms.CommandButton.1", Link:=False, DisplayAsIcon:=False, Left:=0, Top:=0, Width:=180, Height:=24)
        Obj.Name = NomBouton
        Obj.Object.Caption = "Recherche des erreurs d'extraction"
        Code = "Private Sub " & NomBouton & "_Click()" & vbCrLf
        Code = Code & "  Constat2ExtractErrors" & vbCrLf
        Code = Code & "End Sub"
        With ThisWorkbook.VBProject.VBComponents(Sh.CodeName).CodeModule
            .insertlines .CountOfLines + 1, Code
        End With
        Set Obj = Nothing
    End If
    Set Sh = Nothing
    End Sub

  3. #3
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut
    Premier test : négatif

    Enregistrement du classeur
    Fermeture de Excel
    Ouverture du classeur

    Test positif.

    Le problème ayant été aléatoire, il me reste à contrôler s'il n'apparait plus avant de clôturer le sujet.

    Merci déjà à toi mercatog

  4. #4
    Membre éprouvé Avatar de defluc
    Homme Profil pro
    Architecte
    Inscrit en
    Mai 2002
    Messages
    1 383
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 383
    Par défaut
    Bon ben vla qu'ça recommence.

    Mais qu'est-ce qui peut bien causer ce problème ?

    Fermer Excel, rebooter, rien n'y fait.

Discussions similaires

  1. Mon code n'enregistre pas
    Par AuroreBezu dans le forum IHM
    Réponses: 3
    Dernier message: 09/01/2009, 21h10
  2. Interprétation de code dynamiquement
    Par Smeuuh dans le forum Langages de programmation
    Réponses: 19
    Dernier message: 29/09/2005, 09h32
  3. code qui fonctionne en local et pas sur le net
    Par vraipolite dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/08/2005, 10h10
  4. Menu dynamique marchant sous FF mais pas sous IE
    Par T-durden dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 18/08/2005, 14h14
  5. db enregistre pas toujour
    Par cre3000 dans le forum Bases de données
    Réponses: 1
    Dernier message: 23/05/2005, 12h16

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