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 :

[E-00] Utilisation d'un auxilliaire pour simplifier le code


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 99
    Points : 45
    Points
    45
    Par défaut [E-00] Utilisation d'un auxilliaire pour simplifier le code
    bonjour,

    tout d'abord merci à ceux qui répondront.

    voici mon début de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim sh1 As Worksheet, sh5 As Worksheet
    
    Set sh1 = Sheets("Arc Movement LH")
    Set sh5 = Sheets("Levelling Phase LH")
    
        'Location 1
        If Sheets("Levelling Phase LH").OpB_jack.Value = True Then        
            sh1.Range("I20").Value = sh5.Range("I34").Value
            sh1.Range("K20").Value = sh5.Range("K34").Value
            sh1.Range("L20").Value = sh5.Range("L34").Value
        ElseIf sh5.OpB_airbag.Value = True Then                 
            sh1.Range("I20").Value = sh5.Range("I36").Value
            sh1.Range("K
    mon problème se situe sur la ligne rouge
    l'utilisation de sh5 me donne une erreur alors que dans la ligne bleue j'ai remplacé le sh5 par sa valeur et là ca marche

    quelqu'un pourrait il me sdire pourquoi ? merci

  2. #2
    Membre émérite

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Points : 2 523
    Points
    2 523
    Billets dans le blog
    1
    Par défaut mais espaces !la honte
    pas une idée mais lorsque tu mets des noms de feuille en variable évite les espace (comme les accents) j'ignore pourquoi VBA n'aime pas les espaces je remplace toujours mes espaces par des undersores sheets("les ages") remplacé sheets("les_ages")
    peut être ce qui n'est pas digéré

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Points : 855
    Points
    855
    Par défaut
    Citation Envoyé par Daranc Voir le message
    pas une idée mais lorsque tu mets des noms de feuille en variable évite les espace (comme les accents) j'ignore pourquoi VBA n'aime pas les espaces je remplace toujours mais espaces par des undersores sheets("les ages") remplacé sheets("les_ages")
    peut être ce qui n'est pas digéré
    Non pour moi cela ne pose pas de problème, même avec des accents et tout le bazar.

    Moi je pense savoir: tu as déclaré OpB_jack et OpB_airbag comme étant des range je ne sais où. OR, si tu veux y accéder, tu n'as pas besoin de préciser de feuille devant. Donc fais comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If OpB_jack.Value = True Then        
            sh1.Range("I20").Value = sh5.Range("I34").Value
            sh1.Range("K20").Value = sh5.Range("K34").Value
            sh1.Range("L20").Value = sh5.Range("L34").Value
        ElseIf OpB_airbag.Value = True Then                 
            sh1.Range("I20").Value = sh5.Range("I36").Value
            sh1.Range("K
    Je peux me tromper: peut-être que tu as ajouté des procédures property à tes feuilles, mais bon en général on ne le fait pas.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 364
    Points : 350
    Points
    350
    Par défaut
    Bonjour,

    Il me semble que tu testes un "OptionButton" que tu as renommé.
    Si c'est le cas, vérifie l'existence et l'orthographe de "OpB_airbag" dans la feuille
    "Levelling Phase LH".

  5. #5
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 99
    Points : 45
    Points
    45
    Par défaut
    bonjour a tous,

    alors j'ai vérifié toutes mes orthographes pas de souci.
    je ne peux pas enlever le sheets("") devant car je susi dans un module et la procédure va etre appelé plusieurs fois.

  6. #6
    Membre émérite

    Homme Profil pro
    Technicien Métrologie R&D
    Inscrit en
    Janvier 2007
    Messages
    1 610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien Métrologie R&D
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 610
    Points : 2 523
    Points
    2 523
    Billets dans le blog
    1
    Par défaut
    Ouf la correction se reporte dans la citation
    tu définis tes variables feuille en public ?
    par contre Deconduite annonce quelque chose que tu devrait creuser si tes optionbutton sont appelé par leur nom il ne doit pas avoir besoin de chercher la feuille même si tu appelles plusieurs fois la procédure. les optionbutton porte tous un nom différent et sont donc unique ou alors; mettre juste un worksheets. devant .
    mais sa remarque est judicieuse

  7. #7
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 99
    Points : 45
    Points
    45
    Par défaut
    j'ai plusieurs feuilles qui ont des optionbutton dénommé pareil (feuilles dont la fonction est presque identique) du coup je ne peux pas et pour coder mes feuilles pour simplifier le code mes optionbutton doivent se nommer pareil.

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Points : 855
    Points
    855
    Par défaut
    Citation Envoyé par Daranc Voir le message
    Ouf la correction se reporte dans la citation
    tu définis tes variables feuille en public ?
    par contre Deconduite annonce quelque chose que tu devrait creuser si tes optionbutton sont appelé par leur nom il ne doit pas avoir besoin de chercher la feuille même si tu appelles plusieurs fois la procédure. les optionbutton porte tous un nom différent et sont donc unique ou alors; mettre juste un worksheets. devant .
    mais sa remarque est judicieuse
    Lol cette modif à mon pseudo est assez... hilarante.

    Je n'avais pas pensé à des optionbuttons inclus dans la feuille (on ne remarque pas toujours tout du premier coup le nom de m'a pas percuté), mais dans ce cas préciser le nom de la feuille contenante est nécessaire, sauf peut-être (mais je n'en suis pas sûr je n'ai pas essayé) s'il s'agit de la feuille active.

    Un conseil: utilise un espion pour voir si dans ton module sh5 contient bien la propriété OpB_airbag.

    Et chose importante: quel est le message d'erreur?

  9. #9
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 99
    Points : 45
    Points
    45
    Par défaut
    l'erreur c'est : "method or data member not found"
    sinon je ne sais pas comment utiliser un espion

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Points : 855
    Points
    855
    Par défaut
    Déjà affiche la fenêtre espions, ensuite tu clique sur "ajouter un espion", tu y mets le texte "sh5", tu ne touches pas au reste, et tu regarde le contenu de cet espion lorsque le code plante.

    Si OpB_airbag ne fait pas partie de la liste quand tu "dérouleras" sh5, c'est soit:
    -que ce n'est pas le nom de ton optionbutton
    -ou alors que tu n'as pas inséré le bon optionbutton: il y a l'optionbutton de labbre d'outil contrôles (celui qu'on utilise comme ça), et l'option de la barre d'outils formulaires qui est lui aussi utilisable, mais pas du tout de cette manière.

  11. #11
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 99
    Points : 45
    Points
    45
    Par défaut
    j'utilise la version anglaise de visual basic est ce que tu sias le nom donné a "espion" en anglais j'ai pas trouvé de spy lol

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Points : 855
    Points
    855
    Par défaut
    L'icône des espions c'est une paire de lunettes: je pense pas que ça soit différent en anglais.

  13. #13
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 99
    Points : 45
    Points
    45
    Par défaut
    bon bah j'ai rien trouvé mes optionbutton existent bien ... bon tampis je vais enlever mes raccouric du type sh quelquechose et remettrent les bon vieux sheets("blablabla......

  14. #14
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Points : 855
    Points
    855
    Par défaut
    Ils figurent dans sh5?

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 364
    Points : 350
    Points
    350
    Par défaut
    Bonjour Tous

    Quand la macro ne trouve pas le nom, alors tu as ce message !

    Citation Envoyé par anyah Voir le message
    ...
    alors j'ai vérifié toutes mes orthographes pas de souci.
    ...
    comment ? visuellement ?
    Sais-tu qu'un espace en fin de mot n'est pas visible ?
    Essaie de faire un Copier du nom est le Coller dans la macro.

  16. #16
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Points : 855
    Points
    855
    Par défaut
    En effet: il faut faire très attention à ce genre de truc sournois. C'est là que les espions ne mentent pas.

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 364
    Points : 350
    Points
    350
    Par défaut
    Bonjour tous,

    l'erreur vient de "sh1." qui ne peut être suivi du nom d'un OptionButton !
    Sans confondre Name et Codename, teste le
    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 test()
    Rem ici, Feuil2 a pour nom "Arc Movement LH"
    Rem ici, Feuil1 a pour nom "Levelling Phase LH"
        'Location 1
        If Feuil2.OpB_jack Then
           Feuil2.Range("I20").Value = Feuil1.Range("I34").Value
           Feuil2.Range("K20").Value = Feuil1.Range("K34").Value
           Feuil2.Range("L20").Value = Feuil1.Range("L34").Value
        ElseIf Feuil1.OpB_airbag Then
           Feuil2.Range("I20").Value = Feuil1.Range("I36").Value
           Feuil2.Range("K20").Value = Feuil1.Range("K36").Value
           Feuil2.Range("L20").Value = Feuil1.Range("L36").Value
        End If
    End Sub

  18. #18
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 99
    Points : 45
    Points
    45
    Par défaut
    le copier coller dans le macro je le fais à chaque fois car j'ai déjà eu un soucis de ce genre et je me rappelle avoir galéré !!!!
    j'ai remplacé tous mes shX par leur vrai nom ca marche nickel dommage pour la lisibilité

  19. #19
    Membre du Club
    Inscrit en
    Octobre 2008
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 99
    Points : 45
    Points
    45
    Par défaut
    Citation Envoyé par OrDonc Voir le message
    Bonjour tous,

    l'erreur vient de "sh1." qui ne peut être suivi du nom d'un OptionButton !
    Sans confondre Name et Codename, teste le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Sub test()
    Rem ici, Feuil2 a pour nom "Arc Movement LH"
    Rem ici, Feuil1 a pour nom "Levelling Phase LH"
    houla comment tu ecris ca ? le rem ca veut dire quoi ?

  20. #20
    Membre éclairé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Points : 855
    Points
    855
    Par défaut
    D'après l'iade en ligne, rem sert à mettre une remarque.

    Utilise plutôt l'apostrophe: c'est plus clair.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Aide pour simplifier un code et comprendre le mécanisme
    Par nicdodo dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 02/04/2015, 15h50
  2. [E-07] Boucle pour simplifier le code
    Par dahuhunter dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 10/03/2009, 14h21
  3. Réponses: 6
    Dernier message: 14/11/2008, 14h32
  4. Réponses: 2
    Dernier message: 19/02/2008, 21h55
  5. Aide pour simplifier un code VBA Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 24/01/2008, 16h15

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