bluesky12000
XLDnaute Junior
Bonsoir à tous,
Je cherche à exécuter, à la fermeture d'un classeur, une macro pour rechercher si dans un tableau d'un autre classeur la valeur d'une cellule correspond bien à celle d'une case dans le classeur où se trouve cette macro.
La difficulté est d'identifier la bonne ligne dans le tableau car la valeur recherchée est assez commune. J'ai donc ajouté un code unique composé de 5 cellules du tableau dans la dernière colonne.
Avec la formule INDEX j'arrive à retrouver la valeur de cette cellule à modifier et en rajoutant la fonction cellule devant j'arrive à avoir les coordonnées de cette cellule.
En VBA je ne sais pas comment écrire cette formule (Pour simplifier on va dire que L25 est dans book1, sheet1).
=CELL("address";INDEX('book2.xlsx'!BDDProjets[#Data];MATCH(L25;'book2.xlsx'!BDDProjets[Cod];0);12))
Ensuite ce serait quelque chose comme la cellule du résultat si dessus doit être égale à F4 (book1, sheet1).
Pour l'instant j'ai contourné les choses en gardant ma formule dans excel et en créant ce macro :
Merci beaucoup pour votre aide
Je cherche à exécuter, à la fermeture d'un classeur, une macro pour rechercher si dans un tableau d'un autre classeur la valeur d'une cellule correspond bien à celle d'une case dans le classeur où se trouve cette macro.
La difficulté est d'identifier la bonne ligne dans le tableau car la valeur recherchée est assez commune. J'ai donc ajouté un code unique composé de 5 cellules du tableau dans la dernière colonne.
Avec la formule INDEX j'arrive à retrouver la valeur de cette cellule à modifier et en rajoutant la fonction cellule devant j'arrive à avoir les coordonnées de cette cellule.
En VBA je ne sais pas comment écrire cette formule (Pour simplifier on va dire que L25 est dans book1, sheet1).
=CELL("address";INDEX('book2.xlsx'!BDDProjets[#Data];MATCH(L25;'book2.xlsx'!BDDProjets[Cod];0);12))
Ensuite ce serait quelque chose comme la cellule du résultat si dessus doit être égale à F4 (book1, sheet1).
Pour l'instant j'ai contourné les choses en gardant ma formule dans excel et en créant ce macro :
VB:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim w1 As Workbook
Dim w2 As Workbook
Dim x As String
Set w1 = ThisWorkbook
Workbooks.Open Filename:="C:\Users\Clément\Desktop\Suivi des projets.xlsx"
Set w2 = Workbooks(Workbooks.Count)
w2.Sheets(1).Unprotect
x = w1.Sheets(1).Range("L25").Value
w2.Sheets(1).Range(x).Value = w1.Sheets(1).Range("F4")
w2.Sheets(1).Protect
w2.Close True
End Sub
Merci beaucoup pour votre aide
Dernière édition: