Index dans vba

Résolu
shawn -  
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je tente d'utiliser la fonction index afin d'obtenir une valeur dans un tableau.
J'écris le code suivant et le tableau se trouve dans la plage de données Jg qui se trouve dans une autre feuille.
Voici comment j'écris mon code.
Jg_2 = Application.WorksheetFunction.Index(Range("Jg"), x, y)
Cependant, un message d'erreur disant qu'il ne reconnait pas l'emplacement de la plage de donnée "Jg".
Y a-t-il quelqu'un qui aurait une solution à ce type de problème?
En esperant avoir été suffisamment clair.
Merci d'avance

7 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,
    Comment avez vous defini la plage Jg (definir nom, par programme, .......)?
    0
    1. shawn
       
      Bonjour,
      J'ai sélectionné la plage de données et j'ai inscrit Jg dans la zone nom(se situant dans le coin supérieur gauche)
      0
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,
      Chez moi, cela marche. Vous pourriez faire une copie de votre fichier avec juste la feuille avec la zone Jg et le code vba qui va avec et la mettre sur https://www.cjoint.com/

      Merci
      0
    3. shawn
       
      D'accord, mais j'aimerais seulement avant que vous tentiez de refaire la même action en placant la plage de donnée sur une feuille différente.
      Merci de votre aide
      0
    4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,
      Le but est de voir ce qui ne va pas dans votre fichier.
      0
    5. shawn
       
      Rebonjour,
      Voici mon fichier: http://cjoint.com/?3DspqEN1WH2
      Mon fichier est très gros. La plage de sélection Jg se trouve dans la feuil1 tandis que l'action nécessitant l'action index est dans la feuil9 - Vis.
      Le code pour l'index se trouve dans le macro sub Jg()
      en espérant le tout conforme.
      0
  2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    'Ok pour
    Jg_2 = Application.WorksheetFunction.Index(Range("Jg").Value, x, y)

    Mais probleme variables
    Sub PR()
    Dim nbv As Single
    nbv = Range("C35")
    declaree en variable locale: ne sera pas vue de Sub Jg()

    d'ou y=0--------->erreur ligne Jg-2...........
    '-------------------------------------
    Sub Jg()
    Dim Ag2 As Single
    Ag2 = Range("K22")

    bien declare, mais pas changer de variable en cours de programmation
    If Ag_2 / Ag1 >= 2 And Ag_2 / Ag1 < 12 Then
    If Ag_2 >= 16000 And Ag_2 <= 26000 Then
    x = 1
    et en suivant idem
    '-------------------------------------
    Actuellement:

    Apres modif Ag_2 par Ag2

    Dim h1 As Single
    h1 = Range("G13")--------------->140
    Dim e1 As Single
    e1 = Range("G14")--------------->38
    Ag2 = Range("K22")
    Ag2=12460
    Dim Ag1 As Single
    Ag1 = h1 * e1----------------------->5320

    If Ag2 / Ag1 >= 2 And Ag2 / Ag1 < 12 Then------------------------->2.......
    If Ag2 >= 16000 And Ag2 <= 26000 Then------------------------>mais 12460 trop petit d'ou x=0 erreur ligne Jg-2...........

    A+
    0
  3. shawn
     
    Bonjour,
    Merci beaucoup pour vos commentaire, il y avait effectivement plusieurs erreurs dans mon code. Cependant, la fonction ne marche toujours pas car x est toujours égal à zéro (et il ne devrait pas l'être). Est-ce du au ait que j'ai des fonctions "if" à l'intérieur de d'autres fonction "if". Est-ce possible d'écrire de cette façon?
    Encore un tres grand merci
    0
  4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    12460 sera toujours plus petit que 16000. Donc c'est un probleme de traitement de donnees.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. shawn
     
    Je comprends et j'ai modifié mon code afin que 12460 se retrouve à l'intérieur des valeurs envisagées. J'obtiens donc x=5 et y =1. Cependant, le message d'erreur suivant apparait: La méthode 'Range' de l'objet'_Worksheet' a échoué
    0
  7. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Maintenant, de temps en temps, j'ai le meme probleme!!

    Je cherche.
    0
  8. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Apres quelques recherches, j'ai trouve une solution de remplacement sur ce site:

    http://www.xtremevbtalk.com/archive/index.php

    a cette page

    http://www.xtremevbtalk.com/archive/index.php/t-264523.html

    Remplacez la ligne Jg_2=Application.WorksheetFunction.Index..............

    par:

    Jg_2 = Worksheets("feuil1").Range("Jg").Cells(x, y).Value

    J'ai fais des essais sur votre fichier et sur un fichier cree pour l'occasion cela marche

    A+
    0
    1. shawn
       
      Wow! un énorme merci.
      Vous ne savez pas à quel point cela m'aide.
      0
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,
      En principe, c'est ce que nous devons faire!
      0