Excel macro : Erreur

deneje Messages postés 6 Statut Membre -  
deneje Messages postés 6 Statut Membre -
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

A voir également:

1 réponse

Scipion
 
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 Statut Membre
 
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