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-E] Erreur automation


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut


    Là pour une fois j'en sais plus que toi mega

    comme l'a dit bidou, 1 bit c'est 1 bit (plus petite unité qui contient 0 ou 1) et un byte c'est un octet soit 8 bits.

    C'est pour ca que j'ai été surpris de voir qu'un boolean prenait 2 bytes (j'aurais pensé à 1 bit...)

    Dailleurs on retrouve bien qu'un type Byte puisse avoir 256 valeurs possibles, car il fait 1 byte (comme son nom l'indique ) de taille.
    Soit 2^8 = 256 valeurs possibles (2 car je le rappele un bit c'est 0 ou 1 donc 2 choix possibles)

  2. #2
    Expert confirmé
    Avatar de bidou
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2002
    Messages
    3 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 055
    Par défaut
    c'est parce que VB utilise des représentation entière pour les boolean -1 pour vrai, 0 pour faux

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    Donc si j'ai bien compris, c'est aprce que utilise -1 et 0 comme valeur (et non pas 0 et 1) que la taille d'un boolean fait 2bytes alors que ca pourrait faire 1 bit soit 16 fois moins ??

    Quel est l'interet?

  4. #4
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    non, je supprime cette réponse... Je ne sais pas ce qui m'a pris...

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    Bon allez c'est mon poste je te garde

    Mais c'est limite ce genre de blagues

    Dans l'attente d'une réponse sérieuse....

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Hello Elstak,
    J'aurais pu le deviner sinon le savoir mais je n'avais effectivement jamais remarqué qu'un booléen était sur deux octets donc autant qu'un integer. Ceci dit, l'intérêt est qu'il est fait pour simplifier le code puisque tu n'as pas à lui affecter de valeur lors d'une comparaison
    au lieu de
    Ce qui fait une instruction de moins
    Ensuite, tu peux mettre
    au lieu de
    Un élément de comparaison de moins
    Ensuite tu peux enchaîner une série de comparaisons avec des and et des or tout en conservant un code lisible
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ok = 12 > 9 and Var = 15 or Var2 = 12
    ok = ok and len(LaPhrase) > Len(Lemot)
    ok = ok or not FichierOuvert 'autre boolean que tu connais...
    etc.
    Imagine ça sur une ligne, tu arrives à la fin avec 25 parenthèses et tu n'es sûr de rien avant d'avoir testé.
    Enfin, tu peux faire des tableaux de booléens et dans une boucle connaître l'index du boolean actif et agir en conséquence...
    Et j'en passe sûrement.
    Ceci dit il est des cas où l'on n'a pas d'intérêt à les utiliser, quand une condition vérifiée ne doit plus varier, dans une boucle, par exemple.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if condition then exit for
    ou il est idiot de passer par un booléen même s'il m'arrive de le faire

    Voilà ! C'était ma plaidoirie en faveur des booléens. Mais tu n'es pas obligé de les utiliser, bien sur.

    Maintenant, de toutes façons on ne sait plus quel est ton vrai problème, alors tu vas devoir éclairer ce cher megapixel

    A+

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    Beuh !

    Mon vrai probleme comme tu dis, c'etait de savoir comment supprimer le code qu'il y avait sur ma page copiée mais j'ai abandonné

    Il n'y a que 3 lignes (juste un truc nombouton_click et l'appel de la procedure)

    Il est un peu idiot de le laisser car le bouton n'existe plus mais je ne vois pas comment le supprimer et ce n'est pas ca qui alourdira mes pages... enfin si quelqu'un a une idee pour supprimer le code, je suis toujours preneur

  8. #8
    Membre Expert Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Par défaut
    Si tu fais une recherche sur "VBProject", sur ce forum, tu devrais trouver ton bonheur. Avec ça, tu peux accéder aux modules, et écrire dedans (ou supprimer des lignes).

  9. #9
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Je ne l'ai jamais fait dans une feuille de code d'une feuille de calcul mais voici toujours ce que j'utilise pour des macros situées dans un module.
    Faudra l'adapter
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub supprimerUneMacroPrecise()  'Supprimer la macro nommée NomMacro dans le module NomModule
    Dim Debut As Integer, Lignes As Integer
    Dim NomMacro, NomModule
    NomModule = InputBox("Saisir le nom du module de la macro à supprimer", "")
    NomMacro = InputBox("Saisir le nom de la macro à supprimer : ", "")
        With Workbooks("Perso.xls").VBProject.VBComponents(NomModule).CodeModule
            Debut = .ProcStartLine(NomMacro, 0)
            Lignes = .ProcCountLines(NomMacro, 0)
        '.DeleteLines Debut, Lignes 'Valider pour supprimer la macro
        End With
    End Sub
    Juste pour le principe. A ADAPTER
    Fais tes essais sur un classeur tout neuf dans lequel tu auras placé du code dans la feuille de code d'une feuille de calcul.

    Pour info, une feuille de calcul est assimilée à un module comme "VBComponents" dans un "VBProject".
    Dans l'inputbox, tu peux donc mettre le nom ta feuille en tant que Module "NomModule".

    Pour le reste, tu prends tes responsabilités mais tu nous tiens au courant de tes expériences, qu'on rigole un peu...

    A+

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    Yop, je revien juste d'une recherche avancée et j'ai trouvé comment supprimer le code de modules (mais pas sur des feuilles )

    Donc je vais essayer la methode du dodo (déjà de la comprendre )

    Je vous tiens au courant

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    J'oserai pas

    non ca va en fait ca fait toujours peur à premiere vue mais j'ai directement compris

    j'ai testé ca :


    Ca c'est le code de feuil1 (à suprimer dans la copie)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub export_Click()
        Call Exporter(ActiveSheet.Name)
    End Sub

    ensuite j'ai betement testé un appel de ta procédure (le code suivant se trouve dans module1 de la feuille source, le module n'est pas copié)

    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
    Public Sub Exporter(ByVal Nomfeuille As String)
     
    Dim Ceclasseur As Workbook
    Dim Copie As Workbook
     
     
    Set Ceclasseur = ActiveWorkbook
    Ceclasseur.Sheets(Nomfeuille).Copy
    ActiveWorkbook.SaveAs ThisWorkbook.Path & "\Copie.xls"
    ActiveWorkbook.Worksheets(Nomfeuille).OLEObjects(1).Delete
    Call supprimerUneMacroPrecise
    ActiveWorkbook.Save
    ActiveWorkbook.Close
     
    End Sub
     
    Sub supprimerUneMacroPrecise()  'Supprimer la macro nommée NomMacro dans le module NomModule
    Dim Debut As Integer, Lignes As Integer
    Dim NomMacro, NomModule
    NomModule = InputBox("Saisir le nom du module de la macro à supprimer", "")
    NomMacro = InputBox("Saisir le nom de la macro à supprimer : ", "")
        With Workbooks("Copie.xls").VBProject.VBComponents(NomModule).CodeModule
            Debut = .ProcStartLine(NomMacro, 0)
            Lignes = .ProcCountLines(NomMacro, 0)
        '.DeleteLines Debut, Lignes 'Valider pour supprimer la macro
        End With
     
    End Sub

    Et j'ai une erreur à la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Debut = .ProcStartLine(NomMacro, 0)

    "Sub ou fonction non définie"

    Pour "nommodule", je rentre "feuil1" (nom de la feuille)
    Pour "nommacro", je rentre "export" (nom de la sub appelée feuil1)


    Voilà là je sais pas trop quoi faire, la procstartline ca me dit rien...

    (j'utilise excel 2000 si ca peut expliquer quelque chose...)

  12. #12
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Je ne l'ai jamais fait dans une feuille de code d'une feuille de calcul
    Je me répète donc...
    Ceci dit, F1 sur ProcStartLine te permettra peut-être d'avoir des explications sur cette méthode... mais c'est pas sûr, certaines instructions ont changé entre VBA 97 et les versions ultérieures.

    A part ça, je vérifierais la cohérence entre la saisie et la réalité , en mettant un point d'arrêt sur la ligne en question et je vérifierais déjà les noms saisis. Sait-on jamais...
    Après, je ne sais pas mais ne désespère pas, il y aura bien quelqu'un pour corriger le tir.

    Par contre, à ta place je posterais sur ce problème spécifique : "[VBA-E]Supprimer par macro, macro dans code feuille" ou un truc comme ça.
    Il y aura bien une bonne âme.

    A+

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    932
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 932
    Par défaut
    Hey,

    ouep javai bien lu que t'avais jamais testé dans ce cas là mais la phrase :

    Citation Envoyé par ouskel
    Pour info, une feuille de calcul est assimilée à un module comme "VBComponents" dans un "VBProject".
    Dans l'inputbox, tu peux donc mettre le nom ta feuille en tant que Module "NomModule".
    me laissait esperer que ca fonctionne !!

    Enfin je vais suivre ton conseil, je vais mettre ce sujet comme résolu et en poster un autre

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. [VBA-E]erreur automation
    Par bernard38 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 02/08/2023, 15h48
  2. [VBA-E] Erreur automation
    Par dotyke dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/01/2007, 14h47
  3. [VBA-Excel] Erreur automation
    Par argv666 dans le forum Macros et VBA Excel
    Réponses: 27
    Dernier message: 18/09/2006, 19h03
  4. [VBA-E]Erreur automation
    Par bernard38 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/04/2006, 09h22
  5. [VBA-E]Erreur Automation en faisant du multicasting
    Par GnarlyYoyo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/04/2006, 13h29

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