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 20294 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 septembre 2022 1 225
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 20294 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 septembre 2022 1 225 > 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
yg_be Messages postés 20294 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 septembre 2022 1 225 > 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
Laetitiayao Messages postés 54 Date d'inscription vendredi 13 juillet 2018 Statut Membre Dernière intervention 31 août 2018 > yg_be Messages postés 20294 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 septembre 2022
27 juil. 2018 à 16:14
Merci de tout coeur , tu m'as vraiment aidé le code pour la premiere formule marche parfaitement, par contre je n'ai pas compris (.row). je continue de réfléchir pour la deuxième formule, il y a certaiment quelque chose qui m'échape mais je ne vois pas quoi
0