Excel macro : Erreur

Fermé
deneje Messages postés 6 Date d'inscription mardi 19 janvier 2010 Statut Membre Dernière intervention 14 mai 2010 - 1 mai 2010 à 20:34
deneje Messages postés 6 Date d'inscription mardi 19 janvier 2010 Statut Membre Dernière intervention 14 mai 2010 - 2 mai 2010 à 10:38
Bonjour,

Je suis en train d'écrire un code pour une macro excel qui me permet lorsque j'active un bouton sur une feuille de lancer une petite fenêtre ou je rentre un choix (un nombre compris entre 0 et 1). Ce choix servira de point de comparaison. Je parcours ensuite mes différentes feuilles de calculs (f(i)) pour comparer ma valeur rentrée à celle se trouvant en L5...L831 et si celle-ci est plus grande ou égale à cette valeur, je dois copier la valeur se trouvant en en A5...A831 dans la feuille temp. La colonne dans temp doit se décaler d'une à chaque fois que je change de feuille...

Voilà mon code qui évidemment ne fonctionne pas...

Private Sub CommandOK_Click()
Dim Val As Single
Dim x As Integer
Dim f(15)
Dim a(15)

f(1) = "-6"
f(2) = "-5"
f(3) = "-4"
f(4) = "-3"
f(5) = "-2"
f(6) = "-1"
f(7) = "0"
f(8) = "centre théorique - 1"
f(9) = "2"
f(10) = "3"
f(11) = "4"
f(12) = "5"
f(13) = "6"
f(14) = "7"
f(15) = "8"

a(1) = "A"
a(2) = "B"
a(3) = "C"
a(4) = "D"
a(5) = "E"
a(6) = "F"
a(7) = "G"
a(8) = "H"
a(9) = "I"
a(10) = "J"
a(11) = "K"
a(12) = "L"
a(13) = "M"
a(14) = "N"
a(15) = "O"

Val = TextVal.Value
x = 1

If Val <= 0 Or Val > 1 Then
MsgBox "Vérifier les données entrée", vbOKOnly, "Erreur"
TextVal.SetFocus
Exit Sub
End If

For i = 1 To 15
Sheets(f(i)).Select
For j = 5 To 831
If Sheets(f(i)).Range("Lj").Value >= Val Then
Sheets("temp").Activate
ActiveSheet.Range("a(i)2").End(xlDown).Offset(1, 0).Select = Sheets(f(i)).Range("a(i)j").Value
Exit Sub
End If
Next j

Next i



Unload Me
End Sub


Et tant que j'y suis, peut-on à partir des données récoltées dans ma feuille temp en faire un résumé que j'afficherai en faisant apparaitre une fenêtre du genre Userforme?


Un tout grand merci pour votre aide

1 réponse

Bonsoir,

Ce qui ne va pas dans ta macro, c'est le référencement aux cellules.
Voila comment ecrire

For i = 1 To 15 
   Sheets(f(i)).Select 
      For j = 5 To 831 
          If Sheets(f(i)).Range("L" & j).Value >= Val Then 
              Sheets("temp").Activate 
              ActiveSheet.Range(a(i) & "2").End(xlDown).Offset(1, 0).Select = Sheets(f(i)).Range(a(i) & j).Value 
             Exit Sub 
          End If 
    Next j 
Next i 


Cordialement.
0
deneje Messages postés 6 Date d'inscription mardi 19 janvier 2010 Statut Membre Dernière intervention 14 mai 2010
2 mai 2010 à 10:38
JE viens de tester votre code mais cela ne fonctionne pas, il bloque à la ligne ActiveSheets.Range(a(i) & "2")...

Il m'indique une erreur 1004
0