Fonction INDEX + EQUIV sous VBA

ti_mouton

XLDnaute Nouveau
Bonjour à tous,

J'ai besoin d'utiliser les formules excel INDEX et EQUIV dans une macro, simplement je ne sais pas comment m'y prendre. Ma base de travail se présente comme suit : j'ai un dossier nommé "Suivi des temps Maintenance" dans lequel j'ai un classeur "Base de Données", un classeur "ClasseurSaisie", et un classeur "Matrice Frais (Km+MO)". Le classeur de saisie est munie d'une macro qui a été développée par des membres du forum CCM (que je remercie grandement). J'ai besoin de rajouter un code qui permet de faire des calculs en récupérant des données dans le classeur "Matrice Frais (Km+MO). Dans les colonnes R - S - T - U - V - W du classeur saisie, j'ai écrit les formules excel qu'il faudrait pouvoir retranscrire sous VBA.

Je vous met l'ensemble du dossier à disposition (avec les 3 classeurs inclus), ça sera surement plus simple à comprendre qu'une longue explication.

Merci pour votre aide
 

Pièces jointes

  • Suivi des temps Maintenance - Copie.zip
    116.5 KB · Affichages: 70

Iznogood1

XLDnaute Impliqué
Re : Fonction INDEX + EQUIV sous VBA

Bonjour,

pour la distance :
Code:
Sub Distance(r As Range)
  Const source = "'C:\Suivi des temps Maintenance\[Matrice Frais (Km + MO).xlsm]"
  r.FormulaR1C1 = _
      "=IF(C[-3]=TRUE,(INDEX(" & source & "Matrice Distance'!C1:C78,MATCH(C3," & source & _
      "Matrice Distance'!C1,0),MATCH(C4," & source & "Matrice Distance'!R1,0)))*2," & _
      "INDEX(" & source & "Matrice Distance'!C1:C78,MATCH(C3," & source & "Matrice Distance'!C1,0)," & _
      "MATCH(C4," & source & "Matrice Distance'!R1,0)))"
End Sub

Évidemment, remplace la valeur de "source" par le bon chemin de ton fichier.

Même principe pour les autres colonnes.
Si tu ne veux pas réfléchir, sélectionne ta cellule, lance l’enregistreur de macro, entre dans ta cellule et valide son contenu.
Arrête l'enregisreur et regarde le code généré dans l'éditeur.
 

ti_mouton

XLDnaute Nouveau
Re : Fonction INDEX + EQUIV sous VBA

Bonjour Iznogood1,

Merci pour ton aide.
J'ai à nouveau un blocage. J'ai repris le code que tu m'as proposé. Mon soucis et que le chemin d'accès au fichier est amené à changer, je veux donc qu'il soit lié à ThisWorkbook.Path. J'ai donc voulu rajouter une ligne au debut de ton code mais cela ne marche pas (je ne suis pas assez callée en programmation...)
Code:
Sub Calcul(r As Range)
   Chemin = ThisWorkbook.Path
   Const source = Chemin & "\Matrice Frais (Km + MO).xlsm*"
   r.FormulaR1C1 = _
       "=IF(C[-3]=TRUE,(INDEX(" & source & "Matrice Distance'!C1:C78,MATCH(C3," & source & _
       "Matrice Distance'!C1,0),MATCH(C4," & source & "Matrice Distance'!R1,0)))*2," & _
       "INDEX(" & source & "Matrice Distance'!C1:C78,MATCH(C3," & source & "Matrice Distance'!C1,0)," & _
       "MATCH(C4," & source & "Matrice Distance'!R1,0)))"
 End Sub

Peux tu m'aider ?

Merci beaucoup
 

Discussions similaires