Erreur dans ma procedure vba

Fermé
frederique - 16 mai 2005 à 14:16
 frederique - 16 mai 2005 à 16:12
Bonjour a tous, j'suis nouvelle sur le site et gspr que vous pourrez m'aider.

G écrit cette proc:
Sub Macro1()
'
' Macro1 Macro
' Macro enregistrée le 13/05/2005 par rieusset
'
Dim a As Integer
a = Range("B18").Value
If Range("B18").Value < Range("Avancement!I16").Value Then
Range("O4").Formula = "= Sheets(Effectifs!)Cells(5, a).Value "
End If
If a > Range("Avancement!I16") Then
Range("O4").Value = "=1+(Cells(18,2)-Avancement!Cells(16,9))/(Avancement!Cells(16,9))"
End If
End Sub

Mais elle fonctionne pas a mon avis g des problèmes pour désigner mes feuilles
ma feuille courant est Calcul Indicateur et l'autre feuille est Avancement et la dernière est Effectifs

moi je veux créer une variable "a" qui soit la valeur inscrite dans la cellule B18 de la feuille"Calcul indicateur"
Si "a"< valeur cellule I16(feuille "Avancement")
alors
cellule"O4"valeur=valeur cellule col "a" ligne"5" de la feuille "Effectifs"
et si "a">valeur I16 (feuill Avancement)
alors
valeur O4=1+(B18-I16(feuil avancement))/(I16 (feuill avancement))

je pense que je me trompe dans l'écriture formelle, j'espere que vous saurez m'aider

1 réponse

Alors personne pour m'aider ? Svp...
0
Bonjour,
si alors voilà un script qui doit répondre à ton besoin. Par contre c'est peut être un peu long mais au moins assez "propre" :

================================
Sub calcul()

Dim WS_Indicateurs As Worksheet, WS_Avancement As Worksheet, WS_Effectifs As Worksheet
Dim Cel_B18 As Range, Cel_A5 As Range, Cel_I16 As Range, Cel_O4 As Range

Set WS_Avancement = ThisWorkbook.Worksheets("Avancement")
Set WS_Indicateurs = ThisWorkbook.Worksheets("Calcul Indicateurs")
Set WS_Effectifs = ThisWorkbook.Worksheets("Effectifs")

Set Cel_B18 = WS_Indicateurs.Range("B18")
Set Cel_O4 = WS_Indicateurs.Range("O4")
Set Cel_I16 = WS_Avancement.Range("I16")
Set Cel_A5 = WS_Effectifs.Range("A5")

If Cel_B18.Value < Cel_I16.Value Then
Cel_O4.Value = Cel_A5.Value
End If
If Cel_B18.Value > Cel_I16.Value Then
Cel_O4.Value = 1 + (Cel_B18.Value - Cel_I16.Value) / Cel_I16.Value
End If
'
End Sub
===================================
Voilà, bonne chance pour la suite


Mattiou
0
frederique > Mattiou
16 mai 2005 à 15:45
merci pour ton aide mathiou!
Par contre mon "a" est une variable égale a la valeur inscrite dans la cellule B18
Je n'utilise donc pas A5 de la page effectifs mais la cellule de la ligne 5 et colonne "a" ...
0
Mattiou > frederique
16 mai 2005 à 15:52
Re-,
désolé j'avais mal compris, cela dit ça ne change pas trop le fonctionnement, il suffit de récupérer la valeur de la cellule B18 dans une variable, et ensuite au moment de la définition de Cel_A5 de la récupérer à l'aide d'un offset avec 5 et a ...
Voili voilou ...
0
frederique > Mattiou
16 mai 2005 à 15:59
justement c ça que je n'arrive pas à faire : comment je dois l'écrire
O4.formula=WorkSheets("effectifs")Cells(5,a) ?
0
Mattiou > frederique
16 mai 2005 à 16:10
En réutilisant ce qui a été écrit avant, il faut que tu rajoutes aux endroits adéquats :
-> Dim a as Integer
...
-> a = Cel_B18.Value
...
-> Set Cel_A5 = WS_Effectifs.Cells(5, a)
....
et le reste du code ne change pas ... Voilà
Cordialement,
0