Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/10/2011, 16h26   #1
Invité de passage
 
Femme
Ingénieur qualité méthodes
Inscription : octobre 2011
Messages : 20
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Ingénieur qualité méthodes
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : octobre 2011
Messages : 20
Points : 4
Points : 4
Par défaut Index - Equiv en VBA

Bonjour,

je suis en train d'essayer de faire une macro VBA en utilisant les formules Index et Equiv d'Excel, mais j'ai un souci sur l'appel des feuilles.
Voici mon souci:
les pages sur lesquelles s'applquent la formule sont variables: je veux faire une moyenne glissante sur 4 semaines au fur et à mesure de l'année. (une page se créé chaque semaine).
voici la partie du code:


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
 
nbsemaine = Sheets.Count - 4
Worksheets("S" & nbsemaine).Activate
 
If nbsemaine > 3 Then 'calcul de la moyenne glissante sur 4 semaines
 
'=INDEX(tableau_contenant _la_valeur_à_renvoyer;EQUIV(valeur_recherchée;Tableau_contenant_la_valeur_recherchée;0))
 
Range("C5").Select
    ActiveCell.FormulaR1C1 = _
        "=AVERAGE(INDEX('S10'!RC[-1]:R[29]C[-1],MATCH('S11'!RC[-2],'S10'!RC[-2]:R[29]C[-2],0)),INDEX('S9'!RC[-1]:R[29]C[-1],MATCH('S11'!RC[-2],'S9'!RC[-2]:R[29]C[-2],0)),INDEX('S8'!RC[-1]:R[29]C[-1],MATCH('S11'!RC[-2],'S8'!RC[-2]:R[29]C[-2],0)),RC[-1])"
    Range("C6").Select
seulement je souhaite faire une boucle for afin de faire évoluer le nom des feuilles dans la formule.
Quelle est la syntaxe à utiliser pour l'appel des feuilles?

merci à vous.
JudRos est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2011, 17h24   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Non testé pour les numéros de semaine dans la formule :


Code :
1
2
3
4
5
6
7
8
9
10
11
'Réf.111017.xlsm
For nbsemaine = 1 To Sheets.Count - 4
    With Worksheets("S" & nbsemaine)
        If nbsemaine > 3 Then 'calcul de la moyenne glissante sur 4 semaines
        .Range("C5").FormulaR1C1 = _
                "=AVERAGE(INDEX(S" & nbsemaine - 1 & "!RC[-1]:R[29]C[-1],MATCH(S" & _
                nbsemaine & "!RC[-2],S" & nbsemaine - 1 & _
                "!RC[-2]:R[29]C[-2],0)),INDEX(S" & nbsemaine - 2 & "!RC[-1]:R[29]C[-1],MATCH(S" & nbsemaine & "!RC[-2],S" & nbsemaine - 2 & "!RC[-2]:R[29]C[-2],0)),INDEX(S" & nbsemaine - 3 & "!RC[-1]:R[29]C[-1],MATCH(S" & nbsemaine & "!RC[-2],S" & nbsemaine - 3 & "!RC[-2]:R[29]C[-2],0)),RC[-1])"
        End If
    End With
Next
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/10/2011, 08h53   #3
Invité de passage
 
Femme
Ingénieur qualité méthodes
Inscription : octobre 2011
Messages : 20
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Ingénieur qualité méthodes
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : octobre 2011
Messages : 20
Points : 4
Points : 4
Merci pour votre réponse, effectivement c'est bon.
J'avais juste un souci d'emplacement des guillemets....
JudRos est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h11.


 
 
 
 
Partenaires

Hébergement Web