Langage VBA hors du commun du type IF(R[3]C[-9]:R[7998]C[-9]....
Résolu/Fermé
écureuyl
Messages postés
42
Date d'inscription
lundi 31 janvier 2011
Statut
Membre
Dernière intervention
24 septembre 2016
-
9 oct. 2014 à 15:22
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 9 oct. 2014 à 17:29
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 - 9 oct. 2014 à 17:29
A voir également:
- Langage VBA hors du commun du type IF(R[3]C[-9]:R[7998]C[-9]....
- Langage ascii - Guide
- Apparaitre hors ligne instagram - Guide
- Gps hors ligne - Guide
- Chkdsk c /f /r - Guide
- :3 smiley ✓ - Forum Mail
2 réponses
Gyrus
Messages postés
3334
Date d'inscription
samedi 20 juillet 2013
Statut
Membre
Dernière intervention
9 décembre 2016
524
9 oct. 2014 à 16:15
9 oct. 2014 à 16:15
Bonjour,
Tu peux utiliser simplement
R[3] indique une position relative de ligne par rapport à la cellule qui contient la formule
C[-9] indique une position relative de colonne par rapport à la cellule qui contient la formule
R[3]C[-9] correspond donc à AQ5 puisque décalée de 3 lignes et -9 colonnes par rapport à AZ2.
COUNTIF est simplement la traduction anglaise de la fonction Excel NB.SI alors que Application.WorksheetFunction.CountIf est une méthode VBA qui permet d'effectuer la même opération.
Dans ton cas, il s'agit d'inscrire la formule Excel dans AZ2 avec un code VBA.
Il est donc normal d'utiliser COUNTIF. Tu aurais pu te poser la même question pour les fonctions SUM ou IF.
A+
Tu peux utiliser simplement
Range("AZ2").FormulaArray = "=SUM(IF(AQ5:AQ8000<>"""",1/COUNTIF(AQ5:AQ8000,AQ5:AQ8000)))"
R[3] indique une position relative de ligne par rapport à la cellule qui contient la formule
C[-9] indique une position relative de colonne par rapport à la cellule qui contient la formule
R[3]C[-9] correspond donc à AQ5 puisque décalée de 3 lignes et -9 colonnes par rapport à AZ2.
COUNTIF est simplement la traduction anglaise de la fonction Excel NB.SI alors que Application.WorksheetFunction.CountIf est une méthode VBA qui permet d'effectuer la même opération.
Dans ton cas, il s'agit d'inscrire la formule Excel dans AZ2 avec un code VBA.
Il est donc normal d'utiliser COUNTIF. Tu aurais pu te poser la même question pour les fonctions SUM ou IF.
A+
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 250
9 oct. 2014 à 17:29
9 oct. 2014 à 17:29
Bonjour,
Pour compléter Gyrus R[3]C[-9] est la notation R1C1 que tu peux activer dans les options excel. Toi tu es habitué à la notation A1.
A noter que pour une formule 'simple' tu as :
mais aussi :
Ca n'existe pas pour FormulaArray.
Mais tu peux inscrire ta formule en français avec .formulaLocal
et la revalider en matriciel avec :
eric
Pour compléter Gyrus R[3]C[-9] est la notation R1C1 que tu peux activer dans les options excel. Toi tu es habitué à la notation A1.
A noter que pour une formule 'simple' tu as :
.formulaR1C1
.formula
mais aussi :
.formulaR1C1local= "=ta_formule_en_français_références_type_R1C1"qui te permet de faire un copier-coller de ta feuille dans vbe.
et
.formulaLocal= "=ta_formule_en_français_références_type_A1"
Ca n'existe pas pour FormulaArray.
Mais tu peux inscrire ta formule en français avec .formulaLocal
et la revalider en matriciel avec :
Range("AZ2").FormulaArray = Range("AZ2").Formula
eric
9 oct. 2014 à 16:35
Pour l'utilisation des fonctions Excel, je me suis fait aussi avoir par la syntaxe utilisée qui est différente de celle mise dans les cellules (, ou lieu des ; , "" ou lieu de " ).
Je me suis bien sûr posé les même questions pour SUM ou IF mais je voulais pas alourdir ma question.
Encore merci !