Fonctions match, index et indirect

Résolu
Laetitiayao Messages postés 54 Date d'inscription   Statut Membre Dernière intervention   -  
Laetitiayao Messages postés 54 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

1 réponse

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
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   Statut Membre Dernière intervention  
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Laetitiayao Messages postés 54 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Laetitiayao Messages postés 54 Date d'inscription   Statut Membre Dernière intervention  
 
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