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 :

la méthode value de l'objet range a échoué [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2011
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 51
    Points : 22
    Points
    22
    Par défaut la méthode value de l'objet range a échoué
    Bonjour,

    J'ai bien compris qu'il y a un problème d'enchainement mais la je ne vous pas comment le résoudre.

    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
    Public Sub Worksheet_Change(ByVal Target As Range)
     
     
    If Range("F17").Value = "Combinée" And Range("F18").Value = "AH36" Then
     
                Range("F19").Value = "180 MPa"
     
    ElseIf Sheets("feuil1").Range("F17").Value = "Combinée" And Sheets("Feuil1").Range("F18").Value = "A" Then
     
                Sheets("feuil1").Range("F19") = "119 MPa"
     
     
    ElseIf Sheets("feuil1").Range("F17").Value = "Cisaillement" And Sheets("Feuil1").Range("F18").Value = "AH36" Then
     
                Sheets("feuil1").Range("F19") = "104 MPa"
     
     
    ElseIf Sheets("feuil1").Range("F17").Value = "Cisaillement" And Sheets("Feuil1").Range("F18").Value = "A" Then
     
                Sheets("feuil1").Range("F19") = "68.9 MPa"
     
    End If
     
     
    End Sub

  2. #2
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonjour,

    2 coseils au préalable
    La méthode Select Case rendrait le code beaucoup plus clair
    L'utilisation du bloc With permet de mieux attacher les objets (ici Range à leur feuille Parent)

    Quelle ligne de code le débuggeur met-il en évidence (généralement surlignée en jaune)?

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2011
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 51
    Points : 22
    Points
    22
    Par défaut
    Merci de ta réponse MarcelG

    Je ne connais pas du tout la méthode dont tu me parle, j'ai appris en autodidacte la VBA, je n'utilise surement pas la bonne méthode dsl.

    Tout dépend ce qui est indiqué dans les cellules, si on prend pour exemple celle-ci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Range("F17").Value = "Combinée" And Range("F18").Value = "AH36" Then
    Le debugger vas mettre en jaune la ligne suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("F19").Value = "180 MPa"

  4. #4
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Salut,

    j'ai appris en autodidacte la VBA
    Moi aussi, comme beaucoup.

    Je ne connais pas du tout la méthode dont tu me parle
    Aide sur Select Case

    La feuille n'est-elle pas protégée?
    S'il te plaît, rattache les objets Range

    Tu peux par exemple écrire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    With ThisWorkbook.Worksheets("lafeuille")
    if .[F19] = ....

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2011
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 51
    Points : 22
    Points
    22
    Par défaut
    La feuille n'est-elle pas protégée?
    La feuille n'est pas protégée.

    S'il te plaît, rattache les objets Range
    Justement c'est une chose que je ne connais pas.

    Je vais faire un test par rapport a ce que tu m'a indiquée

  6. #6
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Justement c'est une chose que je ne connais pas.
    C'est la base de tout développement.
    Un objet Range s'attache à une feuille qui elle-même s'attache à un classeur.
    Le rattachement s'effectue par un "."

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Thisworkbook.Worksheets("lafeuille")
      If .[A5] = 2 Then Msgbox Prompt:="Vous avez gagné!"
      If .[A6] = ...
    End With

  7. #7
    Membre actif
    Homme Profil pro
    Ancien Etudiant
    Inscrit en
    Janvier 2019
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ancien Etudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 152
    Points : 224
    Points
    224
    Par défaut
    Bonjour demichoux, MarcelG,


    Une solution en décomposant les tests ( en rajoutant les attachements...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Range("F17").Value = "Combinée" Then
         If Range("F18").Value = "AH36" then Range("F19").Value = "180 MPa"
         If Range("F18").Value = "A" Then Range("F19") = "119 MPa" 
    End If
    même codage pour "Cisaillement" .

    F17 peut il avoir d'autres valeurs que "Cisaillement" et "Combinée" ?
    F18 peut il avoir d'autres valeurs que "AH36" et "A" ?

    A+

  8. #8
    Membre à l'essai
    Inscrit en
    Février 2011
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 51
    Points : 22
    Points
    22
    Par défaut
    Bonjour Algoplus,

    Je viens de faire un test, j'ai toujours le message d'erreur.

    F17 peut il avoir d'autres valeurs que "Cisaillement" et "Combinée" ?
    F18 peut il avoir d'autres valeurs que "AH36" et "A" ?
    Pour F17 et F18 non que ces valeurs.

  9. #9
    Membre actif
    Homme Profil pro
    Ancien Etudiant
    Inscrit en
    Janvier 2019
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ancien Etudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 152
    Points : 224
    Points
    224
    Par défaut
    Si les deux cellules ne peuvent avoir que deux valeurs on pourrait écrire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    If Range("F17").Value = "Combinée" Then
         If Range("F18").Value = "AH36" then 
              Range("F19").Value = "180 MPa"
         Else
              Range("F19") = "119 MPa" 
         End if
    Else
         If Range("F18").Value = "AH36" then 
              Range("F19").Value = "104 MPa"
         Else
              Range("F19") = "68.9 MPa" 
         End if
    End If
    Mais ce n'est pas la manière d'écrire les tests qui résoudra l'erreur .

    Est ce qu'il y a d'autres lignes de codes dans la Sub Worksheet_Change ?

  10. #10
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 139
    Points : 9 974
    Points
    9 974
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    essaye de formater tes cellules au format "Texte" s'ils sont en standard

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    242
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 242
    Points : 484
    Points
    484
    Par défaut
    Bonjour,
    Pour éviter une procédure événementielle qui se déclenche elle-même à l'infini (jusqu'à ce que la pile des appels sature), il faut désactiver les événements le temps de son exécution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
     
    ...
     
    Application.EnableEvents = True
    End Sub

  12. #12
    Membre à l'essai
    Inscrit en
    Février 2011
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 51
    Points : 22
    Points
    22
    Par défaut
    Algoplus
    Est ce qu'il y a d'autres lignes de codes dans la Sub Worksheet_Change ?
    Non il y a juste le code que j'ai mis au debut.

    joe.levrai
    essaye de formater tes cellules au format "Texte" s'ils sont en standard
    Je pensais que cela venait du format des cellules est non, celle-ci sont bien en texte.

  13. #13
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Salut demichoux,

    Comme nous sommes au 12ème post, je pense que tu peux joindre un fichier simplifié, bien entendu épuré de données confidentielles.

  14. #14
    Membre à l'essai
    Inscrit en
    Février 2011
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 51
    Points : 22
    Points
    22
    Par défaut
    Ci-joint le fichier
    Tableau charges.V3(test)-copie.xlsm

    zenpbb

    Je n'avais pas vu t'a réponse, je vais tester.

  15. #15
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Salut,

    Je n'ai pas d'explication plus approfondie.
    J'ai remarqué l'absence d'erreur s'il y a test sur l'objet Target
    (à adapter)
    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
    Public Sub Worksheet_Change(ByVal Target As Range)
     
    If Target.Column <> 12 Then Exit Sub
     
    With ThisWorkbook.Worksheets("Feuil1")
     
            Select Case .[F17]
                    Case "combinée"
                              .Range("F19").Value = IIf(.[F18] = "AH36", "180 MPa", "119 MPA")
                    Case Else
                              .Range("F19").Value = IIf(.[F18] = "AH36", "104 MPa", "68.9 MPA")
            End Select
     
    End With
     
    End Sub

  16. #16
    Membre à l'essai
    Inscrit en
    Février 2011
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 51
    Points : 22
    Points
    22
    Par défaut
    Merci MarcelG et zenpbb vos solutions fonctionne

    J'avais juste une question MarcelG, pourquoi mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Target.Column <> 12 Then Exit Sub
    Et pas la colonne correspondant directement ?

  17. #17
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Salut,

    Comme je l'ai indiqué, il te faut adapter sur
    - l'adresse de la cellule
    - son appartenance à un champ défini (Intersect n'est pas rien)
    etc....

    D'où l'importance de comprendre le code au préalable.

    Bonne remarque znpb

  18. #18
    Membre actif
    Homme Profil pro
    Ancien Etudiant
    Inscrit en
    Janvier 2019
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ancien Etudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 152
    Points : 224
    Points
    224
    Par défaut
    Pour le fun :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Public Sub Worksheet_Change(ByVal Target As Range)
    Dim a As Variant
     a = [{"180 MPa","119 MPa";"104 MPa","68.9 MPa"}]
     Application.EnableEvents = False
     With ThisWorkbook.Worksheets("Feuil1")
      .Range("F19").Value = a((.Range("F17").Value = "Combinée") + 2, (.Range("F18").Value = "AH36") + 2)
     End With
     Application.EnableEvents = True
    End Sub
    avec l'utilisation de Application.EnableEvents comme suggéré par zenpbb, pour éviter de redéclencher Worksheet_Change lorsque F19 est modifié

  19. #19
    Membre à l'essai
    Inscrit en
    Février 2011
    Messages
    51
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 51
    Points : 22
    Points
    22
    Par défaut
    Bonjour,

    Merci à vous tous pour votre contribution est aide

    Je vais pouvoir clôturer la discussion

  20. #20
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonjour à vous, Bonjour au Forum,

    Algoplus,

    Pourrais-tu expliciter cette notation.
    [{
    et l'argumentation de a qui suit.
    Je n'ai, pour ma part, jamais utilisé ce genre d'écriture..

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 05/03/2017, 19h01
  2. [XL-2016] La méthode 'value de l'objet 'range a échoué, erreur 2147417848 (80010108)
    Par canicothy dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 05/03/2017, 19h00
  3. erreur 1004 méthode défault de l'objet range a échoué
    Par alebdeb dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 19/08/2015, 14h20
  4. [XL-2013] La méthode 'Value' de l'objet 'Range' a échoué
    Par pitwolvi dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/10/2014, 16h01
  5. Réponses: 12
    Dernier message: 07/05/2010, 15h48

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