Fonctions match, index et indirect

Résolu/Fermé
Laetitiayao Messages postés 54 Date d'inscription vendredi 13 juillet 2018 Statut Membre Dernière intervention 31 août 2018 - 26 juil. 2018 à 18:10
Laetitiayao Messages postés 54 Date d'inscription vendredi 13 juillet 2018 Statut Membre Dernière intervention 31 août 2018 - 29 juil. 2018 à 22:43
Bonjour à tous,
j'ai les formules suivantes sous excel, que je cherche à écrire en VBA mais je n'y arrive pas je galère depuis ce matin.

range("AC2")=MATCH(TRUE,INDEX((AC5:AC30<>0),0),0)+4

range("BM3")=INDIRECT("y"&AC2)

j'ai vraiment besoin d'aide, merci infiniment

1 réponse

yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477
Modifié le 27 juil. 2018 à 10:33
bonjour, pour le second:
range("BM3") = Range("y" & [AC2]) 

pourquoi veux-tu remplacer ces formules par du code vba?
1
Laetitiayao Messages postés 54 Date d'inscription vendredi 13 juillet 2018 Statut Membre Dernière intervention 31 août 2018
27 juil. 2018 à 11:15
Bonjour Yg_be, merci de ta réponse.
je travaille sur un fichier existant ou tout les calculs étaient déja fait dans excel, ma mission (stagiaire) c'est d'écrire une macro avec bouton de commande pour que les cellules se remplissent automatiquement
0
yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477 > Laetitiayao Messages postés 54 Date d'inscription vendredi 13 juillet 2018 Statut Membre Dernière intervention 31 août 2018
27 juil. 2018 à 11:36
il est possible par vba de mettre des formules dans des cellules, par exemple:
range("AC2").FormulaLocal = "=MATCH(TRUE,INDEX((AC5:AC30<>0),0),0)+4"
0
Laetitiayao Messages postés 54 Date d'inscription vendredi 13 juillet 2018 Statut Membre Dernière intervention 31 août 2018
27 juil. 2018 à 11:39
Oui je l'avais fait exactement pareil via l'enregistreur de macro, mais mon responsable ne veux pas de ça.
0
Laetitiayao Messages postés 54 Date d'inscription vendredi 13 juillet 2018 Statut Membre Dernière intervention 31 août 2018
27 juil. 2018 à 12:32
J'ai appliqué ta solution, mais je recois un message d'erreur, je crois qu'il y a un leger problème mais je n'arrive pas à determiner ou
0
yg_be Messages postés 22730 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 26 avril 2024 1 477 > Laetitiayao Messages postés 54 Date d'inscription vendredi 13 juillet 2018 Statut Membre Dernière intervention 31 août 2018
27 juil. 2018 à 14:40
voilà ce que je ferais pour la première formule:
Dim cl As Range
For Each cl In [AC5:AC30]
    If cl <> 0 Then
        Range("AC2") = cl.Row
        Exit For
    End If
Next cl
0