Index dans vba
Résolu/Fermé
shawn
-
17 avril 2012 à 23:21
f894009 Messages postés 17217 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 décembre 2024 - 19 avril 2012 à 14:19
f894009 Messages postés 17217 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 27 décembre 2024 - 19 avril 2012 à 14:19
A voir également:
- Application.index vba
- Mkdir vba ✓ - Forum VB / VBA
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Vba range avec variable ✓ - Forum VB / VBA
- Autofill vba ✓ - Forum Excel
7 réponses
f894009
Messages postés
17217
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
27 décembre 2024
1 712
18 avril 2012 à 09:06
18 avril 2012 à 09:06
Bonjour,
Comment avez vous defini la plage Jg (definir nom, par programme, .......)?
Comment avez vous defini la plage Jg (definir nom, par programme, .......)?
f894009
Messages postés
17217
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
27 décembre 2024
1 712
18 avril 2012 à 16:19
18 avril 2012 à 16:19
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+
'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+
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
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
f894009
Messages postés
17217
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
27 décembre 2024
1 712
18 avril 2012 à 17:31
18 avril 2012 à 17:31
Re,
12460 sera toujours plus petit que 16000. Donc c'est un probleme de traitement de donnees.
12460 sera toujours plus petit que 16000. Donc c'est un probleme de traitement de donnees.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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é
f894009
Messages postés
17217
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
27 décembre 2024
1 712
19 avril 2012 à 10:21
19 avril 2012 à 10:21
Bonjour,
Maintenant, de temps en temps, j'ai le meme probleme!!
Je cherche.
Maintenant, de temps en temps, j'ai le meme probleme!!
Je cherche.
f894009
Messages postés
17217
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
27 décembre 2024
1 712
19 avril 2012 à 11:59
19 avril 2012 à 11:59
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+
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+
f894009
Messages postés
17217
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
27 décembre 2024
1 712
19 avril 2012 à 14:19
19 avril 2012 à 14:19
Re,
En principe, c'est ce que nous devons faire!
En principe, c'est ce que nous devons faire!
18 avril 2012 à 14:25
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)
18 avril 2012 à 14:39
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
18 avril 2012 à 14:54
Merci de votre aide
18 avril 2012 à 15:01
Le but est de voir ce qui ne va pas dans votre fichier.
18 avril 2012 à 15:20
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.