Fonctions match, index et indirect

Résolu
Laetitiayao Messages postés 54 Statut Membre -  
Laetitiayao Messages postés 54 Statut Membre -
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

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour, pour le second:
    range("BM3") = Range("y" & [AC2]) 

    pourquoi veux-tu remplacer ces formules par du code vba?
    1
    1. Laetitiayao Messages postés 54 Statut Membre
       
      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
    2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Laetitiayao Messages postés 54 Statut Membre
       
      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
    3. Laetitiayao Messages postés 54 Statut Membre
       
      Oui je l'avais fait exactement pareil via l'enregistreur de macro, mais mon responsable ne veux pas de ça.
      0
    4. Laetitiayao Messages postés 54 Statut Membre
       
      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
    5. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Laetitiayao Messages postés 54 Statut Membre
       
      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